https://wiki.appsalutecreator.com/api.php?action=feedcontributions&user=Sadovoy&feedformat=atomwiki.appsalutecreator.com - Вклад участника [ru]2024-03-28T10:05:03ZВклад участникаMediaWiki 1.31.15https://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9759HiddenList2018-12-07T09:33:23Z<p>Sadovoy: /* Динамический HG */</p>
<hr />
<div>{{TOC right}}<br />
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:HOList_1.jpg|right]]<br />
<br />
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.<br />
<br />
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. <br />
<br />
==Основные параметры==<br />
<br />
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;<br><br />
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';<br><br />
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;<br><br />
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;<br><br />
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.<br><br />
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;<br />
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.<br />
При инициализации листа он передаст состояние "start" таймеру.<br />
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.<br />
<br />
<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''вычеркнуть''' ('' cross ''):<br />
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);<br />
:'''число''' - найденный объект удаляется из списка;<br />
*'''листать''' ('' scroll '')<br />
:'''1''' - список можно листать (скролировать);<br />
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);<br />
*'''тип списка''' ('' kind '') - Тип поиска объектов:<br />
:'''1''' - слово;<br />
:'''2''' - предложение;<br />
:'''3''' - удаляемая пиктограмма;<br />
:'''4''' - пиктограмма;<br />
:'''5''' - поиск различий.<br />
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим<br />
:'''пары''' - поиск пар;<br />
:'''одиночные''' - поиск по одному объекту.<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].<br />
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).<br />
<br />
<br />
<br />
'''Группа - параметры поиска'''<br />
<br />
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).<br />
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.<br />
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.<br />
*'''одного типа''' ('' max ''):<br />
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;<br />
:'''-1''' - игнорируется.<br />
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.<br />
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.<br />
*'''актёр-иконка''' ('' actorIco '') - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.<br><br />
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .<br />
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.<br />
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .<br />
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.<br />
<br />
<br />
<br />
'''Группа - скорость'''<br />
<br />
Отвечают за скорость перемещения найденного объекта.<br />
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.<br />
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.<br />
<br />
<br />
<br />
'''Группа - равномерное распределение'''<br />
<br />
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.<br />
*'''дополнительные сортировки''' ('' addit_algo '') - Использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами)<br />
<br />
'''Группа - итерационное распределение'''<br />
<br />
*'''включить''' ('' altern_algo '') - Использовать итерационный алгоритм поиска равномерного распределения объектов<br />
*'''учитывать сложности''' ('' process_diff '') - Учитывать сложности предметов при распределении<br />
*'''количество объектов''' ('' hiddens_num_threshold '') - Максимальное количество активных предметов на сцене для которых будут учитываться сложности (max = 24)<br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.<br />
*'''ключ распределения''' ('' distribution_seed '') - Ключ для случайного выбора заменяемого предмета (только для мультиплеера)<br />
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.<br />
<br />
Рекомендации по использованию:<br />
<br />
*Если включать "Удалять перекрытия", то нужно для счетчика кол-ва оставшихся хидденов считывать значение из "num".<br />
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.<br />
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.<br />
<br />
Логи:<br />
<br />
<pre><br />
"Deleting a hidden object with textID: %i" - удаление объекта с текстовым ID<br />
"Overlapping detected! Area: %f px" - обнаружения перекрытия в столько-то пикселей<br />
"fixOverlapping() Iterations num: %i / %i; Overlaps num: %i" - итерации, итоговое количество перекрытий<br />
</pre><br />
<br />
==Дополнительные параметры==<br />
<br />
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: <br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:<br />
:'''0''' - отключено;<br />
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).<br />
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.<br />
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.<br />
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.<br />
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.<br />
*'''показывать один объект игр''' ('' unTxtRep '') - Количество игр, в течении которых будет выбран один объект из данного набора. 0 - не использовать механизм<br />
*'''силуэты после слов''' ('' picsAfterWords '') - Стараться в силуэтах использовать то, что находилось в словах<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один<br />
*'''находить много одним кликом''' ('' canFoundMultiple '') - 1 - если тап попал на несколько объектов, то найдем все. 0 - только один<br />
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).<br />
<br />
<br />
'''Группа - равномерное распределение''' - в настоящее время не рекомендуется включать параметры из этой группы. Логика устарела и может конфликтовать со следующей группой итерационного распределения. Эта группа оставлена для возможной доработки в будущем. <br />
*'''включить''' ('' undist '') - равномерно распределять объекты по площади сцены. Да/нет. <br />
*'''дополнительные сортировки''' (''addit_algo'') - использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами). Да/нет. <br />
<br />
<br />
'''Группа - итерационное распределение''' - на данный момент лучший алгоритм равномерного распределения.<br />
*'''включить''' ('' altern_algo '') - использовать итерационный алгоритм поиска равномерного распределения объектов. Да/нет. <br />
*'''учитывать сложности''' ('' process_diff '') - учитывать сложности объектов при распределении. Подробнее о сложностях в описании соответствующего параметра в [[hiddenObject]]. Да/нет. <br />
*'''количество объектов''' ('' hiddens_num_threshold '') - максимальное количество активных предметов на сцене, для которых будут учитываться сложности. <br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - максимальное количество итераций фикса перекрытия объектов. По умолчанию 50, min="0" max="100".<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - максимальная допустимая площадь перекрытия в пикселях. По умолчанию 1024, min="0" max="2048". <br />
*'''ключ распределения''' ('' distribution_seed '') - ключ для случайного выбора заменяемого предмета (только для мультиплеера). min="0" max="32768".<br />
*'''удалять перекрытия''' ('' del_after_fix '') - удалять оставшиеся перекрытия после последней итерации фикса. Количество объектов получать из num, нет=0, да=1. <br />
<br />
<br />
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).<br />
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):<br />
:'''0''' - нет;<br />
:'''1''' - текстовая;<br />
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");<br />
:'''3''' - трансформация цвета;<br />
:'''4''' - дым.<br />
При применении аномалии "блитц" через объект [[Economics]] набор параметров: anom="0", is_blitz="1".<br />
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри "regexp=":<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;<br />
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.<br />
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.<br />
*'''сортировать по приоритету''' (''priorsort'') - Сортировать итоговый список по полю приоритет объекта. Высокий приоритет - сначала.<br />
*'''не давать ходить игроку''' (''botonly'') - Если включена - то хидден будет работать, но не будет принимать клики от игрока.<br />
*'''предметов по заданию не более''' (''taskless'') - Предметов по заданию не более заданного числа. -1 - без ограничений<br />
*'''неактивные улики как фон''' (''cluesbg'') - Если включена, то в хидденах связанные предметы, для которых есть неактивные таски, будут видны на фоне.<br />
<br />
<br />
'''Группа - появление новых объектов'''<br />
<br />
*'''время''' ('' acttm '') - Время появления объекта (мс);<br />
*'''начальный скейл''' ('' actsc '') - Начальный скейл;<br />
*'''начальная альфа''' ('' actal '') - Начальная альфа.<br />
<br />
<br />
<br />
'''Группа - сессии'''<br />
<br />
*'''сессионность''' ('' ses ''):<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.<br />
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:<br />
:'''0''' - случайный;<br />
:'''1''' - последний фон;<br />
:'''2''' - пустой.<br />
<br />
<br />
<br />
'''Группа - цвета'''<br />
<br />
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Время перехода''' ('' c_time '') - Время изменения цвета.<br />
<br />
<br />
<br />
'''Группа - время'''<br />
<br />
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):<br />
:'''-1''' - игнорируется;<br />
:'''число''' - время игры.<br />
*'''прерывать''' ('' tmInt ''):<br />
:'''1''' - по окончанию времени игра будет прервана;<br />
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.<br />
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);<br />
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;<br />
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.<br />
*'''жизни актера''' ('' tmActorLife '') - Время жизни клона актера, после которого он будет удален меньше либо рано 0 - не удалять по времени<br />
<br />
<br />
<br />
'''Группа - ошибки'''<br />
<br />
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо [[hiddenObject]].<br />
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.<br />
<br />
<br />
<br />
'''Группа - переход'''<br />
<br />
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.<br />
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.<br />
<br />
<br />
<br />
'''Группа - система очков'''<br />
<br />
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.<br />
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.<br />
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.<br />
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).<br />
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1"'''.<br />
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.<br />
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].<br />
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].<br />
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.<br />
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.<br />
*'''Бонусный мультипликатор''' ('' grow ''):<br />
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.<br />
:'''0''' - не умножать.<br />
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).<br />
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.<br />
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.<br />
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.<br />
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние "beg"''').<br />
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние '''end'''.<br />
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.<br />
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).<br />
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.<br />
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).<br />
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).<br />
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.<br />
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).<br />
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;<br />
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;<br />
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.<br />
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.<br />
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент<br />
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)<br />
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки детектив макс. комбо''' (''scoreDetMaxCombo'') - максимальное значение комбо для очков по системе детектива, используется при состоянии хидден-листа max_combo. Если в настройках хидден-листа очковая система "очки 3.0", то scoreDetMaxCombo должно быть равно <property name="комбо2 кол-во" id="cmb2Num" hint="комбо2 кол-во" type="int" label="комбо2 кол-во" value="1"/> +1. То есть, на 1 больше, чем значение комбо2 кол-во ('' cmb2Num '').<br />
*'''держать max_combo до тапа''' (''keepMaxCombo'') - Будет ли максимальное значение комбо после вызова max_combo храниться до тапа (да) или уменьшаться сразу (нет). Флаг используется только для состояния max_combo, обычный хидден останется прежним. Флаг обеспечит max_combo до первого тапа. То есть, чтобы комбо убывало по времени, но после первого тапа.<br />
<br />
<br />
'''Группа - звезды'''<br />
<br />
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.<br />
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.<br />
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).<br />
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.<br />
Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.<br />
<br />
==Параметры бота и мультиплеера==<br />
<br />
'''Группа - Хидден бот'''<br />
<br />
*'''тип бота''' - тип бота:<br />
:'''нет''' - обычная одиночная игра, бот выключен;<br />
:'''на одном поле''' - игра с ботом на одном поле, у обоих одинаковый список предметов;<br />
:'''с маленьким полем''' - бот будет играть на отдельном поле (??????);<br />
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;<br />
:'''мультиплеер''' - игра через сервер с живым оппонентом;<br />
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);<br />
*'''номер уровня''' - номер уровня в файле (начиная с 0);<br />
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;<br />
*'''multiplayer''' - объект мультиплеера;<br />
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;<br />
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);<br />
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);<br />
*'''t min abs ms''' - самая минимальная задержка между ходами бота;<br />
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;<br />
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;<br />
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;<br />
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);<br />
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;<br />
*'''t wrong max ms''' - максимальное время между ложными кликами бота;<br />
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);<br />
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;<br />
*'''доп. поле x''' - координаты доп. поля по Х;<br />
*'''доп. поле y''' - координаты доп. поля по Y;<br />
*'''доп. поле sx''' - масштаб доп. поля;<br />
*'''доп. поле sy''' - масштаб доп. поля;<br />
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;<br />
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);<br />
*'''счетчик очков бота''' - счетчик, выводящий очки;<br />
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;<br />
*'''комбо2 прогресс бота''' - комбо2 прогресс;<br />
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;<br />
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;<br />
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;<br />
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;<br />
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;<br />
*'''таймер хода бота''' - таймер хода бота;<br />
*'''таймер хода игрока''' - таймер хода игрока;<br />
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;<br />
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.<br />
<br />
=== Настройка сложности бота ===<br />
<br />
Файл уровней для хидден-бота должен иметь такую структуру:<br />
<bots><br />
<obj id="0"><br />
<bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
<obj id="1"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" /><br />
</obj><br />
<obj id="2"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" /><br />
<bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
</bots><br />
<br />
*bots - основной таг<br />
*obj > id - номер уровня<br />
*bot - содержит те же параметры, что и настройки бота в хидден листе<br />
<br />
==Режим "блиц" с бесконечными объектами==<br />
<br />
'''Правила аномалии "блиц"''':<br />
<br />
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.<br />
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.<br />
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.<br />
<br />
Для включения такого режима блиц используем поле в настройках хидден-листа:<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).<br />
<br />
Если в этом поле настройка "нет", то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.<br />
<br />
Прочитать, находится ли хидден в режиме блиц можно из поля "is_blitz" хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.<br />
<br />
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.<br />
<br />
В экономике указываем блиц, как отдельную аномалию.<br />
<br />
==Состояния==<br />
<br />
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:<br />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<br />
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).<br />
*'''max_combo''' - хидден начинается с максимальным значением комбо<br />
<br />
==Примечания==<br />
<br />
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.<br />
<br />
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!<br />
<br />
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game. <br><br />
Например, <br><br />
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, <br> <br />
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. <br><br />
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.<br />
<br />
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:<br />
<br />
<pre><br />
[GHiddenList]<br />
HitTest=0<br />
HitTestDx=1 - шаг по х<br />
HitTestDy=1 - шаг по y<br />
</pre><br />
<br />
в результате после перехода на сцену с хидденом появится файл, в котором будет казан объекты и координаты в которых они не тапаются.<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
[[Файл:HOList_3.jpg|right]]<br />
<br />
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''нет предметов (при создании из динамического конфига)''' ('' nstNoObjects '') - при загрузке локации без хидден-объектов (например не подтянулся пак либо нет локализации) перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '')- Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):<br />
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.<br />
<br />
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:<br />
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;<br />
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;<br />
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;<br />
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;<br />
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;<br />
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.<br />
<br />
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):<br />
:'''объект''' ('' obj '') - Объект, который переводится в указанное состояние, если долго не находить хидден;<br />
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;<br />
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.<br />
<br />
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):<br />
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;<br />
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;<br />
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;<br />
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);<br />
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;<br />
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).<br />
<br />
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): <br />
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.<br />
<br />
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):<br />
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;<br />
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.<br />
<br />
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): <br />
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.<br />
<br />
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]<br />
<br />
== Get Started==<br />
Минимальный набор ресурсов:<br />
* Фоновая картинка для поисковой сцены<br />
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]<br />
* Текстовые объекты для идентификации спрятанных объектов<br />
<br />
Минимальный набор объектов редактора:<br />
* [[Image]] который будет изменен в хидден-лист<br />
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.<br />
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)<br />
<br />
Наши действия:<br />
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,<br />
# добавим новый экран с именем ''scrHList''<br />
# создадим в этом экране сцену ''stgHList''<br />
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]<br />
## создаём папку ''HList''<br />
## добавим в ней картинку для фона и картинки для спрятанных объектов.<br />
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].<br />
## закроем редактор ресурсов<br />
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]<br />
## создаём папку ''HListText''<br />
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.<br />
## сохраним внесенные изменения.<br />
# перейдём в редактор сцен.<br />
# создадим в сцене stgHList объект [[Table]] и назовем его HOT<br />
## настроим размер и положение таблицы, согласно нашего дизайна<br />
## установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)<br />
## установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"<br />
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. <br>'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.<br />
## в поле таблица указываем нашу HOT<br />
## установим параметр объектов = "10"<br />
## установим параметр пропадание объектов = "да"<br />
## установим параметр реагировать на отпускание = "да"<br />
## установим параметр реагировать на невидимые = "нет"<br />
## установим параметр набор = "1"<br />
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:<br />
## в поле list укажем наш HiddenList<br />
## параметр набор = "1"<br />
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)<br />
# сохраним проект<br />
# запустим [[Интерфейс_Viewer|вьювер]]<br />
<br />
== Динамический HG==<br />
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига. <br />
<br />
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager [http://wiki/index.php/HO_Manager Wiki HO_manager] <br />
[https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit#heading=h.4pd8h5jdvqj4 Документ по динамических пакам]<br />
<br />
[[Файл:D485ecbbbb.jpg|right]]<br />
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. <br />
*'''список графических ресурсов''' — служебное, пока не используется;<br />
*'''список текстовых ресурсов''' — служебное, пока не используется;<br />
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;<br />
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;<br />
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);<br />
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;<br />
*'''точечный спецэффект''' ('' hiddenEffect '') — ;<br />
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;<br />
<br />
Требования, вся графика HO,BG отрисовывается без учёта пивоты;<br />
<br />
Файлы конфиги имеют вид:<br />
Файл уровня имеет вид:<br />
{<br />
"levels": [<br />
{<br />
"file": "ViewerFiles/DynHid/hidden0.cfg",<br />
"pack":3<br />
}<br />
]<br />
}<br />
<br />
:Где "levels" - линки на файлы уровней. <br />
:::"file" - путь к файлу;<br />
:::"pack" - пак в который попадут ресурсы;<br />
<br />
<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
"bg": {<br />
"src": "bg.png",<br />
"w": 2048,<br />
"h": 1151,<br />
"id": 16,<br />
"color": "#ffffff",<br />
"tile": ""<br />
},<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
}<br />
}<br />
<br />
:Где "bg" - настройки фона. <br />
:::"src" - сорс графического файла в ресурсной базе;<br />
:::"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;<br />
:::"tile" - тайлинг фона;<br />
:::"id" - id ресурса из ресурсной базы;<br />
::"hiddens" - перечень HO с их настройками<br />
::::"id" - TxtId;<br />
::::"nm" - имя HO;<br />
::::"res" - графический ресурс HO;<br />
::::"bg" - графический ресурс тени;<br />
::::"rect" - настройки "res";<br />
:::::"x" - координата x, в координатах корневого объекта;<br />
:::::"y" - координата y, в координатах корневого объекта;<br />
:::::"w" - ширина;<br />
:::::"h" - высота;<br />
::::"objs" - перечень нашлёпок;<br />
:::::"res" - графический ресурс нашлёпки;<br />
:::::"rect" - настройки графического ресурса нашлёпки;<br />
::::::"x" - координата x, в координатах HO;<br />
::::::"y" - координата y, в координатах HO;<br />
::::::"w" - ширина;<br />
::::::"h" - высота;<br />
::"res" - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)<br />
::::"images" - перечень графических ресурсов<br />
::::"texts" - перечень текстовых ресурсов<br />
::::"sounds" - перечень звуковых ресурсов<br />
<br />
== Кроссворд ==<br />
Данный функционал базируется на динамических HG и настраивается в файле динамического уровня.<br />
<br />
=== Мода 2 - слова с мусором ===<br />
[[Файл:Crossword mode2.jpg|right|500x500px]]<br />
Данная мода представляет собой HO объекты и текстовую таблицу, при нахождении предмета, в текстовой таблице подсвечиваются буквы слова.<br />
<br />
Настройка в HiddenList указывается в теге '''кроссворд - мода 2 - слова с мусором''' ('''_G_17'''):<br />
* '''режим кроссворда''' ('''cwon''') - использовать/не использовать режим;<br />
* '''подуровень''' ('''sub_level''') - подуровень;<br />
* '''root''' ('''cw2root''') - родитель текстового поля, координаты будут установлены согласно параметрам "x","y";<br />
* '''text''' ('''cw2text''') - линк на текстовый объект, в котором будем отображать текстовое поле; <br />
* '''цвет найденных''' ('''colorFound''') - цвет букв найденных слов в нашем текстовом поле;<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
...<br />
"hiddens": [ ... ],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
},<br />
"mode2" : {<br />
"en" : [<br />
{<br />
"ids" : [ 3032, 4480, 4491, 4493, 4494, 4499 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 414,<br />
"x" : -682,<br />
"y" : -300<br />
},<br />
"string_check" : "XObatHWZIF|RJLhacksaw|QVPNsaddle|AECGDaxeYU|doveSlante|rnBMTKGEAQ",<br />
"string_display" : "XOBATHWZIF|RJLHACKSAW|QVPNSADDLE|AECGDAXEYU|DOVESLANTE|RNBMTKGEAQ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 4485, 4487, 4490, 4495, 4502, 17112 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "FskatesNTH|ALMboomera|ngWERODrad|ioSKBZoarP|tableGball|oonJXCUIYV",<br />
"string_display" : "FSKATESNTH|ALMBOOMERA|NGWERODRAD|IOSKBZOARP|TABLEGBALL|OONJXCUIYV",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
],<br />
"ru" : [<br />
{<br />
"ids" : [ 4481, 4485, 4490, 4495, 4500, 4508 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ЕконькиМЭк|олокольчик|ХАрадиоШве|слоВбабочк|аЖИЛкастрю|ляУЯРТНСКЮ",<br />
"string_display" : "ЕКОНЬКИМЭК|ОЛОКОЛЬЧИК|ХАРАДИОШВЕ|СЛОВБАБОЧК|АЖИЛКАСТРЮ|ЛЯУЯРТНСКЮ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 3053, 4480, 4487, 4494, 4502, 4507 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ШЩЧУГЮДзве|здаНОМТЕХб|умерангИЪс|толЗЖЪбита|УфонарьЮпо|дарокХПЭБТ",<br />
"string_display" : "ШЩЧУГЮДЗВЕ|ЗДАНОМТЕХБ|УМЕРАНГИЪС|ТОЛЗЖЪБИТА|УФОНАРЬЮПО|ДАРОКХПЭБТ",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
]<br />
}<br />
<br />
:где "mode2" - настройки моды 2;<br />
:::"en", "ru" - языковые локали;<br />
::::"ids" - массив textID активных HO;<br />
::::"nm" - имя уровня - для нашего удобства;<br />
::::"num" - количество активных объектов == размеру массива '''ids''';<br />
::::"numvis" - количество всего объектов,используем для задания фоновых объектов (количество которых == numvis - num);<br />
::::"rect_field" - ректангл активной зоны (пока не используется);<br />
::::"rect_text" - ректангл текстового поля(пока не используется);<br />
::::"string_check" - текстовое поле регистро-зависимое - для HL; <br />
::::"string_display" - текстовое поле для отображения;<br />
::::"x" - координата x родительского объекта для текста;<br />
::::"y" - координата y родительского объекта для текста;<br />
<br />
П.С. данную моду генерирует программа HGcrossword (https://docs.google.com/document/d/1RXSNUxNePF4qEibAPoCgfdiQycxoggc6Hu7a9VUjxSI/edit#)<br />
<br />
== Авто тест HL ==<br />
Для запуска автотеста, нам нужно указать в app.icf параметры:<br />
<br />
[GHiddenList]<br />
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;<br />
<br />
Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.<br />
<br />
== Пример ==<br />
<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
HiddenList.rar<br />
<br />
[[Category:Game mechanic]]<br />
<br />
[[Category:Get Started]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9758HiddenList2018-12-07T09:31:51Z<p>Sadovoy: /* Динамический HG */</p>
<hr />
<div>{{TOC right}}<br />
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:HOList_1.jpg|right]]<br />
<br />
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.<br />
<br />
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. <br />
<br />
==Основные параметры==<br />
<br />
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;<br><br />
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';<br><br />
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;<br><br />
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;<br><br />
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.<br><br />
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;<br />
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.<br />
При инициализации листа он передаст состояние "start" таймеру.<br />
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.<br />
<br />
<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''вычеркнуть''' ('' cross ''):<br />
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);<br />
:'''число''' - найденный объект удаляется из списка;<br />
*'''листать''' ('' scroll '')<br />
:'''1''' - список можно листать (скролировать);<br />
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);<br />
*'''тип списка''' ('' kind '') - Тип поиска объектов:<br />
:'''1''' - слово;<br />
:'''2''' - предложение;<br />
:'''3''' - удаляемая пиктограмма;<br />
:'''4''' - пиктограмма;<br />
:'''5''' - поиск различий.<br />
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим<br />
:'''пары''' - поиск пар;<br />
:'''одиночные''' - поиск по одному объекту.<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].<br />
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).<br />
<br />
<br />
<br />
'''Группа - параметры поиска'''<br />
<br />
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).<br />
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.<br />
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.<br />
*'''одного типа''' ('' max ''):<br />
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;<br />
:'''-1''' - игнорируется.<br />
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.<br />
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.<br />
*'''актёр-иконка''' ('' actorIco '') - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.<br><br />
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .<br />
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.<br />
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .<br />
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.<br />
<br />
<br />
<br />
'''Группа - скорость'''<br />
<br />
Отвечают за скорость перемещения найденного объекта.<br />
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.<br />
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.<br />
<br />
<br />
<br />
'''Группа - равномерное распределение'''<br />
<br />
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.<br />
*'''дополнительные сортировки''' ('' addit_algo '') - Использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами)<br />
<br />
'''Группа - итерационное распределение'''<br />
<br />
*'''включить''' ('' altern_algo '') - Использовать итерационный алгоритм поиска равномерного распределения объектов<br />
*'''учитывать сложности''' ('' process_diff '') - Учитывать сложности предметов при распределении<br />
*'''количество объектов''' ('' hiddens_num_threshold '') - Максимальное количество активных предметов на сцене для которых будут учитываться сложности (max = 24)<br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.<br />
*'''ключ распределения''' ('' distribution_seed '') - Ключ для случайного выбора заменяемого предмета (только для мультиплеера)<br />
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.<br />
<br />
Рекомендации по использованию:<br />
<br />
*Если включать "Удалять перекрытия", то нужно для счетчика кол-ва оставшихся хидденов считывать значение из "num".<br />
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.<br />
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.<br />
<br />
Логи:<br />
<br />
<pre><br />
"Deleting a hidden object with textID: %i" - удаление объекта с текстовым ID<br />
"Overlapping detected! Area: %f px" - обнаружения перекрытия в столько-то пикселей<br />
"fixOverlapping() Iterations num: %i / %i; Overlaps num: %i" - итерации, итоговое количество перекрытий<br />
</pre><br />
<br />
==Дополнительные параметры==<br />
<br />
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: <br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:<br />
:'''0''' - отключено;<br />
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).<br />
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.<br />
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.<br />
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.<br />
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.<br />
*'''показывать один объект игр''' ('' unTxtRep '') - Количество игр, в течении которых будет выбран один объект из данного набора. 0 - не использовать механизм<br />
*'''силуэты после слов''' ('' picsAfterWords '') - Стараться в силуэтах использовать то, что находилось в словах<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один<br />
*'''находить много одним кликом''' ('' canFoundMultiple '') - 1 - если тап попал на несколько объектов, то найдем все. 0 - только один<br />
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).<br />
<br />
<br />
'''Группа - равномерное распределение''' - в настоящее время не рекомендуется включать параметры из этой группы. Логика устарела и может конфликтовать со следующей группой итерационного распределения. Эта группа оставлена для возможной доработки в будущем. <br />
*'''включить''' ('' undist '') - равномерно распределять объекты по площади сцены. Да/нет. <br />
*'''дополнительные сортировки''' (''addit_algo'') - использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами). Да/нет. <br />
<br />
<br />
'''Группа - итерационное распределение''' - на данный момент лучший алгоритм равномерного распределения.<br />
*'''включить''' ('' altern_algo '') - использовать итерационный алгоритм поиска равномерного распределения объектов. Да/нет. <br />
*'''учитывать сложности''' ('' process_diff '') - учитывать сложности объектов при распределении. Подробнее о сложностях в описании соответствующего параметра в [[hiddenObject]]. Да/нет. <br />
*'''количество объектов''' ('' hiddens_num_threshold '') - максимальное количество активных предметов на сцене, для которых будут учитываться сложности. <br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - максимальное количество итераций фикса перекрытия объектов. По умолчанию 50, min="0" max="100".<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - максимальная допустимая площадь перекрытия в пикселях. По умолчанию 1024, min="0" max="2048". <br />
*'''ключ распределения''' ('' distribution_seed '') - ключ для случайного выбора заменяемого предмета (только для мультиплеера). min="0" max="32768".<br />
*'''удалять перекрытия''' ('' del_after_fix '') - удалять оставшиеся перекрытия после последней итерации фикса. Количество объектов получать из num, нет=0, да=1. <br />
<br />
<br />
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).<br />
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):<br />
:'''0''' - нет;<br />
:'''1''' - текстовая;<br />
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");<br />
:'''3''' - трансформация цвета;<br />
:'''4''' - дым.<br />
При применении аномалии "блитц" через объект [[Economics]] набор параметров: anom="0", is_blitz="1".<br />
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри "regexp=":<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;<br />
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.<br />
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.<br />
*'''сортировать по приоритету''' (''priorsort'') - Сортировать итоговый список по полю приоритет объекта. Высокий приоритет - сначала.<br />
*'''не давать ходить игроку''' (''botonly'') - Если включена - то хидден будет работать, но не будет принимать клики от игрока.<br />
*'''предметов по заданию не более''' (''taskless'') - Предметов по заданию не более заданного числа. -1 - без ограничений<br />
*'''неактивные улики как фон''' (''cluesbg'') - Если включена, то в хидденах связанные предметы, для которых есть неактивные таски, будут видны на фоне.<br />
<br />
<br />
'''Группа - появление новых объектов'''<br />
<br />
*'''время''' ('' acttm '') - Время появления объекта (мс);<br />
*'''начальный скейл''' ('' actsc '') - Начальный скейл;<br />
*'''начальная альфа''' ('' actal '') - Начальная альфа.<br />
<br />
<br />
<br />
'''Группа - сессии'''<br />
<br />
*'''сессионность''' ('' ses ''):<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.<br />
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:<br />
:'''0''' - случайный;<br />
:'''1''' - последний фон;<br />
:'''2''' - пустой.<br />
<br />
<br />
<br />
'''Группа - цвета'''<br />
<br />
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Время перехода''' ('' c_time '') - Время изменения цвета.<br />
<br />
<br />
<br />
'''Группа - время'''<br />
<br />
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):<br />
:'''-1''' - игнорируется;<br />
:'''число''' - время игры.<br />
*'''прерывать''' ('' tmInt ''):<br />
:'''1''' - по окончанию времени игра будет прервана;<br />
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.<br />
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);<br />
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;<br />
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.<br />
*'''жизни актера''' ('' tmActorLife '') - Время жизни клона актера, после которого он будет удален меньше либо рано 0 - не удалять по времени<br />
<br />
<br />
<br />
'''Группа - ошибки'''<br />
<br />
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо [[hiddenObject]].<br />
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.<br />
<br />
<br />
<br />
'''Группа - переход'''<br />
<br />
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.<br />
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.<br />
<br />
<br />
<br />
'''Группа - система очков'''<br />
<br />
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.<br />
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.<br />
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.<br />
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).<br />
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1"'''.<br />
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.<br />
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].<br />
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].<br />
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.<br />
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.<br />
*'''Бонусный мультипликатор''' ('' grow ''):<br />
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.<br />
:'''0''' - не умножать.<br />
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).<br />
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.<br />
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.<br />
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.<br />
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние "beg"''').<br />
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние '''end'''.<br />
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.<br />
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).<br />
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.<br />
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).<br />
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).<br />
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.<br />
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).<br />
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;<br />
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;<br />
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.<br />
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.<br />
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент<br />
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)<br />
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки детектив макс. комбо''' (''scoreDetMaxCombo'') - максимальное значение комбо для очков по системе детектива, используется при состоянии хидден-листа max_combo. Если в настройках хидден-листа очковая система "очки 3.0", то scoreDetMaxCombo должно быть равно <property name="комбо2 кол-во" id="cmb2Num" hint="комбо2 кол-во" type="int" label="комбо2 кол-во" value="1"/> +1. То есть, на 1 больше, чем значение комбо2 кол-во ('' cmb2Num '').<br />
*'''держать max_combo до тапа''' (''keepMaxCombo'') - Будет ли максимальное значение комбо после вызова max_combo храниться до тапа (да) или уменьшаться сразу (нет). Флаг используется только для состояния max_combo, обычный хидден останется прежним. Флаг обеспечит max_combo до первого тапа. То есть, чтобы комбо убывало по времени, но после первого тапа.<br />
<br />
<br />
'''Группа - звезды'''<br />
<br />
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.<br />
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.<br />
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).<br />
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.<br />
Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.<br />
<br />
==Параметры бота и мультиплеера==<br />
<br />
'''Группа - Хидден бот'''<br />
<br />
*'''тип бота''' - тип бота:<br />
:'''нет''' - обычная одиночная игра, бот выключен;<br />
:'''на одном поле''' - игра с ботом на одном поле, у обоих одинаковый список предметов;<br />
:'''с маленьким полем''' - бот будет играть на отдельном поле (??????);<br />
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;<br />
:'''мультиплеер''' - игра через сервер с живым оппонентом;<br />
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);<br />
*'''номер уровня''' - номер уровня в файле (начиная с 0);<br />
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;<br />
*'''multiplayer''' - объект мультиплеера;<br />
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;<br />
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);<br />
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);<br />
*'''t min abs ms''' - самая минимальная задержка между ходами бота;<br />
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;<br />
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;<br />
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;<br />
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);<br />
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;<br />
*'''t wrong max ms''' - максимальное время между ложными кликами бота;<br />
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);<br />
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;<br />
*'''доп. поле x''' - координаты доп. поля по Х;<br />
*'''доп. поле y''' - координаты доп. поля по Y;<br />
*'''доп. поле sx''' - масштаб доп. поля;<br />
*'''доп. поле sy''' - масштаб доп. поля;<br />
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;<br />
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);<br />
*'''счетчик очков бота''' - счетчик, выводящий очки;<br />
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;<br />
*'''комбо2 прогресс бота''' - комбо2 прогресс;<br />
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;<br />
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;<br />
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;<br />
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;<br />
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;<br />
*'''таймер хода бота''' - таймер хода бота;<br />
*'''таймер хода игрока''' - таймер хода игрока;<br />
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;<br />
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.<br />
<br />
=== Настройка сложности бота ===<br />
<br />
Файл уровней для хидден-бота должен иметь такую структуру:<br />
<bots><br />
<obj id="0"><br />
<bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
<obj id="1"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" /><br />
</obj><br />
<obj id="2"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" /><br />
<bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
</bots><br />
<br />
*bots - основной таг<br />
*obj > id - номер уровня<br />
*bot - содержит те же параметры, что и настройки бота в хидден листе<br />
<br />
==Режим "блиц" с бесконечными объектами==<br />
<br />
'''Правила аномалии "блиц"''':<br />
<br />
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.<br />
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.<br />
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.<br />
<br />
Для включения такого режима блиц используем поле в настройках хидден-листа:<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).<br />
<br />
Если в этом поле настройка "нет", то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.<br />
<br />
Прочитать, находится ли хидден в режиме блиц можно из поля "is_blitz" хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.<br />
<br />
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.<br />
<br />
В экономике указываем блиц, как отдельную аномалию.<br />
<br />
==Состояния==<br />
<br />
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:<br />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<br />
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).<br />
*'''max_combo''' - хидден начинается с максимальным значением комбо<br />
<br />
==Примечания==<br />
<br />
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.<br />
<br />
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!<br />
<br />
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game. <br><br />
Например, <br><br />
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, <br> <br />
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. <br><br />
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.<br />
<br />
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:<br />
<br />
<pre><br />
[GHiddenList]<br />
HitTest=0<br />
HitTestDx=1 - шаг по х<br />
HitTestDy=1 - шаг по y<br />
</pre><br />
<br />
в результате после перехода на сцену с хидденом появится файл, в котором будет казан объекты и координаты в которых они не тапаются.<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
[[Файл:HOList_3.jpg|right]]<br />
<br />
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''нет предметов (при создании из динамического конфига)''' ('' nstNoObjects '') - при загрузке локации без хидден-объектов (например не подтянулся пак либо нет локализации) перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '')- Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):<br />
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.<br />
<br />
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:<br />
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;<br />
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;<br />
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;<br />
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;<br />
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;<br />
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.<br />
<br />
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):<br />
:'''объект''' ('' obj '') - Объект, который переводится в указанное состояние, если долго не находить хидден;<br />
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;<br />
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.<br />
<br />
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):<br />
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;<br />
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;<br />
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;<br />
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);<br />
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;<br />
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).<br />
<br />
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): <br />
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.<br />
<br />
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):<br />
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;<br />
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.<br />
<br />
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): <br />
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.<br />
<br />
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]<br />
<br />
== Get Started==<br />
Минимальный набор ресурсов:<br />
* Фоновая картинка для поисковой сцены<br />
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]<br />
* Текстовые объекты для идентификации спрятанных объектов<br />
<br />
Минимальный набор объектов редактора:<br />
* [[Image]] который будет изменен в хидден-лист<br />
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.<br />
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)<br />
<br />
Наши действия:<br />
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,<br />
# добавим новый экран с именем ''scrHList''<br />
# создадим в этом экране сцену ''stgHList''<br />
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]<br />
## создаём папку ''HList''<br />
## добавим в ней картинку для фона и картинки для спрятанных объектов.<br />
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].<br />
## закроем редактор ресурсов<br />
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]<br />
## создаём папку ''HListText''<br />
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.<br />
## сохраним внесенные изменения.<br />
# перейдём в редактор сцен.<br />
# создадим в сцене stgHList объект [[Table]] и назовем его HOT<br />
## настроим размер и положение таблицы, согласно нашего дизайна<br />
## установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)<br />
## установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"<br />
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. <br>'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.<br />
## в поле таблица указываем нашу HOT<br />
## установим параметр объектов = "10"<br />
## установим параметр пропадание объектов = "да"<br />
## установим параметр реагировать на отпускание = "да"<br />
## установим параметр реагировать на невидимые = "нет"<br />
## установим параметр набор = "1"<br />
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:<br />
## в поле list укажем наш HiddenList<br />
## параметр набор = "1"<br />
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)<br />
# сохраним проект<br />
# запустим [[Интерфейс_Viewer|вьювер]]<br />
<br />
== Динамический HG==<br />
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига. <br />
<br />
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )<br />
Документ по динамических пакам[https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit#heading=h.4pd8h5jdvqj4]<br />
<br />
[[Файл:D485ecbbbb.jpg|right]]<br />
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. <br />
*'''список графических ресурсов''' — служебное, пока не используется;<br />
*'''список текстовых ресурсов''' — служебное, пока не используется;<br />
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;<br />
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;<br />
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);<br />
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;<br />
*'''точечный спецэффект''' ('' hiddenEffect '') — ;<br />
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;<br />
<br />
Требования, вся графика HO,BG отрисовывается без учёта пивоты;<br />
<br />
Файлы конфиги имеют вид:<br />
Файл уровня имеет вид:<br />
{<br />
"levels": [<br />
{<br />
"file": "ViewerFiles/DynHid/hidden0.cfg",<br />
"pack":3<br />
}<br />
]<br />
}<br />
<br />
:Где "levels" - линки на файлы уровней. <br />
:::"file" - путь к файлу;<br />
:::"pack" - пак в который попадут ресурсы;<br />
<br />
<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
"bg": {<br />
"src": "bg.png",<br />
"w": 2048,<br />
"h": 1151,<br />
"id": 16,<br />
"color": "#ffffff",<br />
"tile": ""<br />
},<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
}<br />
}<br />
<br />
:Где "bg" - настройки фона. <br />
:::"src" - сорс графического файла в ресурсной базе;<br />
:::"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;<br />
:::"tile" - тайлинг фона;<br />
:::"id" - id ресурса из ресурсной базы;<br />
::"hiddens" - перечень HO с их настройками<br />
::::"id" - TxtId;<br />
::::"nm" - имя HO;<br />
::::"res" - графический ресурс HO;<br />
::::"bg" - графический ресурс тени;<br />
::::"rect" - настройки "res";<br />
:::::"x" - координата x, в координатах корневого объекта;<br />
:::::"y" - координата y, в координатах корневого объекта;<br />
:::::"w" - ширина;<br />
:::::"h" - высота;<br />
::::"objs" - перечень нашлёпок;<br />
:::::"res" - графический ресурс нашлёпки;<br />
:::::"rect" - настройки графического ресурса нашлёпки;<br />
::::::"x" - координата x, в координатах HO;<br />
::::::"y" - координата y, в координатах HO;<br />
::::::"w" - ширина;<br />
::::::"h" - высота;<br />
::"res" - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)<br />
::::"images" - перечень графических ресурсов<br />
::::"texts" - перечень текстовых ресурсов<br />
::::"sounds" - перечень звуковых ресурсов<br />
<br />
== Кроссворд ==<br />
Данный функционал базируется на динамических HG и настраивается в файле динамического уровня.<br />
<br />
=== Мода 2 - слова с мусором ===<br />
[[Файл:Crossword mode2.jpg|right|500x500px]]<br />
Данная мода представляет собой HO объекты и текстовую таблицу, при нахождении предмета, в текстовой таблице подсвечиваются буквы слова.<br />
<br />
Настройка в HiddenList указывается в теге '''кроссворд - мода 2 - слова с мусором''' ('''_G_17'''):<br />
* '''режим кроссворда''' ('''cwon''') - использовать/не использовать режим;<br />
* '''подуровень''' ('''sub_level''') - подуровень;<br />
* '''root''' ('''cw2root''') - родитель текстового поля, координаты будут установлены согласно параметрам "x","y";<br />
* '''text''' ('''cw2text''') - линк на текстовый объект, в котором будем отображать текстовое поле; <br />
* '''цвет найденных''' ('''colorFound''') - цвет букв найденных слов в нашем текстовом поле;<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
...<br />
"hiddens": [ ... ],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
},<br />
"mode2" : {<br />
"en" : [<br />
{<br />
"ids" : [ 3032, 4480, 4491, 4493, 4494, 4499 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 414,<br />
"x" : -682,<br />
"y" : -300<br />
},<br />
"string_check" : "XObatHWZIF|RJLhacksaw|QVPNsaddle|AECGDaxeYU|doveSlante|rnBMTKGEAQ",<br />
"string_display" : "XOBATHWZIF|RJLHACKSAW|QVPNSADDLE|AECGDAXEYU|DOVESLANTE|RNBMTKGEAQ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 4485, 4487, 4490, 4495, 4502, 17112 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "FskatesNTH|ALMboomera|ngWERODrad|ioSKBZoarP|tableGball|oonJXCUIYV",<br />
"string_display" : "FSKATESNTH|ALMBOOMERA|NGWERODRAD|IOSKBZOARP|TABLEGBALL|OONJXCUIYV",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
],<br />
"ru" : [<br />
{<br />
"ids" : [ 4481, 4485, 4490, 4495, 4500, 4508 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ЕконькиМЭк|олокольчик|ХАрадиоШве|слоВбабочк|аЖИЛкастрю|ляУЯРТНСКЮ",<br />
"string_display" : "ЕКОНЬКИМЭК|ОЛОКОЛЬЧИК|ХАРАДИОШВЕ|СЛОВБАБОЧК|АЖИЛКАСТРЮ|ЛЯУЯРТНСКЮ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 3053, 4480, 4487, 4494, 4502, 4507 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ШЩЧУГЮДзве|здаНОМТЕХб|умерангИЪс|толЗЖЪбита|УфонарьЮпо|дарокХПЭБТ",<br />
"string_display" : "ШЩЧУГЮДЗВЕ|ЗДАНОМТЕХБ|УМЕРАНГИЪС|ТОЛЗЖЪБИТА|УФОНАРЬЮПО|ДАРОКХПЭБТ",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
]<br />
}<br />
<br />
:где "mode2" - настройки моды 2;<br />
:::"en", "ru" - языковые локали;<br />
::::"ids" - массив textID активных HO;<br />
::::"nm" - имя уровня - для нашего удобства;<br />
::::"num" - количество активных объектов == размеру массива '''ids''';<br />
::::"numvis" - количество всего объектов,используем для задания фоновых объектов (количество которых == numvis - num);<br />
::::"rect_field" - ректангл активной зоны (пока не используется);<br />
::::"rect_text" - ректангл текстового поля(пока не используется);<br />
::::"string_check" - текстовое поле регистро-зависимое - для HL; <br />
::::"string_display" - текстовое поле для отображения;<br />
::::"x" - координата x родительского объекта для текста;<br />
::::"y" - координата y родительского объекта для текста;<br />
<br />
П.С. данную моду генерирует программа HGcrossword (https://docs.google.com/document/d/1RXSNUxNePF4qEibAPoCgfdiQycxoggc6Hu7a9VUjxSI/edit#)<br />
<br />
== Авто тест HL ==<br />
Для запуска автотеста, нам нужно указать в app.icf параметры:<br />
<br />
[GHiddenList]<br />
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;<br />
<br />
Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.<br />
<br />
== Пример ==<br />
<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
HiddenList.rar<br />
<br />
[[Category:Game mechanic]]<br />
<br />
[[Category:Get Started]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9748HiddenList2018-12-03T12:52:19Z<p>Sadovoy: /* Мода 2 */</p>
<hr />
<div>{{TOC right}}<br />
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:HOList_1.jpg|right]]<br />
<br />
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.<br />
<br />
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. <br />
<br />
==Основные параметры==<br />
<br />
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;<br><br />
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';<br><br />
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;<br><br />
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;<br><br />
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.<br><br />
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;<br />
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.<br />
При инициализации листа он передаст состояние "start" таймеру.<br />
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.<br />
<br />
<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''вычеркнуть''' ('' cross ''):<br />
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);<br />
:'''число''' - найденный объект удаляется из списка;<br />
*'''листать''' ('' scroll '')<br />
:'''1''' - список можно листать (скролировать);<br />
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);<br />
*'''тип списка''' ('' kind '') - Тип поиска объектов:<br />
:'''1''' - слово;<br />
:'''2''' - предложение;<br />
:'''3''' - удаляемая пиктограмма;<br />
:'''4''' - пиктограмма;<br />
:'''5''' - поиск различий.<br />
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим<br />
:'''пары''' - поиск пар;<br />
:'''одиночные''' - поиск по одному объекту.<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].<br />
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).<br />
<br />
<br />
<br />
'''Группа - параметры поиска'''<br />
<br />
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).<br />
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.<br />
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.<br />
*'''одного типа''' ('' max ''):<br />
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;<br />
:'''-1''' - игнорируется.<br />
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.<br />
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.<br />
*'''актёр-иконка''' ('' actorIco '') - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.<br><br />
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .<br />
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.<br />
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .<br />
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.<br />
<br />
<br />
<br />
'''Группа - скорость'''<br />
<br />
Отвечают за скорость перемещения найденного объекта.<br />
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.<br />
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.<br />
<br />
<br />
<br />
'''Группа - равномерное распределение'''<br />
<br />
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.<br />
*'''дополнительные сортировки''' ('' addit_algo '') - Использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами)<br />
<br />
'''Группа - итерационное распределение'''<br />
<br />
*'''включить''' ('' altern_algo '') - Использовать итерационный алгоритм поиска равномерного распределения объектов<br />
*'''учитывать сложности''' ('' process_diff '') - Учитывать сложности предметов при распределении<br />
*'''количество объектов''' ('' hiddens_num_threshold '') - Максимальное количество активных предметов на сцене для которых будут учитываться сложности (max = 24)<br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.<br />
*'''ключ распределения''' ('' distribution_seed '') - Ключ для случайного выбора заменяемого предмета (только для мультиплеера)<br />
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.<br />
<br />
Рекомендации по использованию:<br />
<br />
*Если включать "Удалять перекрытия", то нужно для счетчика кол-ва оставшихся хидденов считывать значение из "num".<br />
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.<br />
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.<br />
<br />
Логи:<br />
<br />
<pre><br />
"Deleting a hidden object with textID: %i" - удаление объекта с текстовым ID<br />
"Overlapping detected! Area: %f px" - обнаружения перекрытия в столько-то пикселей<br />
"fixOverlapping() Iterations num: %i / %i; Overlaps num: %i" - итерации, итоговое количество перекрытий<br />
</pre><br />
<br />
==Дополнительные параметры==<br />
<br />
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: <br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:<br />
:'''0''' - отключено;<br />
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).<br />
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.<br />
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.<br />
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.<br />
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.<br />
*'''показывать один объект игр''' ('' unTxtRep '') - Количество игр, в течении которых будет выбран один объект из данного набора. 0 - не использовать механизм<br />
*'''силуэты после слов''' ('' picsAfterWords '') - Стараться в силуэтах использовать то, что находилось в словах<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один<br />
*'''находить много одним кликом''' ('' canFoundMultiple '') - 1 - если тап попал на несколько объектов, то найдем все. 0 - только один<br />
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).<br />
<br />
<br />
'''Группа - равномерное распределение''' - в настоящее время не рекомендуется включать параметры из этой группы. Логика устарела и может конфликтовать со следующей группой итерационного распределения. Эта группа оставлена для возможной доработки в будущем. <br />
*'''включить''' ('' undist '') - равномерно распределять объекты по площади сцены. Да/нет. <br />
*'''дополнительные сортировки''' (''addit_algo'') - использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами). Да/нет. <br />
<br />
<br />
'''Группа - итерационное распределение''' - на данный момент лучший алгоритм равномерного распределения.<br />
*'''включить''' ('' altern_algo '') - использовать итерационный алгоритм поиска равномерного распределения объектов. Да/нет. <br />
*'''учитывать сложности''' ('' process_diff '') - учитывать сложности объектов при распределении. Подробнее о сложностях в описании соответствующего параметра в [[hiddenObject]]. Да/нет. <br />
*'''количество объектов''' ('' hiddens_num_threshold '') - максимальное количество активных предметов на сцене, для которых будут учитываться сложности. <br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - максимальное количество итераций фикса перекрытия объектов. По умолчанию 50, min="0" max="100".<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - максимальная допустимая площадь перекрытия в пикселях. По умолчанию 1024, min="0" max="2048". <br />
*'''ключ распределения''' ('' distribution_seed '') - ключ для случайного выбора заменяемого предмета (только для мультиплеера). min="0" max="32768".<br />
*'''удалять перекрытия''' ('' del_after_fix '') - удалять оставшиеся перекрытия после последней итерации фикса. Количество объектов получать из num, нет=0, да=1. <br />
<br />
<br />
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).<br />
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):<br />
:'''0''' - нет;<br />
:'''1''' - текстовая;<br />
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");<br />
:'''3''' - трансформация цвета;<br />
:'''4''' - дым.<br />
При применении аномалии "блитц" через объект [[Economics]] набор параметров: anom="0", is_blitz="1".<br />
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри "regexp=":<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;<br />
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.<br />
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.<br />
*'''сортировать по приоритету''' (''priorsort'') - Сортировать итоговый список по полю приоритет объекта. Высокий приоритет - сначала.<br />
*'''не давать ходить игроку''' (''botonly'') - Если включена - то хидден будет работать, но не будет принимать клики от игрока.<br />
*'''предметов по заданию не более''' (''taskless'') - Предметов по заданию не более заданного числа. -1 - без ограничений<br />
*'''неактивные улики как фон''' (''cluesbg'') - Если включена, то в хидденах связанные предметы, для которых есть неактивные таски, будут видны на фоне.<br />
<br />
<br />
'''Группа - появление новых объектов'''<br />
<br />
*'''время''' ('' acttm '') - Время появления объекта (мс);<br />
*'''начальный скейл''' ('' actsc '') - Начальный скейл;<br />
*'''начальная альфа''' ('' actal '') - Начальная альфа.<br />
<br />
<br />
<br />
'''Группа - сессии'''<br />
<br />
*'''сессионность''' ('' ses ''):<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.<br />
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:<br />
:'''0''' - случайный;<br />
:'''1''' - последний фон;<br />
:'''2''' - пустой.<br />
<br />
<br />
<br />
'''Группа - цвета'''<br />
<br />
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Время перехода''' ('' c_time '') - Время изменения цвета.<br />
<br />
<br />
<br />
'''Группа - время'''<br />
<br />
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):<br />
:'''-1''' - игнорируется;<br />
:'''число''' - время игры.<br />
*'''прерывать''' ('' tmInt ''):<br />
:'''1''' - по окончанию времени игра будет прервана;<br />
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.<br />
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);<br />
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;<br />
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.<br />
*'''жизни актера''' ('' tmActorLife '') - Время жизни клона актера, после которого он будет удален меньше либо рано 0 - не удалять по времени<br />
<br />
<br />
<br />
'''Группа - ошибки'''<br />
<br />
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо [[hiddenObject]].<br />
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.<br />
<br />
<br />
<br />
'''Группа - переход'''<br />
<br />
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.<br />
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.<br />
<br />
<br />
<br />
'''Группа - система очков'''<br />
<br />
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.<br />
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.<br />
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.<br />
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).<br />
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1"'''.<br />
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.<br />
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].<br />
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].<br />
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.<br />
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.<br />
*'''Бонусный мультипликатор''' ('' grow ''):<br />
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.<br />
:'''0''' - не умножать.<br />
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).<br />
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.<br />
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.<br />
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.<br />
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние "beg"''').<br />
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние '''end'''.<br />
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.<br />
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).<br />
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.<br />
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).<br />
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).<br />
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.<br />
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).<br />
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;<br />
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;<br />
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.<br />
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.<br />
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент<br />
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)<br />
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки детектив макс. комбо''' (''scoreDetMaxCombo'') - максимальное значение комбо для очков по системе детектива, используется при состоянии хидден-листа max_combo. Если в настройках хидден-листа очковая система "очки 3.0", то scoreDetMaxCombo должно быть равно <property name="комбо2 кол-во" id="cmb2Num" hint="комбо2 кол-во" type="int" label="комбо2 кол-во" value="1"/> +1. То есть, на 1 больше, чем значение комбо2 кол-во ('' cmb2Num '').<br />
*'''держать max_combo до тапа''' (''keepMaxCombo'') - Будет ли максимальное значение комбо после вызова max_combo храниться до тапа (да) или уменьшаться сразу (нет). Флаг используется только для состояния max_combo, обычный хидден останется прежним. Флаг обеспечит max_combo до первого тапа. То есть, чтобы комбо убывало по времени, но после первого тапа.<br />
<br />
<br />
'''Группа - звезды'''<br />
<br />
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.<br />
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.<br />
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).<br />
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.<br />
Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.<br />
<br />
==Параметры бота и мультиплеера==<br />
<br />
'''Группа - Хидден бот'''<br />
<br />
*'''тип бота''' - тип бота:<br />
:'''нет''' - обычная одиночная игра, бот выключен;<br />
:'''на одном поле''' - игра с ботом на одном поле, у обоих одинаковый список предметов;<br />
:'''с маленьким полем''' - бот будет играть на отдельном поле (??????);<br />
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;<br />
:'''мультиплеер''' - игра через сервер с живым оппонентом;<br />
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);<br />
*'''номер уровня''' - номер уровня в файле (начиная с 0);<br />
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;<br />
*'''multiplayer''' - объект мультиплеера;<br />
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;<br />
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);<br />
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);<br />
*'''t min abs ms''' - самая минимальная задержка между ходами бота;<br />
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;<br />
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;<br />
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;<br />
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);<br />
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;<br />
*'''t wrong max ms''' - максимальное время между ложными кликами бота;<br />
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);<br />
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;<br />
*'''доп. поле x''' - координаты доп. поля по Х;<br />
*'''доп. поле y''' - координаты доп. поля по Y;<br />
*'''доп. поле sx''' - масштаб доп. поля;<br />
*'''доп. поле sy''' - масштаб доп. поля;<br />
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;<br />
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);<br />
*'''счетчик очков бота''' - счетчик, выводящий очки;<br />
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;<br />
*'''комбо2 прогресс бота''' - комбо2 прогресс;<br />
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;<br />
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;<br />
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;<br />
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;<br />
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;<br />
*'''таймер хода бота''' - таймер хода бота;<br />
*'''таймер хода игрока''' - таймер хода игрока;<br />
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;<br />
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.<br />
<br />
=== Настройка сложности бота ===<br />
<br />
Файл уровней для хидден-бота должен иметь такую структуру:<br />
<bots><br />
<obj id="0"><br />
<bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
<obj id="1"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" /><br />
</obj><br />
<obj id="2"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" /><br />
<bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
</bots><br />
<br />
*bots - основной таг<br />
*obj > id - номер уровня<br />
*bot - содержит те же параметры, что и настройки бота в хидден листе<br />
<br />
==Режим "блиц" с бесконечными объектами==<br />
<br />
'''Правила аномалии "блиц"''':<br />
<br />
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.<br />
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.<br />
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.<br />
<br />
Для включения такого режима блиц используем поле в настройках хидден-листа:<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).<br />
<br />
Если в этом поле настройка "нет", то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.<br />
<br />
Прочитать, находится ли хидден в режиме блиц можно из поля "is_blitz" хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.<br />
<br />
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.<br />
<br />
В экономике указываем блиц, как отдельную аномалию.<br />
<br />
==Состояния==<br />
<br />
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:<br />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<br />
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).<br />
*'''max_combo''' - хидден начинается с максимальным значением комбо<br />
<br />
==Примечания==<br />
<br />
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.<br />
<br />
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!<br />
<br />
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game. <br><br />
Например, <br><br />
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, <br> <br />
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. <br><br />
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.<br />
<br />
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:<br />
<br />
<pre><br />
[GHiddenList]<br />
HitTest=0<br />
HitTestDx=1 - шаг по х<br />
HitTestDy=1 - шаг по y<br />
</pre><br />
<br />
в результате после перехода на сцену с хидденом появится файл, в котором будет казан объекты и координаты в которых они не тапаются.<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
[[Файл:HOList_3.jpg|right]]<br />
<br />
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''нет предметов (при создании из динамического конфига)''' ('' nstNoObjects '') - при загрузке локации без хидден-объектов (например не подтянулся пак либо нет локализации) перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '')- Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):<br />
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.<br />
<br />
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:<br />
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;<br />
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;<br />
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;<br />
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;<br />
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;<br />
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.<br />
<br />
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):<br />
:'''объект''' ('' obj '') - Объект, который переводится в указанное состояние, если долго не находить хидден;<br />
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;<br />
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.<br />
<br />
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):<br />
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;<br />
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;<br />
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;<br />
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);<br />
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;<br />
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).<br />
<br />
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): <br />
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.<br />
<br />
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):<br />
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;<br />
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.<br />
<br />
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): <br />
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.<br />
<br />
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]<br />
<br />
== Get Started==<br />
Минимальный набор ресурсов:<br />
* Фоновая картинка для поисковой сцены<br />
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]<br />
* Текстовые объекты для идентификации спрятанных объектов<br />
<br />
Минимальный набор объектов редактора:<br />
* [[Image]] который будет изменен в хидден-лист<br />
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.<br />
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)<br />
<br />
Наши действия:<br />
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,<br />
# добавим новый экран с именем ''scrHList''<br />
# создадим в этом экране сцену ''stgHList''<br />
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]<br />
## создаём папку ''HList''<br />
## добавим в ней картинку для фона и картинки для спрятанных объектов.<br />
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].<br />
## закроем редактор ресурсов<br />
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]<br />
## создаём папку ''HListText''<br />
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.<br />
## сохраним внесенные изменения.<br />
# перейдём в редактор сцен.<br />
# создадим в сцене stgHList объект [[Table]] и назовем его HOT<br />
## настроим размер и положение таблицы, согласно нашего дизайна<br />
## установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)<br />
## установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"<br />
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. <br>'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.<br />
## в поле таблица указываем нашу HOT<br />
## установим параметр объектов = "10"<br />
## установим параметр пропадание объектов = "да"<br />
## установим параметр реагировать на отпускание = "да"<br />
## установим параметр реагировать на невидимые = "нет"<br />
## установим параметр набор = "1"<br />
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:<br />
## в поле list укажем наш HiddenList<br />
## параметр набор = "1"<br />
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)<br />
# сохраним проект<br />
# запустим [[Интерфейс_Viewer|вьювер]]<br />
<br />
== Динамический HG==<br />
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига.<br />
<br />
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )<br />
<br />
[[Файл:D485ecbbbb.jpg|right]]<br />
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. <br />
*'''список графических ресурсов''' — служебное, пока не используется;<br />
*'''список текстовых ресурсов''' — служебное, пока не используется;<br />
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;<br />
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;<br />
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);<br />
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;<br />
*'''точечный спецэффект''' ('' hiddenEffect '') — ;<br />
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;<br />
<br />
Требования, вся графика HO,BG отрисовывается без учёта пивоты;<br />
<br />
Файлы конфиги имеют вид:<br />
Файл уровня имеет вид:<br />
{<br />
"levels": [<br />
{<br />
"file": "ViewerFiles/DynHid/hidden0.cfg",<br />
"pack":3<br />
}<br />
]<br />
}<br />
<br />
:Где "levels" - линки на файлы уровней. <br />
:::"file" - путь к файлу;<br />
:::"pack" - пак в который попадут ресурсы;<br />
<br />
<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
"bg": {<br />
"src": "bg.png",<br />
"w": 2048,<br />
"h": 1151,<br />
"id": 16,<br />
"color": "#ffffff",<br />
"tile": ""<br />
},<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
}<br />
}<br />
<br />
:Где "bg" - настройки фона. <br />
:::"src" - сорс графического файла в ресурсной базе;<br />
:::"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;<br />
:::"tile" - тайлинг фона;<br />
:::"id" - id ресурса из ресурсной базы;<br />
::"hiddens" - перечень HO с их настройками<br />
::::"id" - TxtId;<br />
::::"nm" - имя HO;<br />
::::"res" - графический ресурс HO;<br />
::::"bg" - графический ресурс тени;<br />
::::"rect" - настройки "res";<br />
:::::"x" - координата x, в координатах корневого объекта;<br />
:::::"y" - координата y, в координатах корневого объекта;<br />
:::::"w" - ширина;<br />
:::::"h" - высота;<br />
::::"objs" - перечень нашлёпок;<br />
:::::"res" - графический ресурс нашлёпки;<br />
:::::"rect" - настройки графического ресурса нашлёпки;<br />
::::::"x" - координата x, в координатах HO;<br />
::::::"y" - координата y, в координатах HO;<br />
::::::"w" - ширина;<br />
::::::"h" - высота;<br />
::"res" - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)<br />
::::"images" - перечень графических ресурсов<br />
::::"texts" - перечень текстовых ресурсов<br />
::::"sounds" - перечень звуковых ресурсов<br />
<br />
== Кроссворд ==<br />
Данный функционал базируется на динамических HG и настраивается в файле динамического уровня.<br />
<br />
=== Мода 2 - слова с мусором ===<br />
[[Файл:Crossword mode2.jpg|right|500x500px]]<br />
Данная мода представляет собой HO объекты и текстовую таблицу, при нахождении предмета, в текстовой таблице подсвечиваются буквы слова.<br />
<br />
Настройка в HiddenList указывается в теге '''кроссворд - мода 2 - слова с мусором''' ('''_G_17'''):<br />
* '''режим кроссворда''' ('''cwon''') - использовать/не использовать режим;<br />
* '''подуровень''' ('''sub_level''') - подуровень;<br />
* '''root''' ('''cw2root''') - родитель текстового поля, координаты будут установлены согласно параметрам "x","y";<br />
* '''text''' ('''cw2text''') - линк на текстовый объект, в котором будем отображать текстовое поле; <br />
* '''цвет найденных''' ('''colorFound''') - цвет букв найденных слов в нашем текстовом поле;<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
...<br />
"hiddens": [ ... ],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
},<br />
"mode2" : {<br />
"en" : [<br />
{<br />
"ids" : [ 3032, 4480, 4491, 4493, 4494, 4499 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 414,<br />
"x" : -682,<br />
"y" : -300<br />
},<br />
"string_check" : "XObatHWZIF|RJLhacksaw|QVPNsaddle|AECGDaxeYU|doveSlante|rnBMTKGEAQ",<br />
"string_display" : "XOBATHWZIF|RJLHACKSAW|QVPNSADDLE|AECGDAXEYU|DOVESLANTE|RNBMTKGEAQ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 4485, 4487, 4490, 4495, 4502, 17112 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "FskatesNTH|ALMboomera|ngWERODrad|ioSKBZoarP|tableGball|oonJXCUIYV",<br />
"string_display" : "FSKATESNTH|ALMBOOMERA|NGWERODRAD|IOSKBZOARP|TABLEGBALL|OONJXCUIYV",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
],<br />
"ru" : [<br />
{<br />
"ids" : [ 4481, 4485, 4490, 4495, 4500, 4508 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ЕконькиМЭк|олокольчик|ХАрадиоШве|слоВбабочк|аЖИЛкастрю|ляУЯРТНСКЮ",<br />
"string_display" : "ЕКОНЬКИМЭК|ОЛОКОЛЬЧИК|ХАРАДИОШВЕ|СЛОВБАБОЧК|АЖИЛКАСТРЮ|ЛЯУЯРТНСКЮ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 3053, 4480, 4487, 4494, 4502, 4507 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ШЩЧУГЮДзве|здаНОМТЕХб|умерангИЪс|толЗЖЪбита|УфонарьЮпо|дарокХПЭБТ",<br />
"string_display" : "ШЩЧУГЮДЗВЕ|ЗДАНОМТЕХБ|УМЕРАНГИЪС|ТОЛЗЖЪБИТА|УФОНАРЬЮПО|ДАРОКХПЭБТ",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
]<br />
}<br />
<br />
:где "mode2" - настройки моды 2;<br />
:::"en", "ru" - языковые локали;<br />
::::"ids" - массив textID активных HO;<br />
::::"nm" - имя уровня - для нашего удобства;<br />
::::"num" - количество активных объектов == размеру массива '''ids''';<br />
::::"numvis" - количество всего объектов,используем для задания фоновых объектов (количество которых == numvis - num);<br />
::::"rect_field" - ректангл активной зоны (пока не используется);<br />
::::"rect_text" - ректангл текстового поля(пока не используется);<br />
::::"string_check" - текстовое поле регистро-зависимое - для HL; <br />
::::"string_display" - текстовое поле для отображения;<br />
::::"x" - координата x родительского объекта для текста;<br />
::::"y" - координата y родительского объекта для текста;<br />
<br />
П.С. данную моду генерирует программа HGcrossword (https://docs.google.com/document/d/1RXSNUxNePF4qEibAPoCgfdiQycxoggc6Hu7a9VUjxSI/edit#)<br />
<br />
== Авто тест HL ==<br />
Для запуска автотеста, нам нужно указать в app.icf параметры:<br />
<br />
[GHiddenList]<br />
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;<br />
<br />
Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.<br />
<br />
== Пример ==<br />
<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
HiddenList.rar<br />
<br />
[[Category:Game mechanic]]<br />
<br />
[[Category:Get Started]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Crossword_mode2.jpg&diff=9747Файл:Crossword mode2.jpg2018-12-03T12:02:54Z<p>Sadovoy: </p>
<hr />
<div></div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9746HiddenList2018-12-03T12:01:44Z<p>Sadovoy: </p>
<hr />
<div>{{TOC right}}<br />
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:HOList_1.jpg|right]]<br />
<br />
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.<br />
<br />
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. <br />
<br />
==Основные параметры==<br />
<br />
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;<br><br />
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';<br><br />
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;<br><br />
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;<br><br />
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.<br><br />
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;<br />
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.<br />
При инициализации листа он передаст состояние "start" таймеру.<br />
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.<br />
<br />
<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''вычеркнуть''' ('' cross ''):<br />
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);<br />
:'''число''' - найденный объект удаляется из списка;<br />
*'''листать''' ('' scroll '')<br />
:'''1''' - список можно листать (скролировать);<br />
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);<br />
*'''тип списка''' ('' kind '') - Тип поиска объектов:<br />
:'''1''' - слово;<br />
:'''2''' - предложение;<br />
:'''3''' - удаляемая пиктограмма;<br />
:'''4''' - пиктограмма;<br />
:'''5''' - поиск различий.<br />
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим<br />
:'''пары''' - поиск пар;<br />
:'''одиночные''' - поиск по одному объекту.<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].<br />
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).<br />
<br />
<br />
<br />
'''Группа - параметры поиска'''<br />
<br />
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).<br />
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.<br />
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.<br />
*'''одного типа''' ('' max ''):<br />
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;<br />
:'''-1''' - игнорируется.<br />
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.<br />
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.<br />
*'''актёр-иконка''' ('' actorIco '') - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.<br><br />
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .<br />
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.<br />
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .<br />
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.<br />
<br />
<br />
<br />
'''Группа - скорость'''<br />
<br />
Отвечают за скорость перемещения найденного объекта.<br />
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.<br />
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.<br />
<br />
<br />
<br />
'''Группа - равномерное распределение'''<br />
<br />
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.<br />
*'''дополнительные сортировки''' ('' addit_algo '') - Использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами)<br />
<br />
'''Группа - итерационное распределение'''<br />
<br />
*'''включить''' ('' altern_algo '') - Использовать итерационный алгоритм поиска равномерного распределения объектов<br />
*'''учитывать сложности''' ('' process_diff '') - Учитывать сложности предметов при распределении<br />
*'''количество объектов''' ('' hiddens_num_threshold '') - Максимальное количество активных предметов на сцене для которых будут учитываться сложности (max = 24)<br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.<br />
*'''ключ распределения''' ('' distribution_seed '') - Ключ для случайного выбора заменяемого предмета (только для мультиплеера)<br />
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.<br />
<br />
Рекомендации по использованию:<br />
<br />
*Если включать "Удалять перекрытия", то нужно для счетчика кол-ва оставшихся хидденов считывать значение из "num".<br />
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.<br />
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.<br />
<br />
Логи:<br />
<br />
<pre><br />
"Deleting a hidden object with textID: %i" - удаление объекта с текстовым ID<br />
"Overlapping detected! Area: %f px" - обнаружения перекрытия в столько-то пикселей<br />
"fixOverlapping() Iterations num: %i / %i; Overlaps num: %i" - итерации, итоговое количество перекрытий<br />
</pre><br />
<br />
==Дополнительные параметры==<br />
<br />
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: <br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:<br />
:'''0''' - отключено;<br />
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).<br />
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.<br />
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.<br />
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.<br />
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.<br />
*'''показывать один объект игр''' ('' unTxtRep '') - Количество игр, в течении которых будет выбран один объект из данного набора. 0 - не использовать механизм<br />
*'''силуэты после слов''' ('' picsAfterWords '') - Стараться в силуэтах использовать то, что находилось в словах<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один<br />
*'''находить много одним кликом''' ('' canFoundMultiple '') - 1 - если тап попал на несколько объектов, то найдем все. 0 - только один<br />
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).<br />
<br />
<br />
'''Группа - равномерное распределение''' - в настоящее время не рекомендуется включать параметры из этой группы. Логика устарела и может конфликтовать со следующей группой итерационного распределения. Эта группа оставлена для возможной доработки в будущем. <br />
*'''включить''' ('' undist '') - равномерно распределять объекты по площади сцены. Да/нет. <br />
*'''дополнительные сортировки''' (''addit_algo'') - использовать дополнительные алгоритмы поиска равномерного распределения (не работает с динамическими хидденами). Да/нет. <br />
<br />
<br />
'''Группа - итерационное распределение''' - на данный момент лучший алгоритм равномерного распределения.<br />
*'''включить''' ('' altern_algo '') - использовать итерационный алгоритм поиска равномерного распределения объектов. Да/нет. <br />
*'''учитывать сложности''' ('' process_diff '') - учитывать сложности объектов при распределении. Подробнее о сложностях в описании соответствующего параметра в [[hiddenObject]]. Да/нет. <br />
*'''количество объектов''' ('' hiddens_num_threshold '') - максимальное количество активных предметов на сцене, для которых будут учитываться сложности. <br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - максимальное количество итераций фикса перекрытия объектов. По умолчанию 50, min="0" max="100".<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - максимальная допустимая площадь перекрытия в пикселях. По умолчанию 1024, min="0" max="2048". <br />
*'''ключ распределения''' ('' distribution_seed '') - ключ для случайного выбора заменяемого предмета (только для мультиплеера). min="0" max="32768".<br />
*'''удалять перекрытия''' ('' del_after_fix '') - удалять оставшиеся перекрытия после последней итерации фикса. Количество объектов получать из num, нет=0, да=1. <br />
<br />
<br />
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).<br />
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):<br />
:'''0''' - нет;<br />
:'''1''' - текстовая;<br />
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");<br />
:'''3''' - трансформация цвета;<br />
:'''4''' - дым.<br />
При применении аномалии "блитц" через объект [[Economics]] набор параметров: anom="0", is_blitz="1".<br />
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри "regexp=":<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;<br />
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.<br />
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.<br />
*'''сортировать по приоритету''' (''priorsort'') - Сортировать итоговый список по полю приоритет объекта. Высокий приоритет - сначала.<br />
*'''не давать ходить игроку''' (''botonly'') - Если включена - то хидден будет работать, но не будет принимать клики от игрока.<br />
*'''предметов по заданию не более''' (''taskless'') - Предметов по заданию не более заданного числа. -1 - без ограничений<br />
*'''неактивные улики как фон''' (''cluesbg'') - Если включена, то в хидденах связанные предметы, для которых есть неактивные таски, будут видны на фоне.<br />
<br />
<br />
'''Группа - появление новых объектов'''<br />
<br />
*'''время''' ('' acttm '') - Время появления объекта (мс);<br />
*'''начальный скейл''' ('' actsc '') - Начальный скейл;<br />
*'''начальная альфа''' ('' actal '') - Начальная альфа.<br />
<br />
<br />
<br />
'''Группа - сессии'''<br />
<br />
*'''сессионность''' ('' ses ''):<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.<br />
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:<br />
:'''0''' - случайный;<br />
:'''1''' - последний фон;<br />
:'''2''' - пустой.<br />
<br />
<br />
<br />
'''Группа - цвета'''<br />
<br />
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Время перехода''' ('' c_time '') - Время изменения цвета.<br />
<br />
<br />
<br />
'''Группа - время'''<br />
<br />
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):<br />
:'''-1''' - игнорируется;<br />
:'''число''' - время игры.<br />
*'''прерывать''' ('' tmInt ''):<br />
:'''1''' - по окончанию времени игра будет прервана;<br />
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.<br />
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);<br />
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;<br />
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.<br />
*'''жизни актера''' ('' tmActorLife '') - Время жизни клона актера, после которого он будет удален меньше либо рано 0 - не удалять по времени<br />
<br />
<br />
<br />
'''Группа - ошибки'''<br />
<br />
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо [[hiddenObject]].<br />
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.<br />
<br />
<br />
<br />
'''Группа - переход'''<br />
<br />
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.<br />
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.<br />
<br />
<br />
<br />
'''Группа - система очков'''<br />
<br />
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.<br />
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.<br />
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.<br />
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).<br />
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1"'''.<br />
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.<br />
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].<br />
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].<br />
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.<br />
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.<br />
*'''Бонусный мультипликатор''' ('' grow ''):<br />
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.<br />
:'''0''' - не умножать.<br />
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).<br />
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.<br />
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.<br />
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.<br />
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние "beg"''').<br />
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние '''end'''.<br />
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.<br />
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).<br />
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.<br />
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).<br />
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).<br />
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.<br />
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).<br />
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;<br />
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;<br />
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.<br />
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.<br />
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент<br />
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)<br />
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки детектив макс. комбо''' (''scoreDetMaxCombo'') - максимальное значение комбо для очков по системе детектива, используется при состоянии хидден-листа max_combo. Если в настройках хидден-листа очковая система "очки 3.0", то scoreDetMaxCombo должно быть равно <property name="комбо2 кол-во" id="cmb2Num" hint="комбо2 кол-во" type="int" label="комбо2 кол-во" value="1"/> +1. То есть, на 1 больше, чем значение комбо2 кол-во ('' cmb2Num '').<br />
*'''держать max_combo до тапа''' (''keepMaxCombo'') - Будет ли максимальное значение комбо после вызова max_combo храниться до тапа (да) или уменьшаться сразу (нет). Флаг используется только для состояния max_combo, обычный хидден останется прежним. Флаг обеспечит max_combo до первого тапа. То есть, чтобы комбо убывало по времени, но после первого тапа.<br />
<br />
<br />
'''Группа - звезды'''<br />
<br />
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.<br />
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.<br />
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).<br />
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.<br />
Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.<br />
<br />
==Параметры бота и мультиплеера==<br />
<br />
'''Группа - Хидден бот'''<br />
<br />
*'''тип бота''' - тип бота:<br />
:'''нет''' - обычная одиночная игра, бот выключен;<br />
:'''на одном поле''' - игра с ботом на одном поле, у обоих одинаковый список предметов;<br />
:'''с маленьким полем''' - бот будет играть на отдельном поле (??????);<br />
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;<br />
:'''мультиплеер''' - игра через сервер с живым оппонентом;<br />
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);<br />
*'''номер уровня''' - номер уровня в файле (начиная с 0);<br />
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;<br />
*'''multiplayer''' - объект мультиплеера;<br />
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;<br />
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);<br />
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);<br />
*'''t min abs ms''' - самая минимальная задержка между ходами бота;<br />
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;<br />
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;<br />
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;<br />
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);<br />
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;<br />
*'''t wrong max ms''' - максимальное время между ложными кликами бота;<br />
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);<br />
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;<br />
*'''доп. поле x''' - координаты доп. поля по Х;<br />
*'''доп. поле y''' - координаты доп. поля по Y;<br />
*'''доп. поле sx''' - масштаб доп. поля;<br />
*'''доп. поле sy''' - масштаб доп. поля;<br />
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;<br />
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);<br />
*'''счетчик очков бота''' - счетчик, выводящий очки;<br />
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;<br />
*'''комбо2 прогресс бота''' - комбо2 прогресс;<br />
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;<br />
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;<br />
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;<br />
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;<br />
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;<br />
*'''таймер хода бота''' - таймер хода бота;<br />
*'''таймер хода игрока''' - таймер хода игрока;<br />
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;<br />
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.<br />
<br />
=== Настройка сложности бота ===<br />
<br />
Файл уровней для хидден-бота должен иметь такую структуру:<br />
<bots><br />
<obj id="0"><br />
<bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
<obj id="1"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" /><br />
</obj><br />
<obj id="2"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" /><br />
<bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
</bots><br />
<br />
*bots - основной таг<br />
*obj > id - номер уровня<br />
*bot - содержит те же параметры, что и настройки бота в хидден листе<br />
<br />
==Режим "блиц" с бесконечными объектами==<br />
<br />
'''Правила аномалии "блиц"''':<br />
<br />
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.<br />
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.<br />
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.<br />
<br />
Для включения такого режима блиц используем поле в настройках хидден-листа:<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).<br />
<br />
Если в этом поле настройка "нет", то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.<br />
<br />
Прочитать, находится ли хидден в режиме блиц можно из поля "is_blitz" хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.<br />
<br />
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.<br />
<br />
В экономике указываем блиц, как отдельную аномалию.<br />
<br />
==Состояния==<br />
<br />
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:<br />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<br />
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).<br />
*'''max_combo''' - хидден начинается с максимальным значением комбо<br />
<br />
==Примечания==<br />
<br />
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.<br />
<br />
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!<br />
<br />
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game. <br><br />
Например, <br><br />
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, <br> <br />
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. <br><br />
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.<br />
<br />
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:<br />
<br />
<pre><br />
[GHiddenList]<br />
HitTest=0<br />
HitTestDx=1 - шаг по х<br />
HitTestDy=1 - шаг по y<br />
</pre><br />
<br />
в результате после перехода на сцену с хидденом появится файл, в котором будет казан объекты и координаты в которых они не тапаются.<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
[[Файл:HOList_3.jpg|right]]<br />
<br />
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''нет предметов (при создании из динамического конфига)''' ('' nstNoObjects '') - при загрузке локации без хидден-объектов (например не подтянулся пак либо нет локализации) перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '')- Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):<br />
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.<br />
<br />
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:<br />
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;<br />
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;<br />
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;<br />
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;<br />
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;<br />
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.<br />
<br />
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):<br />
:'''объект''' ('' obj '') - Объект, который переводится в указанное состояние, если долго не находить хидден;<br />
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;<br />
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.<br />
<br />
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):<br />
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;<br />
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;<br />
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;<br />
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);<br />
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;<br />
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).<br />
<br />
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): <br />
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.<br />
<br />
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):<br />
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;<br />
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.<br />
<br />
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): <br />
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.<br />
<br />
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]<br />
<br />
== Get Started==<br />
Минимальный набор ресурсов:<br />
* Фоновая картинка для поисковой сцены<br />
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]<br />
* Текстовые объекты для идентификации спрятанных объектов<br />
<br />
Минимальный набор объектов редактора:<br />
* [[Image]] который будет изменен в хидден-лист<br />
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.<br />
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)<br />
<br />
Наши действия:<br />
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,<br />
# добавим новый экран с именем ''scrHList''<br />
# создадим в этом экране сцену ''stgHList''<br />
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]<br />
## создаём папку ''HList''<br />
## добавим в ней картинку для фона и картинки для спрятанных объектов.<br />
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].<br />
## закроем редактор ресурсов<br />
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]<br />
## создаём папку ''HListText''<br />
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.<br />
## сохраним внесенные изменения.<br />
# перейдём в редактор сцен.<br />
# создадим в сцене stgHList объект [[Table]] и назовем его HOT<br />
## настроим размер и положение таблицы, согласно нашего дизайна<br />
## установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)<br />
## установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"<br />
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. <br>'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.<br />
## в поле таблица указываем нашу HOT<br />
## установим параметр объектов = "10"<br />
## установим параметр пропадание объектов = "да"<br />
## установим параметр реагировать на отпускание = "да"<br />
## установим параметр реагировать на невидимые = "нет"<br />
## установим параметр набор = "1"<br />
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:<br />
## в поле list укажем наш HiddenList<br />
## параметр набор = "1"<br />
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)<br />
# сохраним проект<br />
# запустим [[Интерфейс_Viewer|вьювер]]<br />
<br />
== Динамический HG==<br />
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига.<br />
<br />
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )<br />
<br />
[[Файл:D485ecbbbb.jpg|right]]<br />
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. <br />
*'''список графических ресурсов''' — служебное, пока не используется;<br />
*'''список текстовых ресурсов''' — служебное, пока не используется;<br />
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;<br />
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;<br />
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);<br />
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;<br />
*'''точечный спецэффект''' ('' hiddenEffect '') — ;<br />
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;<br />
<br />
Требования, вся графика HO,BG отрисовывается без учёта пивоты;<br />
<br />
Файлы конфиги имеют вид:<br />
Файл уровня имеет вид:<br />
{<br />
"levels": [<br />
{<br />
"file": "ViewerFiles/DynHid/hidden0.cfg",<br />
"pack":3<br />
}<br />
]<br />
}<br />
<br />
:Где "levels" - линки на файлы уровней. <br />
:::"file" - путь к файлу;<br />
:::"pack" - пак в который попадут ресурсы;<br />
<br />
<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
"bg": {<br />
"src": "bg.png",<br />
"w": 2048,<br />
"h": 1151,<br />
"id": 16,<br />
"color": "#ffffff",<br />
"tile": ""<br />
},<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
}<br />
}<br />
<br />
:Где "bg" - настройки фона. <br />
:::"src" - сорс графического файла в ресурсной базе;<br />
:::"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;<br />
:::"tile" - тайлинг фона;<br />
:::"id" - id ресурса из ресурсной базы;<br />
::"hiddens" - перечень HO с их настройками<br />
::::"id" - TxtId;<br />
::::"nm" - имя HO;<br />
::::"res" - графический ресурс HO;<br />
::::"bg" - графический ресурс тени;<br />
::::"rect" - настройки "res";<br />
:::::"x" - координата x, в координатах корневого объекта;<br />
:::::"y" - координата y, в координатах корневого объекта;<br />
:::::"w" - ширина;<br />
:::::"h" - высота;<br />
::::"objs" - перечень нашлёпок;<br />
:::::"res" - графический ресурс нашлёпки;<br />
:::::"rect" - настройки графического ресурса нашлёпки;<br />
::::::"x" - координата x, в координатах HO;<br />
::::::"y" - координата y, в координатах HO;<br />
::::::"w" - ширина;<br />
::::::"h" - высота;<br />
::"res" - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)<br />
::::"images" - перечень графических ресурсов<br />
::::"texts" - перечень текстовых ресурсов<br />
::::"sounds" - перечень звуковых ресурсов<br />
<br />
== Кроссворд ==<br />
Данный функционал базируется на динамических HG и настраивается в файле динамического уровня.<br />
<br />
=== Мода 2 ===<br />
Файл конкретного уровня имеет вид:<br />
{<br />
...<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
},<br />
"mode2" : {<br />
"en" : [<br />
{<br />
"ids" : [ 3032, 4480, 4491, 4493, 4494, 4499 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 414,<br />
"x" : -682,<br />
"y" : -300<br />
},<br />
"string_check" : "XObatHWZIF|RJLhacksaw|QVPNsaddle|AECGDaxeYU|doveSlante|rnBMTKGEAQ",<br />
"string_display" : "XOBATHWZIF|RJLHACKSAW|QVPNSADDLE|AECGDAXEYU|DOVESLANTE|RNBMTKGEAQ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 4485, 4487, 4490, 4495, 4502, 17112 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "FskatesNTH|ALMboomera|ngWERODrad|ioSKBZoarP|tableGball|oonJXCUIYV",<br />
"string_display" : "FSKATESNTH|ALMBOOMERA|NGWERODRAD|IOSKBZOARP|TABLEGBALL|OONJXCUIYV",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
],<br />
"ru" : [<br />
{<br />
"ids" : [ 4481, 4485, 4490, 4495, 4500, 4508 ],<br />
"nm" : "0001_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ЕконькиМЭк|олокольчик|ХАрадиоШве|слоВбабочк|аЖИЛкастрю|ляУЯРТНСКЮ",<br />
"string_display" : "ЕКОНЬКИМЭК|ОЛОКОЛЬЧИК|ХАРАДИОШВЕ|СЛОВБАБОЧК|АЖИЛКАСТРЮ|ЛЯУЯРТНСКЮ",<br />
"x" : -475,<br />
"y" : -69<br />
},<br />
{<br />
"ids" : [ 3053, 4480, 4487, 4494, 4502, 4507 ],<br />
"nm" : "0002_06",<br />
"num" : 6,<br />
"numvis" : 9,<br />
"rect_field" : {<br />
"h" : 1151,<br />
"w" : 1534,<br />
"x" : -768,<br />
"y" : -575<br />
},<br />
"rect_text" : {<br />
"h" : 462,<br />
"w" : 412,<br />
"x" : -681,<br />
"y" : -300<br />
},<br />
"string_check" : "ШЩЧУГЮДзве|здаНОМТЕХб|умерангИЪс|толЗЖЪбита|УфонарьЮпо|дарокХПЭБТ",<br />
"string_display" : "ШЩЧУГЮДЗВЕ|ЗДАНОМТЕХБ|УМЕРАНГИЪС|ТОЛЗЖЪБИТА|УФОНАРЬЮПО|ДАРОКХПЭБТ",<br />
"x" : -475,<br />
"y" : -69<br />
}<br />
]<br />
}<br />
<br />
<br />
<br />
== Авто тест HL ==<br />
Для запуска автотеста, нам нужно указать в app.icf параметры:<br />
<br />
[GHiddenList]<br />
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;<br />
<br />
Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.<br />
<br />
== Пример ==<br />
<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
HiddenList.rar<br />
<br />
[[Category:Game mechanic]]<br />
<br />
[[Category:Get Started]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9745Economics2018-12-03T08:38:30Z<p>Sadovoy: /* Ивентовые предметы */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
<br />
----<br />
<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
====Уровень мастерства====<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
====Ивентовые предметы====<br />
Предметы будут доступны для выпадения с локации, пока активно поле в опциях.<br />
*'''Поле в опциях''' - поле в опциях для проверки активности ивента(в юзере);<br />
*'''Значение''' - значение поля для проверки ивента;<br />
*'''Предметы''' - айдишники добавляемых предметов (в дроп локации, на всех уровнях мастерства);<br />
<br />
----<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9744Economics2018-12-03T08:37:20Z<p>Sadovoy: /* Ивентовые предметы */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
<br />
----<br />
<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
====Уровень мастерства====<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
====Ивентовые предметы====<br />
Предметы будут доступны для выпадения с локации, пока активно поле в опциях.<br />
*'''Поле в опциях''' - поле в опциях для проверки активности ивента;<br />
*'''Значение''' - значение поля для проверки ивента;<br />
*'''Предметы''' - айдишники добавляемых предметов (в дроп локации, на всех уровнях мастерства);<br />
<br />
----<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Statesmanager&diff=9740Statesmanager2018-11-23T08:12:23Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] предназначен для постановки объектов в очередь выполнения единообразными командами. Можно применять для управления отображением всплывающих окон.<br />
<br />
=Свойства=<br />
<br />
==Процесс==<br />
*'''объект открытия''' (obj) - объект который будет переведён в заданное состояние, если данный объект будет первым в очереди на открытие и передадим менеджеру окон состояние ''next''; <br />
*'''состояние открытия''' (st) - перевести выбранный объект в заданное состояние;<br />
*'''объект back''' (obj_b) - объект который будет переведён в заданное состояние, если данный объект будет первым в очереди на закрытие и передадим менеджеру окон состояние ''back''; <br />
*'''состояние back''' (st_b) - перевести выбранный объект в заданное состояние.<br />
<br />
==Визуализация окон==<br />
*'''fading_t''' - Время фейдинга для окон типа ''по альфе''. Statesmanager'у должен приходить таймер!!!<br />
<br />
<br />
=Дополнительные параметры=<br />
[[Файл:+.png]] '''изменить состояние объекта - очередь back пуста:'''<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - очередь next пуста:'''<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
=Параметры которые мы можем считать из statesmanager=<br />
*'''n_back''' - количество событий в очереди на закрытие (не учитывая события добавленные как попапы);<br />
*'''n_next''' - количество событий в очереди на открытие (не учитывая события добавленные как попапы).<br />
*'''n_popup''' - количество событий открытых как попапы.<br />
<br />
<br />
=Состояния=<br />
*'''add_first''' - добавить событие в начало очереди на открытие;<br />
*'''add_first_uni''' - добавить событие в начало очереди на открытие, но если данное событие уже добавлено в очередь, то повторно оно не добавиться (удобно если окно не должно открываться дважды);<br />
*'''add_last''' - добавить событие в конец очереди на открытие;<br />
*'''add_last_uni''' - добавить событие в конец очереди на закрытие, но если данное событие уже добавлено в очередь, то повторно оно не добавиться;<br />
*'''add_popup''' - добавить в очередь попапов событие, и сразу его открыть (добавляется в очередь беков на закрытие в начало). Примечание попапы добавляются в свою очередь на закрытие и открытие, параметры объекта statesmanagera (n_back и n_next) не повышаются при добавления попапа. <br />
*'''add_popup_uni''' - добавить попап с проверкой уникальности;<br />
*'''next''' - активировать первое событие в очереди на открытие;<br />
*'''back''' - активировать back для текущего события в очереди на закрытие;<br />
*'''clear''' - очищает стек очереди, очищает обе очереди (на открытие и на закрытие, включая попапы);<br />
*'''clear_back''' - очищает стек очереди на закрытие ( чистит очередь окон на закрытие, очередь попапов не трогает);<br />
*'''delete''' - удалить из очереди элемент с id из param;<br />
*'''log''' - записывает в лог, три очереди ( очередь next и две очереди беков (попапы и окна)):<br />
*'''add_state_last''' - добавить в очередь состояний вызываемых при закрытых окнах <br />
*'''double_back''' - активировать back текущего и следующего событий в очереди на закрытие;<br />
*'''triple_back''' - активировать back текущего и двух следующих событий в очереди на закрытие;<br />
*'''back_top''' - активировать back для самого верхнего события в очереди на закрытие (будет закрыто самое верхнее окно по Z; чтобы данный функционал работал корректно - мы должны: 1) менеджер окон поставить выше всех окон (в ините идёт очистка информации об окнах); 2) окна должны иметь тип "mwindow" или установленный флаг "isWindow==1"); П.С. в случае, если окно не будет соответствовать п.2 - окно не сможет быть закрыто, но не переживайте в логе будет запись и в режиме дебага вылезет варнинг http://joxi.ru/krDOJ9vUKMeEzA<br />
<br />
==================================================<br />
NEXT QUEUE<br />
id = 15, st = open<br />
id = 18, st = open<br />
id = 21, st = open<br />
id = 72, st = open<br />
id = 68, st = open<br />
id = 80, st = open<br />
id = 80, st = open<br />
id = 76, st = open<br />
03/10/14 11:53:17.485: <br />
==================================================<br />
POPUP QUEUE<br />
03/10/14 11:53:17.485: <br />
==================================================<br />
BACK QUEUE<br />
id = 11, st = open<br />
<br />
<br />
==Альтернативное описание состояний, взятое прямиком из кода==<br />
"idle", //!< Состояние простоя<br />
"add_first", //!< Добавить событие в начало очереди<br />
"add_last", //!< Добавить событие в конец очереди<br />
"add_first_uni", //!< Добавить событие в начало очереди<br />
"add_last_uni", //!< Добавить событие в конец очереди<br />
"next", //!< Активировать первое событие в очереди<br />
"back", //!< Активировать back для текущего события в очереди<br />
"clear", //!< Очистить обе очереди<br />
"add_popup", //!< Начать ветку попапов от текущего элемента очереди. Срабатывает<br />
//!< сразу, до зачиски всех попапов next не делает ничего, back сначала <br />
//!< закрывает попапы<br />
"delete", //!< Удалить из очереди элемент с id из param;<br />
"log" //!< Вывести содержимое всех трех очередей в лог<br />
"double_back", //!< двойной back (и отличная песня ZZ Top, к тому же)<br />
"triple_back" //!< тройной back<br />
<br />
=Схема работы=<br />
<br />
1) Добавить объекты по одному в очередь<br />
<br />
2) вызывать состояния next или back - объекты у которых вызваны состояния убираются из очереди<br />
очередь разбирается с конца<br />
<br />
<br />
=Пример реализации=<br />
<br />
==Очередь из окон==<br />
Задача: У нас открывается окно 1, после его закрытия открывается окно 2,окно 3 и т.д. (после закрытия одного окна открывается другое).<br />
<br />
Пример: Закончили уровень, и после закрытия окна с результатами, мы должны показать два окошка с новыми задачами.<br />
<br />
<br />
'''Реализация:'''<br />
<br />
*'''1) Открываем окно с результатами:'''<br />
:Из машины окна, вызываем состояние ''next'' машине обработчику менеджера окон (9win_root). Предварительно записываем состояния для закрытия и открытия данного окна машины (состояния ''close'' и ''open'' соответственно):<br />
<br />
::[[Файл:Statesmanager W next.png]]<br />
<br />
:В машине обработчике менеджера окон (9win_root), в состоянии ''next'' мы задаём менеджеру окон и передаём состояние ''add_first'', а затем ''next''. То есть мы добавляем первым в очередь на открытие наше окно с результатами и его открываем:<br />
<br />
::[[Файл:Statesmanager Next.png]]<br />
<br />
<br />
*'''2) Добавляем в очередь окно с задачей:'''<br />
:Из машины окна, вызываем состояние ''add'' машине обработчику менеджера окон (9win_root). Предварительно записываем состояния для закрытия и открытия данного окна машины (состояния ''close'' и ''open'' соответственно):<br />
<br />
::[[Файл:Statesmanager W add.png]]<br />
<br />
:В машине обработчике менеджера окон (9win_root), в состоянии ''add'' мы задаём менеджеру окон и передаём состояние ''add_last''( то есть мы добавляем окно в конец очереди на открытие).<br />
:[[Файл:Statesmanager.Add.png]]<br />
<br />
<br />
*'''3) Аналогично добавляем другие задачи.'''<br />
<br />
<br />
*'''4) Для закрытия окна с результатами уровня, мы передаём менеджеру окон состояние ''back'' (закрываем окно, первое в списке на закрытие), а затем состояние ''next'' (открываем первое окно в очереди на открытие, в нашем случае - первую добавленную задачу) '''.<br />
<br />
<br />
[[Category:Main objects]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9717Economics2018-10-17T12:31:24Z<p>Sadovoy: /* Поле economics setup */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
<br />
----<br />
<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
====Уровень мастерства====<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
====Ивентовые предметы====<br />
*'''Поле в опциях''' - поле в опциях для проверки активности ивента;<br />
*'''Значение''' - значение поля для проверки ивента;<br />
*'''Предметы''' - айдишники добавляемых предметов (в дроп локации, на всех уровнях мастерства);<br />
<br />
----<br />
<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9716Economics2018-10-17T12:29:26Z<p>Sadovoy: /* Ивентовые предметы */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Ивентовые предметы===<br />
*'''Поле в опциях''' - поле в опциях для проверки активности ивента;<br />
*'''Значение''' - значение поля для проверки ивента;<br />
*'''Предметы''' - айдишники добавляемых предметов (в дроп локации, на всех уровнях мастерства);<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9715Economics2018-10-17T12:28:40Z<p>Sadovoy: /* Локация хидден */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Ивентовые предметы===<br />
*'''Поле в опциях''' - Имя поля в опциях для проверки ивента;<br />
*'''Значение''' - значение поля в опциях для проверки ивента;<br />
*'''Предметы''' - айдишники добавляемых предметов (в дроп локации, на всех уровнях мастерства);<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9713Collapse2018-10-16T13:20:09Z<p>Sadovoy: /* Перегруженные правила */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня (результирующее значение будет в парамметре "needBirthLevel");<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
*'''Перемешивать при 0 ходов''' - если нет больше ходов на поле, да - поле перемешивать, нет - проигрыш.<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
*'''pause''' - поставить объект на паузу ("заморозить объект");<br />
*'''resume''' - снять объект с паузы ("разморозить объект");<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
*'''randomSize''' - размер "мешка" со случайными числами для досыпаний фишек. По умолчанию равен 100* на кол-во цветов фишек. Мешок генерируется в формате 0,1,2,0,1,2,0,1,2... затем перемешивается. Кастомный размер мешка не должен быть меньше, чем кол-во цветов фишек.<br />
*'''randomShuffles''' - число перемешиваний "мешка" для досыпаний. По умолчанию число перемешиваний равно размеру "мешка" (т.е. проходимся по каждой фишке и меняем ее с рандомной). Если кол-во перемешиваний меньше размера мешка, то игра усложнится (подсыпания приблизятся к последовательности 0,1,2,0,1,2... и будет сложнее матчить. Если кол-во перемешиваний = размеру мешка, то получаем полное перемешивание, т.е. абсолютно рандомную последовательность фишек. Ставить кол-во перемешиваний больше размера мешка нет смысла.<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]<br />
<br />
<br />
=Создание простейшего коллапса (классика)=<br />
<br />
Коллапс - самостоятельный обьект, и для создания простейшего коллапса не нужно никаких дополнительных обьектов. Создайте новый проект, и на сцену поместите пустой обьект, измените тип на коллапс.<br />
<br />
[[Файл:Tree.JPG]]<br />
<br />
Графику для игры коллапс можно скачать здесь: [[Media:Fishki.rar]] <br />
<br />
Сначала стоит рассчитать размеры поля. При создании обычного коллапса поле делают квадратным, а сверху добавляют еще один ряд для статических обьектов. Соответственно, размерность коллапса составит х*(х+1). Размер поля в пикселях должен соответствовать размеру фишки, умноженной на количество строк/столбцов.<br />
Создадим поле размером 12х13. Размеры нашей фишки в пикселях составляют 58х58, соответственно, размер нашего поля в пикслях составит 696*754.<br />
<br />
[[Файл:Size.JPG]]<br />
[[Файл:Size2.JPG]]<br />
<br />
Устанавливаем параметр "авторазмер" - авто.<br />
<br />
'''ОБРАТИТЕ ВНИМАНИЕ: Не надо загружать текстуры фишек в поле "фишки" во внешнем виде! Это делается отдельно в добавляемом свойстве "Графика фишки" отдельно для каждой фишки''' <br />
<br />
[[Файл:Grafika_fishki.JPG]]<br />
<br />
Добавьте графику для ваших фишек (один цвет - одна фишка), а также графику для статической фишки (которая будет находиться в верхнем ряду).<br />
<br />
== Перегрузка правил ==<br />
<br />
Теперь перегрузим правила для коллапса классического. Так как обьект collapse многоцелевой и с его помощью можно сделать несколько различных миниигр, мы установим правила, нужные для классического коллапса.<br />
<br />
[[Файл:Rules_classic.JPG]]<br />
<br />
Разберем поподробнее некоторые установленные параметры:<br />
<br />
* перегрузка - да<br />
:- для перегрузки правил необходимо уставить этот флаг;<br />
* номеров в фишках - 5<br />
:- это количество цветов и статических фишек, что у нас есть<br />
* номер бомбы/крестобомбы - -1<br />
:- будьте внимательны - изначально это значение стоит на 0, изза этого первый цветной блок у вас будет считаться бомбой, и при клике уничтожать все фишки своего цвета!<br />
:- ''в классическом коллапсе вообще не используются бомбы''<br />
* статический номер - 0<br />
:- это номер фишки, которая будет лежать на самом верхнем ряду, и которые надо опустить вниз<br />
'''Все, что касается пометки, не требуется для классического коллапса, так как в нем не нужно отмечать фишки.'''<br />
<br />
При установке номеров фишек для бомб и статических учтите, как нумеруется графика фишек.<br />
<br />
[[Файл:Graphics_num.JPG]]<br />
<br />
Самый верхний добавленный ресурс будет иметь номер 0, следующий за ним - 1 и далее по возрастанию.<br />
<br />
Перегрузим также и условия победы в нашей игре:<br />
<br />
[[Файл:Celi.JPG]]<br />
<br />
Так как условие победы в нашей игре - опустить все статические фишки на дно, то это мы и отметим, как цель игры.<br />
Обрабочтик победы добавляется так же, как и фишки - с помощью создания нового свойства:<br />
<br />
[[Файл:Win.JPG]]<br />
<br />
== Внешний вид ==<br />
<br />
Настроим внешний вид нашей игры.<br />
<br />
[[Файл:Vneshniy.JPG]]<br />
<br />
Некоторые параметры мы уже рассмотрели, немного об остальных:<br />
* сетка? - работает по каким-то собственным алгоритмам, поэтому иногда выглядит странно, можно ее просто не показывать<br />
* таймер - подключает таймер (можно установить ограничения по времени для решения коллапса)<br />
* счетчик статических - подключаем счетчик, который ведет учет статических элементов, которые еще не опущены ко дну коллапса<br />
* бомбы - в классическом коллапсе не используются<br />
<br />
Со временами всяких анимаций и появлений можете поэксперементировать сами или использовать вот эти:<br />
<br />
[[Файл:Vremena.JPG]]<br />
<br />
При генерации коллапс устанавливает блоки одинаковых фишек рядом, подчиняясь этим правилам:<br />
<br />
[[Файл:Generation.JPG]]<br />
<br />
Запустим получившуюся игру:<br />
<br />
[[Файл:Game.JPG]]<br />
<br />
Более глубокие механики и условия попробуйте проработать сами с помощью машин, меняйте состояния для коллапса с помощью кнопок и создавайте красивые игры!</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Lua&diff=9712Lua2018-10-03T07:50:18Z<p>Sadovoy: /* Функция изменения команды машины состояний */</p>
<hr />
<div>{{TOC right}}<br />
[[Lua]] - скриптовый язык программирования.<br />
<br />
== Введение ==<br />
<br />
Lua - динамически типизированный язык, предназначенный для использования в качестве расширения или в качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки.<br />
<br />
Используется для удобства вычислений и увеличения скорости исполнения кода.<br />
<br />
== Создание скрипта ==<br />
<br />
В машине состояний, выбрав добавляемое свойство, создаем или открываем уже существующий скрипт (edit script).<br />
<br />
При сохранении проекта в редакторе все скрипты объединяются в один файл scripts.lua, при этом удаляются все комментарии.<br />
<br />
При экспорте проекта остается только общий файл scripts.lua<br />
<br />
[[Файл:Edit_script.png]]<br />
<br />
== Основные функции ==<br />
<br />
При создании скриптов в первой вкладке всегда создается файл viewer.lua, где перечислен список доступных функций и параметров.<br />
<br />
Существует четыре вида функций для взаимодействия скрипта с машиной состояний:<br />
<br />
[[Файл:Func.png]]<br />
<br />
<br />
==='''Функции для работы с текстовой базой'''===<br />
<br />
:'''viewer.getResFromTxtDB(txtID,tp,defValue)''' - возвращает id (integer) графического ресурса текстового объекта с txtID. '''tp''' - номер картинки ( 0 - main, 1 - ico1 ...) ; <br />
<br />
:'''viewer.getStrFromTxtDB(txtID,sense,defValue)''' - возвращает строку (string) вытянутую из txtID с учётом локализации. '''sense''' - номер sense;<br />
<br />
С их помощью можно вытянуть иконку из текстовой базы и вытянуть текст по текущей локализации.<br />
<br />
<br />
==='''Функции для работы с таблицей'''===<br />
<br />
:'''function viewer.tableAddCellObj(tblID,objID,col,row)''' - помещает объект (objID) в таблицу (tblID), в координаты (col,row).<br />
<br />
:'''function viewer.tableClear(tblID)''' - очищает таблицу от элементов добавленных функцией viewer.tableAddCellObj(). Все элементы возвращаются обратно в исходного родителя ( кот. был до помещения в таблицу);<br />
<br />
''' Важно: если вы засовываете в таблицу клонов, то перед инитом таблицы - нужно ей передать viewer.tableClear(tblID). '''<br />
<br />
==='''Макрос ID("")'''===<br />
'''ID("control")''' - макросс, который возвращает ID объекта с именем "control" при сохранении проекта - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка <br />
<br />
[[Файл:Errorscript.png]]<br />
<br />
==='''Макрос TXT("") и RES("")'''===<br />
'''TXT("123456")''' - макросс, который при сохранении скриптов исчезнет (останется только число "123456"), но пройдёт валидация ресурса по id (в данном случае, поищет наличие текстовой ячейки в текстовой базе с id="123456"). Если id ресурса не валидный - всплывёт окно с ошибкой, где будет указано - "("123456")" и файл скрипта в котором найдено.<br />
<br />
'''TXT("123,456,789")''' - макросс-последовательность, идентичный обычному, но указываем n ресурсов через запятую ( превратится в "123,456,789").<br />
Макрос RES("") идентичен.<br />
<br />
==='''Функция изменения команды машины состояний'''===<br />
При необходимости в realtime изменять комманду машины состояний(применять только в случаях где без этого ну никак), можно воспользоватся данной функцией. Функция является аналогичной команде "Set" машины состояний: <br />
viewer.setMachineCommandParam(objID,mSt,mCmd,mCmdN,mPar,val)<br />
*'''objID''' - object ID (integer) изменяемой машины состояний; <br />
*'''mSt''' - state name (string);<br />
*'''mCmd''' - command name (string) or command type (integer);<br />
*'''mCmdN''' - command number (integer);<br />
*'''mPar''' - parameter name (string);<br />
*'''val''' - parameter value (string or number);<br />
<br />
В логе команда принтуется:<br />
* I/IScriptLanguageLUA IScriptViewerLUALib::setMachineCommandParam() viewer_setMachineCommandParam: obj(103)->mSt(state_spline)->mCmd(spline(0))->mPar(key) = -100, -100, 200, 200<br />
<br />
== Доступные библиотеки ==<br />
<br />
=== Базовая библиотека стандартных функций Lua (Basic Functions) ===<br />
<br />
Функции базовой библиотеки Lua размещаются в глобальном контексте.<br />
<br />
В базовую библиотеку входят следующие функции:<br />
<br />
*'''assert (v [, message])''' - Генерирует ошибку с необязательным сообщением об ошибке, если значение первого аргумента false или nil.<br />
<br />
*'''collectgarbage ([opt [, arg]])''' - Обеспечивает интерфейс к сборщику мусора. Первый аргумент определяет выполняемое действие (остановка, запуск сборщика мусора, выполнение сборки мусора и др.).<br />
<br />
*'''error (message [, level])''' - Завершает выполнение последней функции, вызванной в защищённом режиме, с заданным сообщением об ошибке.<br />
<br />
*'''getfenv''' - Возвращает таблицу контекста заданной функции. Аргумент, определяющий функцию, может быть как, собственно, Lua-функцией, так и числом, определяющим уровень стека, на котором расположена функция. Если он равен 0, возвращается глобальный контекст.<br />
<br />
*'''getmetatable (object)''' - Если объект не имеет метатаблицы, возвращает nil. Иначе, если в метатаблице есть поле __metatable, возвращает значение этого поля. В противном случае возвращает метатаблицу объекта.<br />
<br />
*'''ipairs (t)''' - Возвращает итератор, таблицу и 0. Возвращаемый итератор проходит таблицу по целочисленным индексам от значения 1 до первого индекса со значением nil. Итератор возвращает текущий индекс и соответствующее ему значение.<br />
<br />
*'''next (table [, index])''' - Возвращает следующий (после заданного) индекс в таблице и соответствующее ему значение. Позволяет последовательно получить все поля таблицы.<br />
<br />
*'''pairs (t)''' - Возвращает итератор next(), таблицу и nil. Возвращаемый итератор проходит таблицу по всем значениям индекса. Итератор возвращает текущий индекс и соответствующее ему значение.<br />
<br />
*'''pcall (f [, arg1, ···])''' - Вызывает заданную функцию с аргументами в защищённом режиме. Возвращает статус успешности выполнения.<br />
<br />
*'''rawequal (v1, v2)''' - Сравнивает два объекта, без вызова каких-либо метаметодов. Возвращает значение типа boolean.<br />
<br />
*'''rawget (table, index)''' - Возвращает реальное значение с заданным индексом из таблицы, без вызова каких-либо метаметодов.<br />
<br />
*'''rawset (table, index, value)''' - Помещает значение в поле таблицы с заданным индексом, без вызова каких-либо метаметодов.<br />
<br />
*'''select (index, ···)''' - Если первый аргумент функции имеет числовое значение, возвращаются все аргументы, следующие за аргументом с этим номером. Если первый аргумент — строка ’#’, возвращается общее число полученных аргументов.<br />
<br />
*'''setfenv''' - Устанавливает таблицу в качестве контекста для заданной функции. Аргумент, задающий функцию, может быть числом, определяющим положение функции на стеке вызовов. Если он равен 0, устанавливается глобальный контекст текущего потока.<br />
<br />
*'''setmetatable (table, metatable)''' - Устанавливает (удаляет) метатаблицу для данной таблицы. Если метатаблица содержит поле __metatable, генерирует ошибку.<br />
<br />
*'''tonumber (e [, base])''' - Пытается конвертировать аргумент в число. Если конвертирование не удаётся, возвращает nil.<br />
<br />
*'''tostring (v)''' - Преобразует аргумент любого типа в строку.<br />
<br />
*'''type (v)''' - Возвращает тип аргумента в виде строки.<br />
<br />
*'''unpack''' - Возвращает элементы из заданной таблицы.<br />
<br />
*'''xpcall (f, msgh [, arg1, ···])''' Вызывает заданную функцию в защищённом режиме. В отличие от pcall, позволяет установить обработчик ошибок. Не поддерживает передачу аргументов в функцию.<br />
<br />
=== Библиотека для работы со строками Lua (String Manipulation) ===<br />
<br />
Все функции для работы со строками собраны в таблице string. Поэтому для вызова функций используется запись вида:<br />
string.имя_функции(...)<br />
<br />
*'''string.len (s)''' - Возвращает длину строки.<br />
<br />
*'''string.rep (s, n [, sep])''' - Возвращает строку, содержащую указанное число копий исходной строки.<br />
<br />
*'''string.lower (s)''' - Заменяет все прописные буквы в строке на строчные.<br />
<br />
*'''string.upper (s)''' - Заменяет в строке все строчные буквы на прописные.<br />
<br />
*'''string.reverse (s)''' - Возвращает строку, в которой символы исходной строки расположены в обратном порядке.<br />
<br />
*'''string.format (formatstring, ···)''' - Генерирует строку по форматной строке и аргументам по правилам, принятым в языке C.<br />
<br />
*'''string.byte (s [, i [, j]])''' - Возвращает числовые коды символов строки.<br />
<br />
*'''string.char (···)''' - Преобразует набор числовых кодов символов в строку.<br />
<br />
*'''string.find (s, pattern [, init [, plain]])''' - Выполняет поиск в строке первого вхождения подстроки, соответствующей заданному шаблону. Возвращает индексы начального и конечного символов найденной подстроки.<br />
<br />
*'''string.match (s, pattern [, init])''' - Выполняет поиск в строке первого вхождения подстроки, соответствующей заданному шаблону. Возвращает найденную подстроку.<br />
<br />
*'''string.gmatch (s, pattern)''' - Возвращает итератор, который на каждой итерации возвращает подстроку, соответствующую заданному шаблону.<br />
<br />
*'''string.sub (s, i [, j])''' - Возвращает подстроку исходной строки.<br />
<br />
*'''string.gsub (s, pattern, repl [, n])''' - Возвращает копию исходной строки, в которой все вхождения шаблона заменены на строку, заданную третьим аргументом. Этот аргумент может быть строкой, таблицей или функцией.<br />
<br />
*'''string.dump (function [, strip])''' - Возвращает строку, содержащую двоичное представление функции Lua с заданным именем.<br />
<br />
=== Библиотека для работы с таблицами Lua (Table Manipulation) ===<br />
<br />
Все функции для работы с таблицами собраны в таблице table. Для вызова функций используется запись вида:<br />
table.имя_функции(...)<br />
<br />
*'''table.insert (list, [pos,] value)''' - Вставляет элемент в заданную позицию таблицы, сдвигая остальные элементы таблицы вправо.<br />
<br />
*'''table.remove (list [, pos])''' - Удаляет заданный элемент таблицы, сдвигая остальные элементы влево. Возвращает значение удалённого элемента.<br />
<br />
*'''table.sort (list [, comp])''' - Сортирует элементы таблицы в заданном порядке. Вторым аргументом может быть задана функция, которая будет использована вместо стандартного оператора «<» для сравнения элементов в процессе сортировки.<br />
<br />
*'''table.concat (list [, sep [, i [, j]]])''' - Выполняет склейку указанных элементов массива через заданный разделитель. По умолчанию разделителем является пустая строка.<br />
<br />
=== Математическая библиотека Lua (Mathematical Functions) ===<br />
<br />
Математические функции собраны в таблице math. Для вызова функций используется запись вида:<br />
math.имя_функции(...)<br />
<br />
*'''math.abs (x)''' - Возвращает модуль числа.<br />
<br />
*'''math.ceil (x)''' - Возвращает наименьшее целое число, большее или равное заданному (выполняет округление «вверх»).<br />
<br />
*'''math.floor (x)''' - Возвращает наибольшее целое число, меньшее или равное заданному (выполняет округление «вниз»).<br />
<br />
*'''math.max (x, ···)''' - Возвращает максимальный из аргументов.<br />
<br />
*'''math.min (x, ···)''' - Возвращает минимальный из аргументов.<br />
<br />
*'''math.fmod (x, y)''' - Возвращает остаток от деления одного числа на другое.<br />
<br />
*'''math.modf (x)''' - Возвращает целую и дробную части исходного числа.<br />
<br />
*'''pow''' - Возводит число в степень. Вместо вызова функции возможно использование выражения вида x^y.<br />
<br />
*'''math.sqrt (x)''' - Вычисляет квадратный корень числа. Вместо вызова функции возможно использование выражения вида x^0.5.<br />
<br />
*'''math.exp (x)''' - Возвращает eх.<br />
<br />
*'''math.log (x [, base])''' - Вычисляет натуральный логарифм.<br />
<br />
*'''log10''' - Вычисляет логарифм по основанию 10.<br />
<br />
*'''math.cos (x)''' - Вычисляет косинус угла, заданного в радианах.<br />
<br />
*'''math.sin (x)''' - Вычисляет синус угла, заданного в радианах.<br />
<br />
*'''math.tan (x)''' - Вычисляет тангенс угла, заданного в радианах.<br />
<br />
*'''cosh''' - Вычисляет гиперболический косинус.<br />
<br />
*'''sinh''' - Вычисляет гиперболический синус.<br />
<br />
*'''tanh''' - Вычисляет гиперболический тангенс.<br />
<br />
*'''math.acos (x)''' - Вычисляет арккосинус (в радианах).<br />
<br />
*'''math.asin (x)''' - Вычисляет арксинус (в радианах).<br />
<br />
*'''math.atan (y [, x])''' - Вычисляет арктангенс (в радианах).<br />
<br />
*'''atan2''' - Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. Также корректно обрабатывает случай когда y равен нулю.<br />
<br />
*'''math.deg (x)''' - Переводит величину угла из радиан в градусы.<br />
<br />
*'''math.rad (x)''' - Переводит величину угла из градусов в радианы.<br />
<br />
*'''math.random ([m [, n]])''' - Функция, вызванная без аргументов, возвращает псевдослучайное число из интервала [0, 1). Эта же функция, вызванная с аргументом n, возвращает целое псевдослучайное число из интервала [1, n]. Эта же функция, вызванная с двумя аргументами l, u возвращает целое псевдослучайное число из интервала [l, u].<br />
<br />
*'''math.randomseed (x)''' - Устанавливает стартовое число генератора псевдослучайных чисел.<br />
<br />
=== Библиотека для доступа к средствам OC(Operating System Facilities) ===<br />
<br />
Функции, обеспечивающие доступ к средствам операционной системы, собраны в таблице os. Для вызова функций используется запись вида:<br />
os.имя_функции(...). Можно использовать при форматировании времени.<br />
<br />
*'''os.date ([format [, time]])''' - Возвращает строку или таблицу, содержащую дату и время, отформатированные в соответствии с заданными параметрами. При вызове функции без параметров, возвращает текущий файл ввода по умолчанию. В случае ошибок, данная функция возбуждает ошибку вместо того, чтобы возвратить код ошибки.<br />
<br />
*'''os.difftime (t2, t1)''' - Возвращает число секунд, прошедшее от времени t1 до времени t2.<br />
<br />
*'''os.time ([table])''' - Возвращает текущее время при вызове без аргументов, или время и дату, указанные в передаваемой таблице. Эта таблица должна иметь поля year, month, и day, и может иметь поля hour, min, sec, и isdst.<br />
<br />
=== The Debug Library ===<br />
<br />
Эта библиотека обеспечивает отладку программам Lua. <br />
<br />
*'''debug.debug ()''' - Переходит в интерактивный режим, выполняя все команды, которые вводит пользователь. Используя простые команды и другие средства отладки, пользователь может получать значения глобальных и локальных переменных, изменять их значения, получать значения выражений, и т.д. Строка, содержащая только слово cont, завершает выполнение функции, т.о. вызвавшая программа продолжает выполнение. Команды для функции debug.debug лексически не вложены ни в какую функцию, т.о. не имеют прямого доступа к локальным переменным.<br />
<br />
*'''debug.gethook ([thread])''' - Возвращает текущие настройки перехвата (hook settings) нити (thread), как три значения: текущая функция перехвата, текущая маска перехвата, и текущее количество перехватов (hook count) (в соответствии с параметрами, установленными функцией debug.sethook).<br />
<br />
*'''debug.getinfo ([thread,] f [, what])''' - Возвращает таблицу с информацией о функции. Вы можете задать функцию непосредственно, или вы можете задать номер функции, который соответствует функции, запущенной на уровне function стека вызововзаданной нити: уровень 0 соответствует текущей функции (getinfo непосредственно); уровень 1 – это функция, которая вызвала getinfo; и т.д. Если в параметре function задано число, большее, чем количество запущенных функций, то getinfo возвращает nil.<br />
<br />
*'''debug.getlocal ([thread,] f, local)''' - Данная функция возвращает имя и значение локальной переменной с индексом local функции на уровне level стека. (Первая локальная переменная функции имеет индекс 1, и т.д., вплоть до последней локальной переменной.)<br />
<br />
*'''debug.getmetatable (value)''' - Возвращает метатаблицу заданного объекта object или nil если объект не имеет метатаблицы.<br />
<br />
*'''debug.getregistry ()''' - Возвращает таблицу реестра (регистра???) (registry table)<br />
<br />
*'''debug.getupvalue (f, up)''' - Данная функция возвращает имя и значение внешней локальной переменной (upvalue) с индексом up функции func. Функция возвращает nil если не существует внешней локальной переменной (upvalue) с заданным индексом.<br />
<br />
*'''debug.getuservalue (u)''' - Возвращает значение, связанное с (u). Если (u) - это не пользовательские данные, возвращает ноль.<br />
<br />
*'''debug.sethook ([thread,] hook, mask [, count])''' - Делает данную функцию функцией перехвата (hook).<br />
<br />
*'''debug.setlocal ([thread,] level, local, value)''' - Эта функция присваивает значение value локальной переменной с индексом local функции на уровне level стека. Функция возвращает nil, если не существует переменной с данным индексом, и возбуждает ошибку при вызове с уровнем level, выходящем за границы стека. <br />
<br />
*'''debug.setmetatable (value, table)''' - Изменяет метатаблицу заданного объекта object на таблицу table (которая также может быть nil).<br />
<br />
*'''debug.setupvalue (f, up, value)''' - Данная функция присваивает значение value локальной внешней переменной (upvalue) с индексом up функции func. Функция возвращает nil, если не существует локальной внешней переменной (upvalue) с данным индексом. В противном случае, возвращает имя локальной внешней переменной (upvalue).<br />
<br />
*'''debug.traceback ([thread,] [message [, level]])''' - Возвращает строку со следом (traceback) стека вызовов. Опциональный параметр message добавляется в начало следа. Опциональный параметр level – число, обозначающее уровень, с которого необходимо начинать след (traceback) (значение по умолчанию равно 1, т.е. соответствует функции, вызывающей traceback).<br />
<br />
<br />
Все доступные библиотеки можно найти в Разделах Basic Functions, String Manipulation, Table Manipulation, Mathematical Functions, Operating System Facilities (только date, difftime, time), Debug Library на сайте: http://www.lua.org/manual/5.3/manual.html#6.7<br />
<br />
== Отладка ==<br />
<br />
'''print(e1, e2, ...)'''<br />
Печатает значения аргументов. В конце выводится перевод строки. Эта функция не предназначена для форматного вывода, а только для быстрого (отладочного) вывода значений переменных.<br />
<br />
<br />
'''В app.icf при установке<br />
<br />
[GameTrace]<br />
<br />
Level="Verbose"'''<br />
<br />
В логе у нас появятся данные из скриптов со всеми операциями:<br />
<br />
D/IScript IScript::callScriptMethod() callScriptMethod: "lottery_scpt:init"<br />
<br />
D/IScript viewer_getResFromTxtDB() viewer.getResFromTxtDB(5670,0,666)->666<br />
<br />
<br />
[[Файл:Self2.png]]<br />
<br />
== Пример использования ==<br />
<br />
Рассмотрим пример использования скрипта для написания программы Калькулятор<br />
<br />
[[Файл:Project.png]] <br />
<br />
Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные: <br />
<br />
[[Файл:Self.png]]<br />
<br />
'''1.''' По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние pressedDigit:<br />
<br />
[[Файл:0digit.png]]<br />
<br />
При вызове состояния pressedDigit скрипт '''вызывает функцию pressedDigit():'''<br />
<br />
Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку).<br />
<br />
[[Файл:Presseddigit.png]]<br />
<br />
'''2.''' Аналогично по тапу на кнопки операторов записываем параметр и '''вызываем функцию pressedOperator()''':<br />
<br />
[[Файл:Operator.png]]<br />
<br />
[[Файл:Oper.png]]<br />
<br />
'''3. Вызов функции pressedRavnо()''', вычисление и вывод результата:<br />
<br />
[[Файл:Ravno.png]]<br />
<br />
[[Файл:Res2.png]]<br />
<br />
== Тонкости LUA + Viewer ==<br />
<br />
=== viewer.changeObjState() + локальные переменные ===<br />
<br />
При переводе объекта в новое состояние функцией viewer.changeObjState() у нас происходит выход из скрипта, и выполнение инструкций объекта, после окончания инструкций объекта, управление возвращается в скрипт. Но все локальные переменные теряют свои значения и являются nil.<br />
<br />
Чтобы такого не было нужно использовать self параметры или глобальные. <br />
К примеру вот так : [[Файл:2aa3540a7e.jpg]]<br />
<br />
<br />
<br />
----<br />
<br />
== Right Style ==<br />
Далее описан правильный и очень удобный стиль оформления LUA скрипта.<br />
Рекомендации:<br />
*1) Самой первой функцией в скрипте д.б. "init" - в которой мы должны про инициализировать все "self" параметры (да, именно - '''все'''). Нужно для того чтобы просмотрев функцию инит - узнать какие переменные хранит объект и что они означают<br />
*2) Каждая "self" или глобальная переменная должны быть прокомментированы в месте обьявления <br />
:self.packState = -1 -- состояние пака, 0 - не существует; 1 - не скачан; 2 - в процессе закачки; 3 - всё норм<br />
*3) Второй функцией в скрипте д.б. "state" - в которой мы указываем интерфейс класса (скрипта). Посмотрев на данную функцию можно узнать, какие методы (состояния), мы можем вызывать из вьювера;<br />
:П.С. Не д.б. функций объявленных внутри интерфейса (внутри функции "state") - портит читабельность методов;<br />
::Также не забываем об принтовании ошибки в интерфейсе класса - если не нашли метод;<br />
[[Файл:Lua metods error.jpg|700px]]<br />
<br />
*4) Все пространства кода должны правильно форматироваться табуляцией (уровни вложенности), каждому последующему уровню - добавляем одну табуляцию в начало строки;<br />
Таким образом достигается отличная читабельность кода.<br />
<br />
*5) Все входные данные из вьювера - должны валидироваться (проверятся на адекватность). Связано с тем, что из лейаута, мы можем очень легко задать невалидное значение. К примеру попросить открыть акцию с номером 1000, хотя такой акции нет. <br />
В случае нахождения ошибки - мы должны принтовать ошибку с описанием "ERROR - описание" и просто её скипать. <br />
Т.е. не обрабатываем некорректные данные ( лучше не вызвать некорректную логику, чем завалить вьювер; т.к. вы не знаете, когда у кого воспроизведётся бага))) ). <br />
<br />
*6) Между каждой функцией нужно добавлять строку символов ('-'; 80 символов); строку с описанием работы функции; строку с описанием аргументов функции(если они не очевидные)<br />
:"---------------------------------------------------------------------------------------------" <br />
:"-- возвращаем уровень который может получить игрок"<br />
:"-- index - индекс аччивки self.Ach"<br />
[[Файл:Lua scoped func.jpg|700px]]<br />
<br />
*7) Принтование вызова функции и значений аргументов (исключение функции которые вызываются очень часто - и в них принтование не имеет смысла);<br />
:function obj_awlMngr:state(state,guestID)<br />
::print("obj_awlMngr:state("..state..","..guestID..")")<br />
<br />
:П.С. '''принтовать массивы и nil значения - мы не можем'''(валится вьювер). Поэтому можно сделать вот так(в проекте Hidden365 так реализовано):<br />
[[Файл:Lua get argum .jpg|700px]]<br />
<br />
<br />
Использование:<br />
<br />
[[Файл:Lua get argum using.jpg|700px]]<br />
<br />
:Таким способом, достаточно удобно принтуются одномерные массивы и nil value:<br />
** одномерный массив:<br />
::obj__BASE:notificationManage(Ar_txtID:[#4:1:9188,2:9189,3:9190,4:9191],str:1day,time:86400)<br />
** nil:<br />
::obj_AnimMngr:clone_locate(clone_array:[#1:1:13545],type_locate:1,x_:10,y_:-10,scaleStart:nil,scaleEnd:nil)<br />
** двухмерный массив:<br />
::obj_Sales:Templated_dropRewardCom(Ar_coord:[#2:1:[#2:1:-100,2:100],2:[#2:1:50,2:100]],num:1,clone_need:20,w:160,h:160)<br />
<br />
*8) Очень полезно, создать скрипт с именем "obj__BASE" в котором объявить все глобальные переменные используемые в проекте. В него же можно добавить функции, которые являются специфическими для данного проекта и могут вызываться из разных мест(или разовые функции). <br />
<br />
*9) Удобно создать скрипт с именем "obj__COM" в котором собраны универсальные функции - которые не завязываются к текущему проекту и могут быть использованы везде:<br />
:: Функции принтования аргументов;<br />
:: Функции сливания массивов в один;<br />
:: Функции поворота точки на угол;<br />
:: Функции выдавания ресурса из текста;<br />
:: И д.р.<br />
<br />
<br />
В итоге получается вот такие скрипты:<br />
<br />
[[Файл:Lua right style.jpg|700px]]<br />
<br />
== Пример реализации ==<br />
<br />
[http://fs5.absolutist.com/files/wikisample/proj_LUA.zip Download]<br />
<br />
<br />
[[Category:Main objects]]<br />
<br />
== Литература ==<br />
<br />
1. Официальный сайт Lua - http://www.lua.org/home.html<br />
<br />
2. http://tylerneylon.com/a/learn-lua/<br />
<br />
3. http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua<br />
<br />
4. Программа - интерпретатор для работы со скриптами Lua - ZeroBrane Studio: http://studio.zerobrane.com/</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Lua&diff=9711Lua2018-10-03T07:49:53Z<p>Sadovoy: /* Основные функции */</p>
<hr />
<div>{{TOC right}}<br />
[[Lua]] - скриптовый язык программирования.<br />
<br />
== Введение ==<br />
<br />
Lua - динамически типизированный язык, предназначенный для использования в качестве расширения или в качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки.<br />
<br />
Используется для удобства вычислений и увеличения скорости исполнения кода.<br />
<br />
== Создание скрипта ==<br />
<br />
В машине состояний, выбрав добавляемое свойство, создаем или открываем уже существующий скрипт (edit script).<br />
<br />
При сохранении проекта в редакторе все скрипты объединяются в один файл scripts.lua, при этом удаляются все комментарии.<br />
<br />
При экспорте проекта остается только общий файл scripts.lua<br />
<br />
[[Файл:Edit_script.png]]<br />
<br />
== Основные функции ==<br />
<br />
При создании скриптов в первой вкладке всегда создается файл viewer.lua, где перечислен список доступных функций и параметров.<br />
<br />
Существует четыре вида функций для взаимодействия скрипта с машиной состояний:<br />
<br />
[[Файл:Func.png]]<br />
<br />
<br />
==='''Функции для работы с текстовой базой'''===<br />
<br />
:'''viewer.getResFromTxtDB(txtID,tp,defValue)''' - возвращает id (integer) графического ресурса текстового объекта с txtID. '''tp''' - номер картинки ( 0 - main, 1 - ico1 ...) ; <br />
<br />
:'''viewer.getStrFromTxtDB(txtID,sense,defValue)''' - возвращает строку (string) вытянутую из txtID с учётом локализации. '''sense''' - номер sense;<br />
<br />
С их помощью можно вытянуть иконку из текстовой базы и вытянуть текст по текущей локализации.<br />
<br />
<br />
==='''Функции для работы с таблицей'''===<br />
<br />
:'''function viewer.tableAddCellObj(tblID,objID,col,row)''' - помещает объект (objID) в таблицу (tblID), в координаты (col,row).<br />
<br />
:'''function viewer.tableClear(tblID)''' - очищает таблицу от элементов добавленных функцией viewer.tableAddCellObj(). Все элементы возвращаются обратно в исходного родителя ( кот. был до помещения в таблицу);<br />
<br />
''' Важно: если вы засовываете в таблицу клонов, то перед инитом таблицы - нужно ей передать viewer.tableClear(tblID). '''<br />
<br />
==='''Макрос ID("")'''===<br />
'''ID("control")''' - макросс, который возвращает ID объекта с именем "control" при сохранении проекта - сделано для удобства переноса скриптов из одного проекта в другой, не подвязываясь к ID объекта. НО, при импорте скрипта в другой проект важно проверять наличие объектов с таким же именем. Их быть не должно! В противном случае при сохранении проекта в редакторе будет выдаваться ошибка <br />
<br />
[[Файл:Errorscript.png]]<br />
<br />
==='''Макрос TXT("") и RES("")'''===<br />
'''TXT("123456")''' - макросс, который при сохранении скриптов исчезнет (останется только число "123456"), но пройдёт валидация ресурса по id (в данном случае, поищет наличие текстовой ячейки в текстовой базе с id="123456"). Если id ресурса не валидный - всплывёт окно с ошибкой, где будет указано - "("123456")" и файл скрипта в котором найдено.<br />
<br />
'''TXT("123,456,789")''' - макросс-последовательность, идентичный обычному, но указываем n ресурсов через запятую ( превратится в "123,456,789").<br />
Макрос RES("") идентичен.<br />
<br />
==='''Функция изменения команды машины состояний'''===<br />
При необходимости в realtime изменять комманду машины состояний(применять только в случаях где без этого ну никак), можно воспользоватся данной функцией. Функция является аналогичной команде "Set" машины состояний: <br />
viewer.setMachineCommandParam(objID,mSt,mCmd,mCmdN,mPar,val)<br />
*'''objID''' - object ID (integer) изменяемой машины состояний; <br />
*'''mSt''' - state name (string);<br />
*'''mCmd''' - command name (string) or command type (integer);<br />
*'''mCmdN''' - command number (integer);<br />
*'''mPar''' - parameter name (string);<br />
*'''val''' - parameter value (string or number);<br />
<br />
В логе команда принтуется:<br />
I/IScriptLanguageLUA IScriptViewerLUALib::setMachineCommandParam() viewer_setMachineCommandParam: obj(103)->mSt(state_spline)->mCmd(spline(0))->mPar(key) = -100, -100, 200, 200<br />
<br />
== Доступные библиотеки ==<br />
<br />
=== Базовая библиотека стандартных функций Lua (Basic Functions) ===<br />
<br />
Функции базовой библиотеки Lua размещаются в глобальном контексте.<br />
<br />
В базовую библиотеку входят следующие функции:<br />
<br />
*'''assert (v [, message])''' - Генерирует ошибку с необязательным сообщением об ошибке, если значение первого аргумента false или nil.<br />
<br />
*'''collectgarbage ([opt [, arg]])''' - Обеспечивает интерфейс к сборщику мусора. Первый аргумент определяет выполняемое действие (остановка, запуск сборщика мусора, выполнение сборки мусора и др.).<br />
<br />
*'''error (message [, level])''' - Завершает выполнение последней функции, вызванной в защищённом режиме, с заданным сообщением об ошибке.<br />
<br />
*'''getfenv''' - Возвращает таблицу контекста заданной функции. Аргумент, определяющий функцию, может быть как, собственно, Lua-функцией, так и числом, определяющим уровень стека, на котором расположена функция. Если он равен 0, возвращается глобальный контекст.<br />
<br />
*'''getmetatable (object)''' - Если объект не имеет метатаблицы, возвращает nil. Иначе, если в метатаблице есть поле __metatable, возвращает значение этого поля. В противном случае возвращает метатаблицу объекта.<br />
<br />
*'''ipairs (t)''' - Возвращает итератор, таблицу и 0. Возвращаемый итератор проходит таблицу по целочисленным индексам от значения 1 до первого индекса со значением nil. Итератор возвращает текущий индекс и соответствующее ему значение.<br />
<br />
*'''next (table [, index])''' - Возвращает следующий (после заданного) индекс в таблице и соответствующее ему значение. Позволяет последовательно получить все поля таблицы.<br />
<br />
*'''pairs (t)''' - Возвращает итератор next(), таблицу и nil. Возвращаемый итератор проходит таблицу по всем значениям индекса. Итератор возвращает текущий индекс и соответствующее ему значение.<br />
<br />
*'''pcall (f [, arg1, ···])''' - Вызывает заданную функцию с аргументами в защищённом режиме. Возвращает статус успешности выполнения.<br />
<br />
*'''rawequal (v1, v2)''' - Сравнивает два объекта, без вызова каких-либо метаметодов. Возвращает значение типа boolean.<br />
<br />
*'''rawget (table, index)''' - Возвращает реальное значение с заданным индексом из таблицы, без вызова каких-либо метаметодов.<br />
<br />
*'''rawset (table, index, value)''' - Помещает значение в поле таблицы с заданным индексом, без вызова каких-либо метаметодов.<br />
<br />
*'''select (index, ···)''' - Если первый аргумент функции имеет числовое значение, возвращаются все аргументы, следующие за аргументом с этим номером. Если первый аргумент — строка ’#’, возвращается общее число полученных аргументов.<br />
<br />
*'''setfenv''' - Устанавливает таблицу в качестве контекста для заданной функции. Аргумент, задающий функцию, может быть числом, определяющим положение функции на стеке вызовов. Если он равен 0, устанавливается глобальный контекст текущего потока.<br />
<br />
*'''setmetatable (table, metatable)''' - Устанавливает (удаляет) метатаблицу для данной таблицы. Если метатаблица содержит поле __metatable, генерирует ошибку.<br />
<br />
*'''tonumber (e [, base])''' - Пытается конвертировать аргумент в число. Если конвертирование не удаётся, возвращает nil.<br />
<br />
*'''tostring (v)''' - Преобразует аргумент любого типа в строку.<br />
<br />
*'''type (v)''' - Возвращает тип аргумента в виде строки.<br />
<br />
*'''unpack''' - Возвращает элементы из заданной таблицы.<br />
<br />
*'''xpcall (f, msgh [, arg1, ···])''' Вызывает заданную функцию в защищённом режиме. В отличие от pcall, позволяет установить обработчик ошибок. Не поддерживает передачу аргументов в функцию.<br />
<br />
=== Библиотека для работы со строками Lua (String Manipulation) ===<br />
<br />
Все функции для работы со строками собраны в таблице string. Поэтому для вызова функций используется запись вида:<br />
string.имя_функции(...)<br />
<br />
*'''string.len (s)''' - Возвращает длину строки.<br />
<br />
*'''string.rep (s, n [, sep])''' - Возвращает строку, содержащую указанное число копий исходной строки.<br />
<br />
*'''string.lower (s)''' - Заменяет все прописные буквы в строке на строчные.<br />
<br />
*'''string.upper (s)''' - Заменяет в строке все строчные буквы на прописные.<br />
<br />
*'''string.reverse (s)''' - Возвращает строку, в которой символы исходной строки расположены в обратном порядке.<br />
<br />
*'''string.format (formatstring, ···)''' - Генерирует строку по форматной строке и аргументам по правилам, принятым в языке C.<br />
<br />
*'''string.byte (s [, i [, j]])''' - Возвращает числовые коды символов строки.<br />
<br />
*'''string.char (···)''' - Преобразует набор числовых кодов символов в строку.<br />
<br />
*'''string.find (s, pattern [, init [, plain]])''' - Выполняет поиск в строке первого вхождения подстроки, соответствующей заданному шаблону. Возвращает индексы начального и конечного символов найденной подстроки.<br />
<br />
*'''string.match (s, pattern [, init])''' - Выполняет поиск в строке первого вхождения подстроки, соответствующей заданному шаблону. Возвращает найденную подстроку.<br />
<br />
*'''string.gmatch (s, pattern)''' - Возвращает итератор, который на каждой итерации возвращает подстроку, соответствующую заданному шаблону.<br />
<br />
*'''string.sub (s, i [, j])''' - Возвращает подстроку исходной строки.<br />
<br />
*'''string.gsub (s, pattern, repl [, n])''' - Возвращает копию исходной строки, в которой все вхождения шаблона заменены на строку, заданную третьим аргументом. Этот аргумент может быть строкой, таблицей или функцией.<br />
<br />
*'''string.dump (function [, strip])''' - Возвращает строку, содержащую двоичное представление функции Lua с заданным именем.<br />
<br />
=== Библиотека для работы с таблицами Lua (Table Manipulation) ===<br />
<br />
Все функции для работы с таблицами собраны в таблице table. Для вызова функций используется запись вида:<br />
table.имя_функции(...)<br />
<br />
*'''table.insert (list, [pos,] value)''' - Вставляет элемент в заданную позицию таблицы, сдвигая остальные элементы таблицы вправо.<br />
<br />
*'''table.remove (list [, pos])''' - Удаляет заданный элемент таблицы, сдвигая остальные элементы влево. Возвращает значение удалённого элемента.<br />
<br />
*'''table.sort (list [, comp])''' - Сортирует элементы таблицы в заданном порядке. Вторым аргументом может быть задана функция, которая будет использована вместо стандартного оператора «<» для сравнения элементов в процессе сортировки.<br />
<br />
*'''table.concat (list [, sep [, i [, j]]])''' - Выполняет склейку указанных элементов массива через заданный разделитель. По умолчанию разделителем является пустая строка.<br />
<br />
=== Математическая библиотека Lua (Mathematical Functions) ===<br />
<br />
Математические функции собраны в таблице math. Для вызова функций используется запись вида:<br />
math.имя_функции(...)<br />
<br />
*'''math.abs (x)''' - Возвращает модуль числа.<br />
<br />
*'''math.ceil (x)''' - Возвращает наименьшее целое число, большее или равное заданному (выполняет округление «вверх»).<br />
<br />
*'''math.floor (x)''' - Возвращает наибольшее целое число, меньшее или равное заданному (выполняет округление «вниз»).<br />
<br />
*'''math.max (x, ···)''' - Возвращает максимальный из аргументов.<br />
<br />
*'''math.min (x, ···)''' - Возвращает минимальный из аргументов.<br />
<br />
*'''math.fmod (x, y)''' - Возвращает остаток от деления одного числа на другое.<br />
<br />
*'''math.modf (x)''' - Возвращает целую и дробную части исходного числа.<br />
<br />
*'''pow''' - Возводит число в степень. Вместо вызова функции возможно использование выражения вида x^y.<br />
<br />
*'''math.sqrt (x)''' - Вычисляет квадратный корень числа. Вместо вызова функции возможно использование выражения вида x^0.5.<br />
<br />
*'''math.exp (x)''' - Возвращает eх.<br />
<br />
*'''math.log (x [, base])''' - Вычисляет натуральный логарифм.<br />
<br />
*'''log10''' - Вычисляет логарифм по основанию 10.<br />
<br />
*'''math.cos (x)''' - Вычисляет косинус угла, заданного в радианах.<br />
<br />
*'''math.sin (x)''' - Вычисляет синус угла, заданного в радианах.<br />
<br />
*'''math.tan (x)''' - Вычисляет тангенс угла, заданного в радианах.<br />
<br />
*'''cosh''' - Вычисляет гиперболический косинус.<br />
<br />
*'''sinh''' - Вычисляет гиперболический синус.<br />
<br />
*'''tanh''' - Вычисляет гиперболический тангенс.<br />
<br />
*'''math.acos (x)''' - Вычисляет арккосинус (в радианах).<br />
<br />
*'''math.asin (x)''' - Вычисляет арксинус (в радианах).<br />
<br />
*'''math.atan (y [, x])''' - Вычисляет арктангенс (в радианах).<br />
<br />
*'''atan2''' - Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. Также корректно обрабатывает случай когда y равен нулю.<br />
<br />
*'''math.deg (x)''' - Переводит величину угла из радиан в градусы.<br />
<br />
*'''math.rad (x)''' - Переводит величину угла из градусов в радианы.<br />
<br />
*'''math.random ([m [, n]])''' - Функция, вызванная без аргументов, возвращает псевдослучайное число из интервала [0, 1). Эта же функция, вызванная с аргументом n, возвращает целое псевдослучайное число из интервала [1, n]. Эта же функция, вызванная с двумя аргументами l, u возвращает целое псевдослучайное число из интервала [l, u].<br />
<br />
*'''math.randomseed (x)''' - Устанавливает стартовое число генератора псевдослучайных чисел.<br />
<br />
=== Библиотека для доступа к средствам OC(Operating System Facilities) ===<br />
<br />
Функции, обеспечивающие доступ к средствам операционной системы, собраны в таблице os. Для вызова функций используется запись вида:<br />
os.имя_функции(...). Можно использовать при форматировании времени.<br />
<br />
*'''os.date ([format [, time]])''' - Возвращает строку или таблицу, содержащую дату и время, отформатированные в соответствии с заданными параметрами. При вызове функции без параметров, возвращает текущий файл ввода по умолчанию. В случае ошибок, данная функция возбуждает ошибку вместо того, чтобы возвратить код ошибки.<br />
<br />
*'''os.difftime (t2, t1)''' - Возвращает число секунд, прошедшее от времени t1 до времени t2.<br />
<br />
*'''os.time ([table])''' - Возвращает текущее время при вызове без аргументов, или время и дату, указанные в передаваемой таблице. Эта таблица должна иметь поля year, month, и day, и может иметь поля hour, min, sec, и isdst.<br />
<br />
=== The Debug Library ===<br />
<br />
Эта библиотека обеспечивает отладку программам Lua. <br />
<br />
*'''debug.debug ()''' - Переходит в интерактивный режим, выполняя все команды, которые вводит пользователь. Используя простые команды и другие средства отладки, пользователь может получать значения глобальных и локальных переменных, изменять их значения, получать значения выражений, и т.д. Строка, содержащая только слово cont, завершает выполнение функции, т.о. вызвавшая программа продолжает выполнение. Команды для функции debug.debug лексически не вложены ни в какую функцию, т.о. не имеют прямого доступа к локальным переменным.<br />
<br />
*'''debug.gethook ([thread])''' - Возвращает текущие настройки перехвата (hook settings) нити (thread), как три значения: текущая функция перехвата, текущая маска перехвата, и текущее количество перехватов (hook count) (в соответствии с параметрами, установленными функцией debug.sethook).<br />
<br />
*'''debug.getinfo ([thread,] f [, what])''' - Возвращает таблицу с информацией о функции. Вы можете задать функцию непосредственно, или вы можете задать номер функции, который соответствует функции, запущенной на уровне function стека вызововзаданной нити: уровень 0 соответствует текущей функции (getinfo непосредственно); уровень 1 – это функция, которая вызвала getinfo; и т.д. Если в параметре function задано число, большее, чем количество запущенных функций, то getinfo возвращает nil.<br />
<br />
*'''debug.getlocal ([thread,] f, local)''' - Данная функция возвращает имя и значение локальной переменной с индексом local функции на уровне level стека. (Первая локальная переменная функции имеет индекс 1, и т.д., вплоть до последней локальной переменной.)<br />
<br />
*'''debug.getmetatable (value)''' - Возвращает метатаблицу заданного объекта object или nil если объект не имеет метатаблицы.<br />
<br />
*'''debug.getregistry ()''' - Возвращает таблицу реестра (регистра???) (registry table)<br />
<br />
*'''debug.getupvalue (f, up)''' - Данная функция возвращает имя и значение внешней локальной переменной (upvalue) с индексом up функции func. Функция возвращает nil если не существует внешней локальной переменной (upvalue) с заданным индексом.<br />
<br />
*'''debug.getuservalue (u)''' - Возвращает значение, связанное с (u). Если (u) - это не пользовательские данные, возвращает ноль.<br />
<br />
*'''debug.sethook ([thread,] hook, mask [, count])''' - Делает данную функцию функцией перехвата (hook).<br />
<br />
*'''debug.setlocal ([thread,] level, local, value)''' - Эта функция присваивает значение value локальной переменной с индексом local функции на уровне level стека. Функция возвращает nil, если не существует переменной с данным индексом, и возбуждает ошибку при вызове с уровнем level, выходящем за границы стека. <br />
<br />
*'''debug.setmetatable (value, table)''' - Изменяет метатаблицу заданного объекта object на таблицу table (которая также может быть nil).<br />
<br />
*'''debug.setupvalue (f, up, value)''' - Данная функция присваивает значение value локальной внешней переменной (upvalue) с индексом up функции func. Функция возвращает nil, если не существует локальной внешней переменной (upvalue) с данным индексом. В противном случае, возвращает имя локальной внешней переменной (upvalue).<br />
<br />
*'''debug.traceback ([thread,] [message [, level]])''' - Возвращает строку со следом (traceback) стека вызовов. Опциональный параметр message добавляется в начало следа. Опциональный параметр level – число, обозначающее уровень, с которого необходимо начинать след (traceback) (значение по умолчанию равно 1, т.е. соответствует функции, вызывающей traceback).<br />
<br />
<br />
Все доступные библиотеки можно найти в Разделах Basic Functions, String Manipulation, Table Manipulation, Mathematical Functions, Operating System Facilities (только date, difftime, time), Debug Library на сайте: http://www.lua.org/manual/5.3/manual.html#6.7<br />
<br />
== Отладка ==<br />
<br />
'''print(e1, e2, ...)'''<br />
Печатает значения аргументов. В конце выводится перевод строки. Эта функция не предназначена для форматного вывода, а только для быстрого (отладочного) вывода значений переменных.<br />
<br />
<br />
'''В app.icf при установке<br />
<br />
[GameTrace]<br />
<br />
Level="Verbose"'''<br />
<br />
В логе у нас появятся данные из скриптов со всеми операциями:<br />
<br />
D/IScript IScript::callScriptMethod() callScriptMethod: "lottery_scpt:init"<br />
<br />
D/IScript viewer_getResFromTxtDB() viewer.getResFromTxtDB(5670,0,666)->666<br />
<br />
<br />
[[Файл:Self2.png]]<br />
<br />
== Пример использования ==<br />
<br />
Рассмотрим пример использования скрипта для написания программы Калькулятор<br />
<br />
[[Файл:Project.png]] <br />
<br />
Создаем машину состояний с именем "control", в ней создаем скрипт obj_control.lua. В функции init () объявляем переменные: <br />
<br />
[[Файл:Self.png]]<br />
<br />
'''1.''' По тапу на кнопки 0-9 записываем машине соответствующий параметр и вызываем состояние pressedDigit:<br />
<br />
[[Файл:0digit.png]]<br />
<br />
При вызове состояния pressedDigit скрипт '''вызывает функцию pressedDigit():'''<br />
<br />
Объявляем локальную переменную local digit, в которую будем записывать значение параметра pressed (записанное по тапу на кнопку).<br />
<br />
[[Файл:Presseddigit.png]]<br />
<br />
'''2.''' Аналогично по тапу на кнопки операторов записываем параметр и '''вызываем функцию pressedOperator()''':<br />
<br />
[[Файл:Operator.png]]<br />
<br />
[[Файл:Oper.png]]<br />
<br />
'''3. Вызов функции pressedRavnо()''', вычисление и вывод результата:<br />
<br />
[[Файл:Ravno.png]]<br />
<br />
[[Файл:Res2.png]]<br />
<br />
== Тонкости LUA + Viewer ==<br />
<br />
=== viewer.changeObjState() + локальные переменные ===<br />
<br />
При переводе объекта в новое состояние функцией viewer.changeObjState() у нас происходит выход из скрипта, и выполнение инструкций объекта, после окончания инструкций объекта, управление возвращается в скрипт. Но все локальные переменные теряют свои значения и являются nil.<br />
<br />
Чтобы такого не было нужно использовать self параметры или глобальные. <br />
К примеру вот так : [[Файл:2aa3540a7e.jpg]]<br />
<br />
<br />
<br />
----<br />
<br />
== Right Style ==<br />
Далее описан правильный и очень удобный стиль оформления LUA скрипта.<br />
Рекомендации:<br />
*1) Самой первой функцией в скрипте д.б. "init" - в которой мы должны про инициализировать все "self" параметры (да, именно - '''все'''). Нужно для того чтобы просмотрев функцию инит - узнать какие переменные хранит объект и что они означают<br />
*2) Каждая "self" или глобальная переменная должны быть прокомментированы в месте обьявления <br />
:self.packState = -1 -- состояние пака, 0 - не существует; 1 - не скачан; 2 - в процессе закачки; 3 - всё норм<br />
*3) Второй функцией в скрипте д.б. "state" - в которой мы указываем интерфейс класса (скрипта). Посмотрев на данную функцию можно узнать, какие методы (состояния), мы можем вызывать из вьювера;<br />
:П.С. Не д.б. функций объявленных внутри интерфейса (внутри функции "state") - портит читабельность методов;<br />
::Также не забываем об принтовании ошибки в интерфейсе класса - если не нашли метод;<br />
[[Файл:Lua metods error.jpg|700px]]<br />
<br />
*4) Все пространства кода должны правильно форматироваться табуляцией (уровни вложенности), каждому последующему уровню - добавляем одну табуляцию в начало строки;<br />
Таким образом достигается отличная читабельность кода.<br />
<br />
*5) Все входные данные из вьювера - должны валидироваться (проверятся на адекватность). Связано с тем, что из лейаута, мы можем очень легко задать невалидное значение. К примеру попросить открыть акцию с номером 1000, хотя такой акции нет. <br />
В случае нахождения ошибки - мы должны принтовать ошибку с описанием "ERROR - описание" и просто её скипать. <br />
Т.е. не обрабатываем некорректные данные ( лучше не вызвать некорректную логику, чем завалить вьювер; т.к. вы не знаете, когда у кого воспроизведётся бага))) ). <br />
<br />
*6) Между каждой функцией нужно добавлять строку символов ('-'; 80 символов); строку с описанием работы функции; строку с описанием аргументов функции(если они не очевидные)<br />
:"---------------------------------------------------------------------------------------------" <br />
:"-- возвращаем уровень который может получить игрок"<br />
:"-- index - индекс аччивки self.Ach"<br />
[[Файл:Lua scoped func.jpg|700px]]<br />
<br />
*7) Принтование вызова функции и значений аргументов (исключение функции которые вызываются очень часто - и в них принтование не имеет смысла);<br />
:function obj_awlMngr:state(state,guestID)<br />
::print("obj_awlMngr:state("..state..","..guestID..")")<br />
<br />
:П.С. '''принтовать массивы и nil значения - мы не можем'''(валится вьювер). Поэтому можно сделать вот так(в проекте Hidden365 так реализовано):<br />
[[Файл:Lua get argum .jpg|700px]]<br />
<br />
<br />
Использование:<br />
<br />
[[Файл:Lua get argum using.jpg|700px]]<br />
<br />
:Таким способом, достаточно удобно принтуются одномерные массивы и nil value:<br />
** одномерный массив:<br />
::obj__BASE:notificationManage(Ar_txtID:[#4:1:9188,2:9189,3:9190,4:9191],str:1day,time:86400)<br />
** nil:<br />
::obj_AnimMngr:clone_locate(clone_array:[#1:1:13545],type_locate:1,x_:10,y_:-10,scaleStart:nil,scaleEnd:nil)<br />
** двухмерный массив:<br />
::obj_Sales:Templated_dropRewardCom(Ar_coord:[#2:1:[#2:1:-100,2:100],2:[#2:1:50,2:100]],num:1,clone_need:20,w:160,h:160)<br />
<br />
*8) Очень полезно, создать скрипт с именем "obj__BASE" в котором объявить все глобальные переменные используемые в проекте. В него же можно добавить функции, которые являются специфическими для данного проекта и могут вызываться из разных мест(или разовые функции). <br />
<br />
*9) Удобно создать скрипт с именем "obj__COM" в котором собраны универсальные функции - которые не завязываются к текущему проекту и могут быть использованы везде:<br />
:: Функции принтования аргументов;<br />
:: Функции сливания массивов в один;<br />
:: Функции поворота точки на угол;<br />
:: Функции выдавания ресурса из текста;<br />
:: И д.р.<br />
<br />
<br />
В итоге получается вот такие скрипты:<br />
<br />
[[Файл:Lua right style.jpg|700px]]<br />
<br />
== Пример реализации ==<br />
<br />
[http://fs5.absolutist.com/files/wikisample/proj_LUA.zip Download]<br />
<br />
<br />
[[Category:Main objects]]<br />
<br />
== Литература ==<br />
<br />
1. Официальный сайт Lua - http://www.lua.org/home.html<br />
<br />
2. http://tylerneylon.com/a/learn-lua/<br />
<br />
3. http://docs.madewithmarmalade.com/display/MD/Introduction+to+Lua<br />
<br />
4. Программа - интерпретатор для работы со скриптами Lua - ZeroBrane Studio: http://studio.zerobrane.com/</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=App.icf&diff=9706App.icf2018-09-17T14:52:11Z<p>Sadovoy: </p>
<hr />
<div>==[S3E]==<br />
<br />
'''WinWidth'''=960 - Ширина окна<br />
<br />
'''WinHeight'''=640 - Высота окна<br />
<br />
'''DispFixRot'''="Landscape" - ориентация приложения (Free/Landscape/Portrait/FixedLandscape/FixedPortrait)<br />
<br />
'''MemSize'''=32000000 - Размер "кучи" для основного приложения в байтах. По-умолчанию 3Mб. '''MemSize''' должен быть больше чем '''MB_GRAFICS'''<br />
<br />
'''MemSize1'''=15000000 - Размер "кучи" для звуков приложения в байтах. По-умолчанию 0Mб.<br />
<br />
'''SysStackSize'''=65536<br />
<br />
'''MemSizeDebug'''=200000000<br />
<br />
'''WindowAllowResize'''=1 - Разрешить изменение размера окна<br />
<br />
'''WinResizable'''=1 - 0 или 1. На устройствах с оконным менеджером даёт возможность изменять размеры окна.<br />
<br />
'''SoundOutputFreq'''=44100 - Частота звука<br />
<br />
''Параметры для вьювера из-под редактора:''<br />
<br />
'''WinTitle'''="Viewer"<br />
<br />
'''SysAppVersion'''=0.0.1<br />
<br />
'''SysAppCaption'''="viewer"<br />
<br />
<br />
<br />
==[GxFont]==<br />
<br />
'''CacheTextureMaxSize=1024''' - кэш для текстовой текстуры<br />
<br />
<br />
==[Default]==<br />
<br />
'''save'''="0" - сохранять экран на котором были перед выходом из приложения. необходимо для книжек(1), для пазлов и прочего отключить(0). Может быть вынесено в viewer.xml<br />
<br />
'''cut'''="0" - обрезать изображение по размеру layout-а. В случае если предполагается что отмасштабированое изображение будет мало по отношению к окну(окно больше, а картинка меньше) ставим "0" и изображение не будет обрезано а будет выходить за рамки окна. Может быть вынесено в viewer.xml<br />
<br />
<br />
==[Fonts]==<br />
<br />
'''font_1'''="1_arial_16" - шрифт и его номер который используется<br />
<br />
'''size_1=16''' - размер шрифта для формирования текстуры (чем больше значение, тем меньше знаков поместятся на текстуре. Необходимо будет увеличивать значение CacheTextureMaxSize=1024 что приведет к излишнему использованию памяти)<br />
<br />
'''chars_1=256''' - Число знаков помещенных в кеш для отрисовки в единицу времени на экране. Иначе говоря - максимальное количество разных знаков, которое может отображаться на отдельных экранах.<br />
<br />
'''koef_6=1''' - масштаб шрифта<br />
<br />
'''koef_6_de=1.3''' - масштаб шрифта для определённого языка<br />
<br />
<br />
==[Game]==<br />
<br />
'''Market'''="amazon" - задаёт какие будут использованы инапы, если они есть, и ссылки в текстовой базе. возможны варианты: samsung, amazon, ios, wildtangent, android, blackberry, fortumo, google, mac, windows, phone8<br />
<br />
'''debug="Absolutist-2253"''' - режим отладки, если ненужен, или для выгрузки в магазин - удалить.<br />
<br />
'''show_build_date=1''' - показывать дату билда вьювера<br />
<br />
'''mouseOver''' - 1 send mouse over events to viewer (for PC projects) 0 - don't send (for Mobile projects)<br />
<br />
'''DispFixRot'''='''"Landscape"''' програмная ориентация приложения. Не путать с параметром в [S3E]<br />
<br />
'''alignType'''=1 позиционирование объектов, если указано в объекте. 1 - по логическому экрану, 0 - по физическому. 1 - по умолчанию.<br />
<br />
'''allow_background'''=1 - не ставить вьювер на паузу при потере фокуса.<br />
<br />
'''purchaseEverything''=1 - совершать эмуляцию покупки (для тестирования покупок из-под редактора).<br />
<br />
<br />
==[GameTrace]==<br />
<br />
'''flurry=1''' - заносить в логи активность flurry<br />
<br />
'''memorymanager=1''' - заносить в логи количество памяти затраченной приложением<br />
<br />
'''Level'''="Verbose" - уровень записи в лог. Verbose - самый детальный, используется по умолчанию (Verbose/Info/Warnings/Errors). Info - в лог попадает только информация (Info,Warnings,Errors). Warnings - в лог пишутся только предупреждения и ошибки (Warnings,Errors). Errors - в лог пишутся только ошибки (Errors).<br />
<br />
'''All'''=0 - 0-выключены все логи от объектов кроме тех, у которых стоит параметр 1 (см. ниже). 1 - логи от объектов включены, кроме тех у которых параметр 0 (см. ниже)<br />
<br />
'''GMachine'''=1 - 1 логи от объекта включены, 0 - выключены <br />
<br />
'''GESocial'''=0 <br />
<br />
<br />
==[GameMemory]==<br />
<br />
'''MB_GRAFICS=18000000''' - размер буфера для загрузки изображений. Сначала изображение помещается в этот буфер, потом из него в видеопамять. По умолчанию - 9 мб. Память для буфера входит в '''MemSize''' - тоесть для объектов выделяется объём памяти равный '''MemSize''' - '''MB_GRAFICS'''.<br />
<br />
<br />
==[s3eAndroidAppirater]==<br />
<br />
'''title="App name"''' - название приложения<br />
<br />
'''app_name="market://id?=com.your_company.application"''' - package id приложения<br />
<br />
'''days=0'''<br />
<br />
'''launches=0'''<br />
<br />
'''events=0'''<br />
<br />
'''need_email_button=1''' - нужна ли кнопка "отправить письмо"<br />
<br />
'''email_addr="user@yourcompany.com"''' - email на который будет отправлено письмо<br />
<br />
'''email_subj="Subject of email"''' - тема письма<br />
<br />
'''email_text="Hello!"''' - текст письма<br />
<br />
<br />
<br />
==[Parameters]==<br />
Добавляет в options параметр и значение при запуске приложения. Параметры этой секции будут установлены в опции; нумерация должна быть последовательной от 1 до бесконечности<br />
<br />
'''param1_name="param1.param"''' - имя параметра<br />
<br />
'''param1_value="12"''' - значение параметра<br />
<br />
'''param1_overwrite="0"''' - перезаписывать параметр, если был ранее 1 - по умолчанию. 1 - перезаписывать, 0 - неперезаписывать<br />
<br />
'''param2_name="param2"'''<br />
<br />
'''param2_value="13"'''<br />
<br />
<br />
==[GHiddenList]==<br />
<br />
'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
<br />
'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
<br />
'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y.<br />
<br />
<br />
==[Splash]==<br />
<br />
'''inscribe''' - вписывать видео сплэшскрина в текущий экран; (1 - вписывать);<br />
<br />
Видео должно называться Splash.ogv и находиться рядом с вьювером<br />
<br />
==[Advertisement]==<br />
'''OfflineMode''' - включить оффлайн режим, при котором конфиг рекламы не будет качаться с сервера (будет браться из кеша); Если в кеше нет конфига - реклама работать не будет.<br />
<br />
==[DynamicConfig]==<br />
'''offline''' - включить оффлайн режим использования динамического конфига (конфиг при помощи которого можно патчить приложение - пока используется только в H365 и HiddenBattle); при включённом режиме конфиг будет браться локально (из кеша), если имеется в наличии. <br />
<br />
[[Category:Projects]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9704Economics2018-09-14T07:23:38Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
*'''округление res1 и т.п. до кратных 5''' ( ''bonusroundup'' ) - нужно ли округлять бонусные монеты и опыт для локации до кратных 5.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии, ''open_need_item'' - состояние, вызываемое окну перед локацией в случае нехватки предмета, ''open_need_item_energy'' - состояние, вызываемое окну перед локацией в случае нехватки энергии и предмета. <br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''бонусный ресурс 1''' - счетчик дополнительной награды res1, которая дается за амулеты.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''бонусный опыт''' - счетчик дополнительного опыта, который дается за амулеты.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет. Можно активировать сколько угодно раз. "-2" - действие предмета будет вечным, но активно не более одной копии.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''dIsomover''' - ускорение взаимодействия изомуверов в %. (Каждому изомуверу, на который должно распространяться действие, нужно включить флаг "использовать бонусы ко времени"). <br />
<br />
*'''область применения''' - область, в которой будет учитываться бонус от предмета (везде, локация, монстр). <br />
<br />
*'''KOfflineRep''' - пока действует предмет, меняем KOffline репутации (настраивается в свойствах экономики в группе репутации) на этот параметр. Область действия от -1 до 1. Поэтому дефолтное значение этого параметра "-2". <br />
<br />
*'''dHdnConst''' - Увеличение значения поля постоянный прирост в %<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
*'''очищать statesmanager''' - 1 - при передаче экономике состояния monster_play для этого монстра все очереди statesmanager будут чиститься; 0 - не будут.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях;<br />
*'''search_task_only_week''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях текущей недели (работа по календарю).<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9698Collapse2018-08-13T08:28:30Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
*'''Перемешивать при 0 ходов''' - если нет больше ходов на поле, да - поле перемешивать, нет - проигрыш.<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
*'''pause''' - поставить объект на паузу ("заморозить объект");<br />
*'''resume''' - снять объект с паузы ("разморозить объект");<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
*'''randomSize''' - размер "мешка" со случайными числами для досыпаний фишек. По умолчанию равен 100* на кол-во цветов фишек. Мешок генерируется в формате 0,1,2,0,1,2,0,1,2... затем перемешивается. Кастомный размер мешка не должен быть меньше, чем кол-во цветов фишек.<br />
*'''randomShuffles''' - число перемешиваний "мешка" для досыпаний. По умолчанию число перемешиваний равно размеру "мешка" (т.е. проходимся по каждой фишке и меняем ее с рандомной). Если кол-во перемешиваний меньше размера мешка, то игра усложнится (подсыпания приблизятся к последовательности 0,1,2,0,1,2... и будет сложнее матчить. Если кол-во перемешиваний = размеру мешка, то получаем полное перемешивание, т.е. абсолютно рандомную последовательность фишек. Ставить кол-во перемешиваний больше размера мешка нет смысла.<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]<br />
<br />
<br />
=Создание простейшего коллапса (классика)=<br />
<br />
Коллапс - самостоятельный обьект, и для создания простейшего коллапса не нужно никаких дополнительных обьектов. Создайте новый проект, и на сцену поместите пустой обьект, измените тип на коллапс.<br />
<br />
[[Файл:Tree.JPG]]<br />
<br />
Графику для игры коллапс можно скачать здесь: [[Media:Fishki.rar]] <br />
<br />
Сначала стоит рассчитать размеры поля. При создании обычного коллапса поле делают квадратным, а сверху добавляют еще один ряд для статических обьектов. Соответственно, размерность коллапса составит х*(х+1). Размер поля в пикселях должен соответствовать размеру фишки, умноженной на количество строк/столбцов.<br />
Создадим поле размером 12х13. Размеры нашей фишки в пикселях составляют 58х58, соответственно, размер нашего поля в пикслях составит 696*754.<br />
<br />
[[Файл:Size.JPG]]<br />
[[Файл:Size2.JPG]]<br />
<br />
Устанавливаем параметр "авторазмер" - авто.<br />
<br />
'''ОБРАТИТЕ ВНИМАНИЕ: Не надо загружать текстуры фишек в поле "фишки" во внешнем виде! Это делается отдельно в добавляемом свойстве "Графика фишки" отдельно для каждой фишки''' <br />
<br />
[[Файл:Grafika_fishki.JPG]]<br />
<br />
Добавьте графику для ваших фишек (один цвет - одна фишка), а также графику для статической фишки (которая будет находиться в верхнем ряду).<br />
<br />
== Перегрузка правил ==<br />
<br />
Теперь перегрузим правила для коллапса классического. Так как обьект collapse многоцелевой и с его помощью можно сделать несколько различных миниигр, мы установим правила, нужные для классического коллапса.<br />
<br />
[[Файл:Rules_classic.JPG]]<br />
<br />
Разберем поподробнее некоторые установленные параметры:<br />
<br />
* перегрузка - да<br />
:- для перегрузки правил необходимо уставить этот флаг;<br />
* номеров в фишках - 5<br />
:- это количество цветов и статических фишек, что у нас есть<br />
* номер бомбы/крестобомбы - -1<br />
:- будьте внимательны - изначально это значение стоит на 0, изза этого первый цветной блок у вас будет считаться бомбой, и при клике уничтожать все фишки своего цвета!<br />
:- ''в классическом коллапсе вообще не используются бомбы''<br />
* статический номер - 0<br />
:- это номер фишки, которая будет лежать на самом верхнем ряду, и которые надо опустить вниз<br />
'''Все, что касается пометки, не требуется для классического коллапса, так как в нем не нужно отмечать фишки.'''<br />
<br />
При установке номеров фишек для бомб и статических учтите, как нумеруется графика фишек.<br />
<br />
[[Файл:Graphics_num.JPG]]<br />
<br />
Самый верхний добавленный ресурс будет иметь номер 0, следующий за ним - 1 и далее по возрастанию.<br />
<br />
Перегрузим также и условия победы в нашей игре:<br />
<br />
[[Файл:Celi.JPG]]<br />
<br />
Так как условие победы в нашей игре - опустить все статические фишки на дно, то это мы и отметим, как цель игры.<br />
Обрабочтик победы добавляется так же, как и фишки - с помощью создания нового свойства:<br />
<br />
[[Файл:Win.JPG]]<br />
<br />
== Внешний вид ==<br />
<br />
Настроим внешний вид нашей игры.<br />
<br />
[[Файл:Vneshniy.JPG]]<br />
<br />
Некоторые параметры мы уже рассмотрели, немного об остальных:<br />
* сетка? - работает по каким-то собственным алгоритмам, поэтому иногда выглядит странно, можно ее просто не показывать<br />
* таймер - подключает таймер (можно установить ограничения по времени для решения коллапса)<br />
* счетчик статических - подключаем счетчик, который ведет учет статических элементов, которые еще не опущены ко дну коллапса<br />
* бомбы - в классическом коллапсе не используются<br />
<br />
Со временами всяких анимаций и появлений можете поэксперементировать сами или использовать вот эти:<br />
<br />
[[Файл:Vremena.JPG]]<br />
<br />
При генерации коллапс устанавливает блоки одинаковых фишек рядом, подчиняясь этим правилам:<br />
<br />
[[Файл:Generation.JPG]]<br />
<br />
Запустим получившуюся игру:<br />
<br />
[[Файл:Game.JPG]]<br />
<br />
Более глубокие механики и условия попробуйте проработать сами с помощью машин, меняйте состояния для коллапса с помощью кнопок и создавайте красивые игры!</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Eitems&diff=9695Eitems2018-08-06T14:48:39Z<p>Sadovoy: /* Cостояния */</p>
<hr />
<div>[[Object|Объект]] '''Eitems''', служит для связи инвентаря(магазина) и экономики<br />
<br />
=Свойства=<br />
<br />
*'''иконка ресурса 1''' - Графический ресурс иконки монет.<br />
*'''иконка ресурса 2''' - Графический ресурс иконки кристаллов<br />
<br />
==Ссылки на объекты==<br />
<br />
[[Файл:Eitems.jpg|right]]<br />
*'''economics''' - Ссылка на объект economics.<br />
<br />
*'''таблица''' - Ссылка на таблицу, где будут размещаться шаблоны.<br />
<br />
*'''шаблон магазина''' - Ссылка на шаблон магазина.<br />
<br />
*'''шаблон инвентаря''' - Ссылка на шаблон инвентаря.<br />
<br />
*'''шаблон создания''' - Ссылка на шаблон создания конкретного объекта в инвентаре.<br />
<br />
*'''инвентарь''' - Для связи объектов economics, например, с tools.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br clear /br><br />
<br />
==Окно подтверждения покупки==<br />
<br />
[[Файл:Eitems2.jpg|right]]<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''иконка цены''' - Объект отображающий иконку цены (кристаллы, золото и т.п.).<br />
*'''цена''' - Счетчик отображающий непосредственно цену.<br />
*'''купить''' - Кнопка купить. Вызывает объекту eitems состояние ''buy''.<br />
*'''использовать''' - Кнопка использовать. Вызывает объекту eitems состояние ''use''. Состояние ''use'' вызвать больше одного раза подряд нельзя, лучше после вызова состояния прописать закрытие окна.<br />
*'''количество''' - Счетчик отображающий количество предметов на данный момент. Если не установлена кнопка ''использовать'' - счетчик работать не будет, он будет виден, но отобразит не корректные данные.<br />
<br />
Пример:<br />
<br />
[[Файл:Eitems3.jpg|300px]]<br />
<br />
==Окно подтверждения продажи==<br />
[[Файл:Eitems sell.jpg|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно подтверждения продажи. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''иконка цены''' - объект типа картинка, отображающий иконку цены, это может быть золото, кристаллы и т.п.<br />
*'''цена''' - счетчик, отображающий цену продаваемого предмета.<br />
*'''продать''' - кнопка, по нажатию на которую, происходит продажа предмета. Вызывает объекту eitems состояние ''sell''.<br />
*'''использовать''' - кнопка, по нажатию на которую, предмет используется.<br />
*'''количество''' - счетчик, отображающий количество предметов, которые есть в наличии на данный момент.<br />
*'''иконка ресурса 1''' - графический ресурс, отображающий иконку монет.<br />
*'''иконка ресурса 2''' - графический ресурс, отображающий иконку кристаллов.<br />
<br />
<br />
==Окно создания предмета==<br />
[[Файл:Craft1.png|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно создания предмета. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''процент''' - счетчик, отображающий сколько процентов ингридиентов собрано.<br />
*'''создать''' - кнопка, которая создает предмет. Вызывает состояние ''craft_item''. Находится в состоянии disable если не хватает ингридиентов для крафта.<br />
*'''таблица''' - таблица отображает сколько ингридиентов собрано. Должна иметь 2 строки. В первую строку помещаются иконки ингридиентов, а во вторую строку помещается количество ингридиентов в формате "есть"/"нужно".<br />
<br />
Ингридиенты для крафта добавляются в объекте economics в разделе "Предмет".<br />
<br />
==Добавляемые параметры==<br />
<br />
[[Файл:+.png]] '''нехватка ресурсов''' - При попытке купить предмет, когда не хватает средств, будет передаваться соответствующее состояние объекту указанному в следующем поле.<br />
<br />
<br />
[[Файл:+.png]] '''свой фильтр''' - Список предметов. Формируется путем перетягивания с тестовой базы связанных с предметами id - шников.<br />
<br />
==Параметры==<br />
<br />
[[Файл:Eitems1.jpg|right]]<br />
Есть возможность применять фильтры к предметам, чтобы отображать только предметы нужной нам категории. Можно этот делать двумя способами.<br />
<br />
1) Категория указывается в настройках предметов в объекте economics. Для этого есть параметр '''filter'''. Этот параметр является текстовым и перетаскивается из текстовой базы. После определения параметра фильтрации переводим объект eitems в состояние '''filter'''.<br />
<br />
2) Сформировать свой фильтр с помощью добавляемого свойста. Записать в параметр '''filter''' номер фильтра по порядку. Перевести объект eitems в состояние '''custom_filter'''.<br />
<br />
<br />
'''param_num''' - кол-во предметов, можно задать перед вызовом состояний ''add_param'', ''buy_param''<br />
<br />
==Cостояния==<br />
<br />
*'''Store''' - Отобразить шаблон магазина.<br />
*'''Inventory''' - Отобразить шаблон инвентаря.<br />
*'''craft''' - Отобразить шаблон крафта предметов.<br />
*'''filter''' - Задать категорию предметов, исходя из настроек предметов в объекте ''economics''.<br />
*'''custom_filter''' - Задать категорию предметов, исходя из ''своего фильтра''.<br />
<br />
Перед тем, как переводить объект eitems в следующие состояния, нужно его параметру param присвоить текстовый id соответствующего предмета.<br />
<br />
*'''hide_param''' - Спрятать объект (итемс пропадает и из магазина, и из инвентаря).<br />
*'''use_param''' - Использовать объект из поля param или просто вычесть его, если предмет не используемый.<br />
*'''use_param_no_update''' - такое же использование предмета как и '''use_param''', но без обновления экономики (Hidden365).<br />
*'''add_param''' - Добавляет объект из магазина в инвентарь, но не вычитает ресурс (пассивное добавление итемса)<br />
*'''dec_param''' - списываем инвентарный предмет (без применения; учитывается также параметр "param_num" - количество предметов);<br />
*'''buy_param''' - Добавляет объект из магазина в инвентарь и вычитает ресурс (осуществляет покупку итемса).<br />
*'''check_price''' - узнать значение предмета из поля param (записывает цену в параметры - checked_res1 и checked_res2 )<br />
*'''craft_item''' - Создает предмет из других предметов (предметы необходимые для создания при этом отнимаются).<br />
*'''buy''' - Купить предмет для которого показано окошко покупки.<br />
*'''use''' - Использовать предмет для которого показано окошко покупки. (В параметр '''last_used_item''' запишется id примененного предмета).<br />
*'''cancel_param''' - Отменить действие амулета из поля param.<br />
*'''sell''' - Продать предмет для которого показано окошко продажи.<br />
*'''wnd_param''' - Показывает окно подтверждения покупки для предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''show_craft_param''' - Показывает окно крафта предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''ingridient_click''' - Вызывается при клике на таблицу ингридиентов в окне крафта, показывает окно покупки ингридиента.<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Пример=<br />
<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Eitems&diff=9694Eitems2018-08-06T14:47:48Z<p>Sadovoy: /* Cостояния */</p>
<hr />
<div>[[Object|Объект]] '''Eitems''', служит для связи инвентаря(магазина) и экономики<br />
<br />
=Свойства=<br />
<br />
*'''иконка ресурса 1''' - Графический ресурс иконки монет.<br />
*'''иконка ресурса 2''' - Графический ресурс иконки кристаллов<br />
<br />
==Ссылки на объекты==<br />
<br />
[[Файл:Eitems.jpg|right]]<br />
*'''economics''' - Ссылка на объект economics.<br />
<br />
*'''таблица''' - Ссылка на таблицу, где будут размещаться шаблоны.<br />
<br />
*'''шаблон магазина''' - Ссылка на шаблон магазина.<br />
<br />
*'''шаблон инвентаря''' - Ссылка на шаблон инвентаря.<br />
<br />
*'''шаблон создания''' - Ссылка на шаблон создания конкретного объекта в инвентаре.<br />
<br />
*'''инвентарь''' - Для связи объектов economics, например, с tools.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br clear /br><br />
<br />
==Окно подтверждения покупки==<br />
<br />
[[Файл:Eitems2.jpg|right]]<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''иконка цены''' - Объект отображающий иконку цены (кристаллы, золото и т.п.).<br />
*'''цена''' - Счетчик отображающий непосредственно цену.<br />
*'''купить''' - Кнопка купить. Вызывает объекту eitems состояние ''buy''.<br />
*'''использовать''' - Кнопка использовать. Вызывает объекту eitems состояние ''use''. Состояние ''use'' вызвать больше одного раза подряд нельзя, лучше после вызова состояния прописать закрытие окна.<br />
*'''количество''' - Счетчик отображающий количество предметов на данный момент. Если не установлена кнопка ''использовать'' - счетчик работать не будет, он будет виден, но отобразит не корректные данные.<br />
<br />
Пример:<br />
<br />
[[Файл:Eitems3.jpg|300px]]<br />
<br />
==Окно подтверждения продажи==<br />
[[Файл:Eitems sell.jpg|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно подтверждения продажи. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''иконка цены''' - объект типа картинка, отображающий иконку цены, это может быть золото, кристаллы и т.п.<br />
*'''цена''' - счетчик, отображающий цену продаваемого предмета.<br />
*'''продать''' - кнопка, по нажатию на которую, происходит продажа предмета. Вызывает объекту eitems состояние ''sell''.<br />
*'''использовать''' - кнопка, по нажатию на которую, предмет используется.<br />
*'''количество''' - счетчик, отображающий количество предметов, которые есть в наличии на данный момент.<br />
*'''иконка ресурса 1''' - графический ресурс, отображающий иконку монет.<br />
*'''иконка ресурса 2''' - графический ресурс, отображающий иконку кристаллов.<br />
<br />
<br />
==Окно создания предмета==<br />
[[Файл:Craft1.png|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно создания предмета. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''процент''' - счетчик, отображающий сколько процентов ингридиентов собрано.<br />
*'''создать''' - кнопка, которая создает предмет. Вызывает состояние ''craft_item''. Находится в состоянии disable если не хватает ингридиентов для крафта.<br />
*'''таблица''' - таблица отображает сколько ингридиентов собрано. Должна иметь 2 строки. В первую строку помещаются иконки ингридиентов, а во вторую строку помещается количество ингридиентов в формате "есть"/"нужно".<br />
<br />
Ингридиенты для крафта добавляются в объекте economics в разделе "Предмет".<br />
<br />
==Добавляемые параметры==<br />
<br />
[[Файл:+.png]] '''нехватка ресурсов''' - При попытке купить предмет, когда не хватает средств, будет передаваться соответствующее состояние объекту указанному в следующем поле.<br />
<br />
<br />
[[Файл:+.png]] '''свой фильтр''' - Список предметов. Формируется путем перетягивания с тестовой базы связанных с предметами id - шников.<br />
<br />
==Параметры==<br />
<br />
[[Файл:Eitems1.jpg|right]]<br />
Есть возможность применять фильтры к предметам, чтобы отображать только предметы нужной нам категории. Можно этот делать двумя способами.<br />
<br />
1) Категория указывается в настройках предметов в объекте economics. Для этого есть параметр '''filter'''. Этот параметр является текстовым и перетаскивается из текстовой базы. После определения параметра фильтрации переводим объект eitems в состояние '''filter'''.<br />
<br />
2) Сформировать свой фильтр с помощью добавляемого свойста. Записать в параметр '''filter''' номер фильтра по порядку. Перевести объект eitems в состояние '''custom_filter'''.<br />
<br />
<br />
'''param_num''' - кол-во предметов, можно задать перед вызовом состояний ''add_param'', ''buy_param''<br />
<br />
==Cостояния==<br />
<br />
*'''Store''' - Отобразить шаблон магазина.<br />
*'''Inventory''' - Отобразить шаблон инвентаря.<br />
*'''craft''' - Отобразить шаблон крафта предметов.<br />
*'''filter''' - Задать категорию предметов, исходя из настроек предметов в объекте ''economics''.<br />
*'''custom_filter''' - Задать категорию предметов, исходя из ''своего фильтра''.<br />
<br />
Перед тем, как переводить объект eitems в следующие состояния, нужно его параметру param присвоить текстовый id соответствующего предмета.<br />
<br />
*'''hide_param''' - Спрятать объект (итемс пропадает и из магазина, и из инвентаря).<br />
*'''use_param''' - Использовать объект из поля param или просто вычесть его, если предмет не используемый.<br />
*'''use_param_no_update''' - такое же использование предмета как и '''use_param''', но без обновления экономики (Hidden365).<br />
*'''add_param''' - Добавляет объект из магазина в инвентарь, но не вычитает ресурс (пассивное добавление итемса)<br />
*'''dec_param''' - списываем инвентарный предмет (без применения);<br />
*'''buy_param''' - Добавляет объект из магазина в инвентарь и вычитает ресурс (осуществляет покупку итемса).<br />
*'''check_price''' - узнать значение предмета из поля param (записывает цену в параметры - checked_res1 и checked_res2 )<br />
*'''craft_item''' - Создает предмет из других предметов (предметы необходимые для создания при этом отнимаются).<br />
*'''buy''' - Купить предмет для которого показано окошко покупки.<br />
*'''use''' - Использовать предмет для которого показано окошко покупки. (В параметр '''last_used_item''' запишется id примененного предмета).<br />
*'''cancel_param''' - Отменить действие амулета из поля param.<br />
*'''sell''' - Продать предмет для которого показано окошко продажи.<br />
*'''wnd_param''' - Показывает окно подтверждения покупки для предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''show_craft_param''' - Показывает окно крафта предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''ingridient_click''' - Вызывается при клике на таблицу ингридиентов в окне крафта, показывает окно покупки ингридиента.<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Пример=<br />
<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9621Collapse2018-07-20T07:13:27Z<p>Sadovoy: /* Поле */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9620Collapse2018-07-16T12:11:14Z<p>Sadovoy: /* Поле */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*'''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9619Collapse2018-07-16T12:10:30Z<p>Sadovoy: /* Стартовая генерация бонусов */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*'''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9618Collapse2018-07-16T12:09:54Z<p>Sadovoy: </p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках'''(''numTokenNums'') - Число номеров в фишках которые (для текущего уровня). Включая статические.<br />
*'''макс. номеров в фишках'''(''numTokenNumsMax'') - Максимальное число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление'''(''needBirth'') - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;<br />
*'''Схлопывание'''(''needCollapse'') - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
*'''стиль'''(''style'') - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);<br />
*'''анимация рождения'''(''dropBorn'') - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;<br />
*'''бомбы''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Специальные типы фишек=<br />
*'''nt_lock''' - графический ресурс фона при работающем "замке";<br />
*'''nt_lock_''' - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - запланирована новая линия в аркаде===<br />
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*'''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9617Collapse2018-07-16T11:50:57Z<p>Sadovoy: /* Звуки */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
*'''применение крестовой бомбы'''(''sndcross'') - звук при применении крестовой бомбы;<br />
*'''применение горизонтальной бомбы'''(''sndhor'') - звук при применении горизонтальной бомбы;<br />
*'''применение вертикальной бомбы'''(''sndver'') - звук при применении вертикальной бомбы.<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*'''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9616Collapse2018-07-16T11:45:36Z<p>Sadovoy: </p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект бомбы===<br />
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg".<br />
Данному объекту будет записано параметры:<br />
*'''effectOriginX,effectOriginY''' - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);<br />
*'''additionalNum''' - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));<br />
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Нумерация фишек объектом=<br />
Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:<br />
*'''0''' - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])<br />
*'''[1;n]''' - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);<br />
*'''[n+1;n+n]''' - цветные бомбы;<br />
*'''n+n+1''' - обычная бомба;<br />
*'''n+n+2''' - горизонтальная бомба;<br />
*'''n+n+3''' - вертикальная бомба;<br />
*'''n+n+4''' - крестовая бомба;<br />
*'''n+n+5''' - ячейка-Хамелеон;<br />
<br />
=Вычитаемые параметры= <br />
*'''tokenStyle''' - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");<br />
*'''bombClips''' - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба); <br />
*'''nextLine''' - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);<br />
*'''currentDt''' - время между генерациями следующего ряда(режим Аркада);<br />
*'''chameleonColors''' - номера цветных фишек, используемых для ячейки-Хамелеон;<br />
*'''level_cols''' - количество строчек поля текущего уровня;<br />
*'''level_rows''' - количество колонок поля текущего уровня;<br />
*'''lastMouseDnX,lastMouseDnY''' - координаты X,Y последнего нажатия мыши в координатах родительского объекта;<br />
*'''goal_any''' - текущее значение цели - выбить N фишек;<br />
*'''goal_lines''' - текущее значение цели - выжить N генераций линий(Аркада);<br />
*'''goal_locks''' - текущее значение цели - убрать N замков;<br />
*'''goal_num_%N%''' - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
<br />
==Поле==<br />
Поле указывается в файле уровня: <br />
<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level><br />
<br />
Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются).<br />
Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);<br />
**'''[1;m]''' - цветная фишка;<br />
**'''*'''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
**'''B''' - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле('''T'''):<br />
***'''0''' - цветная бомба 1-го цвета;<br />
***'''[1;m-1]''' - цветная бомба с 2-го по (m-1) цвета;<br />
***'''m''' - обычная бомба (взрывает всё в радиусе);<br />
**'''Z''' - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле ('''T'''):<br />
***'''0''' - обычная бомба (взрывает всё в радиусе);<br />
***'''1''' - горизонтальная бомба;<br />
***'''2''' - вертикальная бомба;<br />
***'''3''' - крестовая бомба;<br />
***'''4''' - ячейка-Хамелеон;<br />
*'''T''' - используется как дополнительное поле, для поля предыдущего поля ('''N''');<br />
*'''K''' - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):<br />
**'''0''' - нет покраски;<br />
*'''X''' - специальный функционал:<br />
**'''0''' - обычная ячейка;<br />
**'''Z''' - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром '''Y'''(если параметр не указан, считаем == 1):<br />
***'''0''' - нет жизни (но смысла в этом мало);<br />
***'''[1;n]''' - количество жизней;<br />
*'''Y''' - используется как дополнительное поле, для поля '''X''';<br />
<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Основные параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
<br />
==Дополнительные параметры==<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
<br />
==Бонусы==<br />
===Бонус Хамелеон===<br />
Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
===Стартовая генерация бонусов===<br />
Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки:<br />
startBomb'''N'''="'''4'''";<br />
где '''N''' - номер бонуса ( нумерация с "0"(первая цветная бомба));<br />
'''4''' - требуемое количество;<br />
<br />
===Генерация бонусов при досыпании===<br />
Для уровней с досыпанием (режим аркада, тоже считается с досыпанием), мы можем указать перечень бонусов и вероятность их генерации:<br />
*'''bombProbArray''' - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));<br />
*'''bombProb''' - общая вероятность генерации бонусов (бонус будет выбран из списка '''bombProbArray''' рандомно);<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9615Collapse2018-07-12T07:23:09Z<p>Sadovoy: /* Звуки */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''добавление фишки в выделение''' - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<nowiki><br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
</nowiki><br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9605Collapse2018-07-02T14:02:51Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
*'''start''' - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<nowiki><br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
</nowiki><br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=HiddenHint&diff=9604HiddenHint2018-07-02T13:15:53Z<p>Sadovoy: /* Добавляемые параметры */</p>
<hr />
<div>'''HiddenHint''' - тип [[Object|объекта]], который используется для управления подсказками в "хидденах".<br />
[[Файл:HiddenHint_1.jpg|right]]<br />
== Общие параметры ==<br />
<br />
Смотреть описание [[Object|Object]].<br />
<br />
== Основные параметры ==<br />
<br />
*'''картинка''' (''res'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table.<br />
<br />
'''Группа - анимация:'''<br />
*'''тип анимации''' (''animType'') - Тип анимирования сцены;<br />
*'''сцена''' (''anim_scene'') - Анимируемая сцена;<br />
*'''скорость''' (''vel'') - Скорость анимирования сцены (имеет смысл для фокусировки);<br />
*'''восстановить''' (''recover'') - Нужно ли восстанавливать исходное состояние сцены после отработки хинта (по умолчанию да): '''0''' - нет, '''1''' - да;<br />
*'''время''' (''anim_time'') - Время анимации ( минимум 0);<br />
*'''отсечение''' (''down_border'') - Нижнее отсечение ( минимум 0).<br />
<br />
== Добавляемые параметры ==<br />
<br />
<br />
[[Файл:HiddenHint_2.png|right]]<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по нажатию правой кнопки мыши.<br />
<br />
[[Файл:+.png]] '''ошибка запуска хинта''' (''hnt_err'') - Изменяет состояние объекта при ошибке запуска хинта:<br />
*'''объект''' (''obj'') - При клике на кнопку перевести объект в состояние из следующего поля;<br />
*'''состояние''' (''st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
[[Файл:+.png]] '''ошибка запуска хинта - у хидденлиста закончились сессии''' (''errSes'') - Изменяет состояние объекта при ошибке запуска хинта:<br />
*'''объект''' (''obj'') - При клике на кнопку перевести объект в состояние из следующего поля;<br />
*'''состояние''' (''st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
[[Файл:+.png]] '''ошибка хинта - хидденлист разобран''' (''errEnd'') - Изменяет состояние объекта при ошибке запуска хинта:<br />
*'''объект''' (''obj'') - При клике на кнопку перевести объект в состояние из следующего поля;<br />
*'''состояние''' (''st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
[[Файл:+.png]] '''хинт (type1)''' (''hnt1'') - Хинт с партиклами который облетает искомый объект по эллипсу: <br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''объект хинта''' (''hint'') - Объект хинта;<br />
*'''подлетание''' (''approach''): '''1''' - сначала подлетает к хиддену, '''0''' - начинать облетать сразу;<br />
*'''позиция (x)''' (''x0'') - Начальная позиция флайера (x);<br />
*'''позиция (y)''' (''y0'') - Начальная позиция флайера (y);<br />
*'''скорость подлета''' (''v_line'') - Скорость подлета;<br />
*'''скорость облета''' (''v_ellipse'') - Скорость облета;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет;<br />
*'''клонировать указатель''' (''hlclone'') - если выставлен, на искомом предмете соответственно будет клон указателя, который будет удалён только после нахождения предмета или ухода с экрана. При этом параметр '''Перманентный''' должен быть выключен.<br />
<br />
[[Файл:+.png]] '''хинт (type2)''' (''hnt2'') - Хинт с фоновой подложкой;<br />
*'''кнопка запуска''' (''button'') - Кнопка, по нажатию на которую запуcкается хинт. При нажатии кнопка должна изменить состояние хинту в "start";<br />
*'''объект хинта''' (''hint'') - Объект хинта. Такой себе воркер хинта (та самая подложка которая подсветит объекты). Является ресурсной машиной состояний (''machine''), которая имеет состояние: beg и end;<br />
*'''время''' (''time'') - Время работы хинта. Устанавливается в миллисекундах;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс). Время, за которое можно будет повторно использовать хинт;<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
[[Файл:+.png]] '''хинт (type3)''' (''hnt3'') - Хинт с подсветкой хидденов партиклами:<br />
*'''кнопка запуска''' (''button'') - Кнопка, по нажатию на которую запускается хинт. При нажатии кнопка должна изменить состояние хинту в "start";<br />
*'''объект хинта''' (''hint'') - Объект хинта. Объект типа ''flyer'' или ''machine'', у которого есть 2 состояния: beg и end;<br />
*'''время''' (''time'') - Время действия хинта. Устанавливается в миллисекундах.;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда. Время, за которое можно будет повторно использовать хинт. Если хинт заряжается моментально, то ставить не меньше 500 мс.<br />
*'''нечего подсказывать: объект''' (''fail_obj'') - При отсутствии объектов для подсветки данным хинтом перевести данный объект в новое состояние;<br />
*'''нечего подсказывать: состояние''' (''fail_st'') - Новое состояние для объекта из предыдущего поля;<br />
*'''хинт сработал: объект''' (''succ_obj'') - При успешной подсветке объекта данным хинтом перевести данный объект в новое состояние;<br />
*'''хинт сработал: состояние''' (''succ_st'') - Новое состояние для объекта из предыдущего поля;<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
[[Файл:+.png]] '''хинт (type4)''' (''hnt4'') - Хинт с таскаемым кругом или кольцом: <br />
*'''кнопка запуска''' (''button'') - Кнопка, по нажатию на которую запускается хинт. При нажатии кнопка должна изменить состояние хинту в "start";<br />
*'''объект хинта''' (''hint'') - Объект хинта. Является ресурсной (полупрозрачная область в виде круга) машиной состояний (''machine''), которая имеет состояние: beg и end. Ее подобъектом может быть кольцо. Таким образом, поисковые объекты будут проявляться между этим кругом и кольцом.<br />
*'''позиция (x)''' (''x0'') - Стартовая позиция (x), где появляется таскаемый кусок;<br />
*'''позиция (y)''' (''y0'') - Стартовая позиция (y), где появляется таскаемый кусок;<br />
*'''подсвечивать все''' (''hint_all''): '''1''' - подсвечивать все хиддены, '''0''' - подсвечивать один рандомно выбранный;<br />
*'''время''' (''time'') - Время действия хинта. Устанавливается в миллисекундах;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда. Время за которое можно будет повторно использовать хинт. Если хинт заряжается моментально, то ставить не меньше 500 мс;<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
[[Файл:+.png]] '''хинт (type5)''' (''hnt5'') - Хинт с миганием искомого объекта по альфе:<br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''время''' (''time'') - Время действия хинта;<br />
*'''прозрачность''' (''alpha'') - Целевая прозрачность как способ прятания объекта;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
[[Файл:+.png]] '''хинт (искра)''' (''hnt6'') - Хинт с ''искрой'' которая вылетает и указывает расположение искомого объекта:<br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''хвост''' (''tail'') - Хвост (как у кометы);<br />
*'''указатель''' (''ptr'') - Объект, зажигающийся на месте хиддена;<br />
*'''скорость''' (''vel'') - Скорость полета искры к объекту;<br />
*'''время''' (''tm'') - Время активности указателя;<br />
*'''x''' (''x'') - Точка вылетания искры (x);<br />
*'''y''' (''y'') - Точка вылетания искры (y);<br />
*'''лететь из объекта''' (''fromObject'') - если указан объект, хинт будет стартовать из координаты объекта;<br />
*'''spline key''' (''key'') - если указано, хвост и указатели будут лететь по сплайну, который пересчитается под координаты стартовой точки и координаты HO объекта (к которому летим);<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''лететь из таблицы''' (''fromTable'') - Если да, то хинт летит не из заданной точки, а из ячейки таблицы, соответствующей предмету.<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
*'''перманентный''' (''permanent'') - Если да, то хинт не будет завершаться до клика по предмету.<br />
*'''учитывать скейл сцены''' (''use_anim_stage_scale'') - Учитывать скейл сцены при подсчете координат полета хинта.<br />
<br />
<br />
[[Файл:+.png]] '''хинт (цепная молния)''' (''hnt7'') - Хинт с ''цепной молнией'' которая вылетает и поочередно указывает несколько искомых объектов:<br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''хвост''' (''tail'') - Хвост (как у кометы);<br />
*'''указатель''' (''ptr'') - Объект, зажигающийся на месте хиддена;<br />
*'''скорость''' (''vel'') - Скорость полета искры к объекту;<br />
*'''dt''' (''dt'') - Промежутки между вспышками указателя, если хвост не задан;<br />
*'''время''' (''tm'') - Время активности указателя;<br />
*'''x''' (''x ') - Точка вылетания искры (x);<br />
*'''y''' (''y'') - Точка вылетания искры (y);<br />
*'''min''' (''min'') - Минимальное количество подсвечиваемых объектов;<br />
*'''max''' (''max'') - Максимальное количество подсвечиваемых объектов;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
*'''перманентный''' (''permanent'') - Если да, то хинт не будет завершаться до клика по предмету (для корректной работы, нужно включить параметр - "перемещать в сцену", иначе при утке флаер будет статичен в не зависимости от зума HO сцены).<br />
*'''перемещать в сцену''' (''change_parent'') - Если да, то хинт будет перемешён в HO сцену во время работы(!!! обязательно указать флаерам прокликиваеммость).<br />
<br />
[[Файл:+.png]] '''хинт (остановка таймера)''' (''hnt8'') - Хинт с остановкой таймер на некоторое время:<br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''таймер''' (''tmr'') - Останавливаемый таймер;<br />
*'''время''' (''tm'') - Время остановки таймера;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
<br />
[[Файл:+.png]] '''хинт (бомба)''' (''hnt9'') - Хинт с ''бомбой'' которая взрывает несколько объектов.<br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''начальная задержка''' (''btm'') - Задержка между началом дрожания и взрывами.<br />
*'''интервал''' (''etm'') - Интервал между взрывами.<br />
*'''количество''' (''num'') - Количество взрываемых объектов.<br />
*'''отклонение''' (''dev'') - Максимальное отклонение сцены во время дрожания.<br />
*'''интервал дрожания''' (''dtm'') - Интервал между вызовами итераций дрожания.<br />
*'''конечная задержка''' (''wtm'') - Задержка после взрыва последнего объекта.<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
<br />
[[Файл:+.png]] '''хинт (фонарь)''' (''hnt10'') - Хинт с таскаемым кругом который восстанавливает цветность в своей окружности (работает только при наличии аномалии). <br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''эффект''' (''ef'') - Эффект, к которому применяется фонарь.<br />
*'''радиус''' (''er'') - Радиус фонаря в эффекте.<br />
*'''border''' (''eb'') - Толщина области перехода между фонарем и полным эффектом.<br />
*'''время''' (''etr'') - Время остановки таймера.<br />
*'''время''' (''tm'') - Время активности указателя;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет.<br />
<br />
<br />
[[Файл:+.png]] '''хинт (прогнать аномалию)''' (''hnt11'') - Хинт необходимый для изгнания аномалии прямиком из игры (работает только при наличии аномалии); данный хинт удаляет аномалии привязанные к объекту - effect ( аномалию дым - нужно отключать руками); <br />
*'''кнопка запуска''' (''button'') - Кнопка запуска хинта;<br />
*'''заряжаемый''' (''chargeable'') - Заряжаемая подсказка: '''1''' - вкл., '''0''' - выкл.;<br />
*'''время заряда''' (''charge_time'') - Время заряда ( минимум 500 мс);<br />
*'''блокирующий''' (''bl'') - Если да, то выполнение хинта блокирует возможность запуска других хинтов: '''0''' - да, '''1''' - нет;<br />
*'''правило подсветки''' ('''') - ;<br />
<br />
== Состояния ==<br />
<br />
* '''start''' - Запускает хинт.<br />
<br />
== Правила подсветки хинтов ==<br />
<br />
Объект хидден хинт может управлять подсветкой кнопок хинтов, чтобы обращать внимание пользователя на подсказки и заставлять его ими пользоваться. Правила подсветки записываются в виде строки:<br />
[[Файл:Hhint highlight1.png]]<br />
<br />
Пять чисел через запятую это: время до конца хидена min, время до конца хидена max, осталось объектов min, осталось объектов max, время с последнего найденного предмета. Времена в миллисекундах. Если нужно сделать несколько правил подсветки для одного хинта, то их нужно разделить вертикальной чертой как показано на картинке.<br />
<br />
Когда срабатывает нужное правило, то хидден-хинт переводит машинку из поля "Объект подсветки" в одно из состояний hl%d, где %d - номер хинта. Номер хинта можно узнать наведя мышку на добавляемое свойство. Например, если навести на хинт(искра), то мы увидим hnt6, значит объект подсветки будет переведен в состояние hl6.<br />
<br />
== Примечания ==<br />
<br />
*HiddenHint обязательно должен быть подключен к [[HiddenList]] для того что бы знать какие объекты ему показывать.<br />
<br />
*Если поисковая сцена имеет большее разрешение чем на устройстве, то хинт может ее проскейлить, что бы при подсказке были видны все объекты. Для этого в параметр хинта "сцена" нужно указать сцену, и в этой сцене настроить параметры "Открытие" и "Закрытие".<br />
<br />
== Примеры ==<br />
<br />
=== Хинт с партиклами, которые облетают искомый объект по эллипсу (type1)===<br />
<br />
[[Файл:Hint type1 1.jpg]] [[Файл:Hint type1 2.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (type1)'''<br><br />
2. Настраиваем его следующим образом:<br />
<br />
[[Файл:Hint type1 3.jpg]]<br />
<br />
3. Объектом хинта является флаер:<br />
<br />
[[Файл:Hint type1 4.jpg]]<br />
<br />
4. Объект хинта располагаем на сцене с поисковыми объектами.<br><br />
5. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
6. В группе параметров хинта '''анимация''' выбираем анимируемую сцену и тип анимации - фокусировка.<br />
<br />
<br />
===Хинт с подложкой (type2)===<br />
<br />
На некоторое время на сцене появляется подложка и активные хиддены становятся видны на ее фоне.<br />
<br />
[[Файл:hint2.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (type2)'''<br><br />
2. Настраиваем его следующим образом:<br />
<br />
[[Файл:Hint type2 1.jpg]]<br />
<br />
3. Объектом хинта является машина состояний. Представляет собой полупрозрачный (хотя не обязательно) бекграунд для затемнения сцены (на скрине выше это синий бекграунд). Имеет 2 состояния:<br />
<br />
*''beg'' — состояние, в которое он переводится в начале работы хинта и остается в нем до окончания его работы;<br />
*''end'' — состояние, в котором он находится все оставшееся время, и его начальное состояние.<br />
<br />
Как правило, в состоянии end задают нулевую прозрачность (al=0), имитируя таким образом невидимость подложки, а в состоянии beg — полную (al=1) непрозрачность.<br><br />
Должна находиться на сцене с поисковыми объектами и располагаться выше всех хидденов (то есть ниже всех хидден-объектов в дереве сцены) и связанных с ними картинок (например, таковыми могут быть небольшие бекграунды, прикрывающие хиддены).<br />
<br />
4. Время работы хинта, время заряда устанавливаем по своему усмотрению.<br><br />
5. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
=== Хинт с подсветкой хидденов партиклами (type3) ===<br />
<br />
Выбранный случайным образом хидден подсвечивается партикловым эффектом.<br />
<br />
[[Файл:hint3.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (type3)'''<br><br />
2. Настраиваем его следующим образом:<br />
<br />
[[Файл:Hint type3 1.jpg]]<br />
<br />
3. Объектом хинта является объект типа ''flyer''. На скрине это партикл взрыва. По настройкам параметров партикловых эффектов см. статью [[Flyer]].<br><br />
Объектом хинта также может быть машина состояний. Она должна иметь 2 состояния:<br><br />
*''beg'' — состояние, в которое он переводится в начале работы хинта и остается в нем до окончания его работы;<br />
*''end'' — состояние, в котором он находится все оставшееся время, и его начальное состояние.<br />
<br />
4. Объект хинта располагаем на сцене с поисковыми объектами.<br><br />
5. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
<br />
=== Хинт с таскаемым кругом и кольцом (type4) ===<br />
<br />
На поисковой сцене появляется круг с кольцом. Игрок таскает его по сцене, при этом выбранный случайным образом хидден или, в зависимости от настроек, все хиддены, становятся выше таскаемого круга, но ниже кольца.<br />
<br />
[[Файл:hint4.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (type4)'''<br><br />
2. Настраиваем его следующим образом:<br />
<br />
[[Файл:Hint type4 1.jpg]]<br />
<br />
3. Объектом хинта является ресурсная машина состояний. Имеет 2 состояния:<br />
<br />
*''beg'' — состояние, в которое он переводится в начале работы хинта и остается в нем до окончания его работы;<br />
*''end'' — состояние, в котором он находится все оставшееся время, и его начальное состояние.<br />
<br />
Как правило, в состоянии end задают нулевую прозрачность (al=0), имитируя таким образом невидимость подложки, а в состоянии beg — полную (единичную) прозрачность (al=1).<br><br />
<br />
5. Графический ресурс этой машины - некоторый полупрозрачный круг. Ее подобъект - объект типа ''image'', представляющий собой кольцо.<br><br />
6. Для объекта хинта устанавливаем в 1 флаг ''хранить нажатость''.<br><br />
7. Объект хинта должен находиться на сцене с поисковыми объектами и быть выше их всех.<br><br />
8. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
9. В группе параметров хинта '''анимация''' выбираем анимируемую сцену и нужный тип анимации.<br />
<br />
<br />
=== Хинт с миганием искомого объекта по альфе (type5) ===<br />
<br />
Заключается в том, что на указанное время изменяется прозрачность рандомно выбранного искомого объекта. Прозрачность также, как и время, задаются в настройках хинта.<br><br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (type5)'''<br><br />
2. Настраиваем его:<br />
<br />
[[Файл:Hint type5 1.jpg]]<br />
<br />
3. Время работы хинта, время заряда и прозрачность устанавливаем по своему усмотрению.<br><br />
4. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
<br />
=== Хинт (Искра), которая вылетает и указывает расположение искомого объекта ===<br />
<br />
[[Файл:Hint iskra 1.jpg]] [[Файл:Hint iskra 2.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (искра)'''<br><br />
2. Настраиваем его следующим образом<br />
<br />
[[Файл:Hint iskra 3.jpg]]<br />
<br />
3. Настраиваем флаеры хвоста и указателя:<br />
<br />
[[Файл:Hint iskra 4.jpg]] [[Файл:Hint iskra 5.jpg]]<br />
<br />
4. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
5. В группе параметров хинта '''анимация''' выбираем анимируемую сцену и тип анимации - фокусировка.<br />
<br />
6. Для подсветки пары объектов необходимо задать второй хвост и второй указатель (причем отличный от первого).<br />
<br />
7. В объект HiddenHint в поле '''object_to_hint''' запишется id HiddenObject который подсвечивается, в момент старта анимации.<br />
<br />
=== Хинт (Цепная молния), которая вылетает и поочередно указывает расположение нескольких искомых объекта ===<br />
<br />
[[Файл:Hint type7 1.jpg]] [[Файл:Hint type7 2.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (цепная молния)'''<br><br />
2. Настраиваем его следующим образом<br />
<br />
[[Файл:Hint type7 3.jpg]]<br />
<br />
3. Настройки флаеров хвоста и указателя такие же, как и для хинта ''Искра''.<br />
<br />
4. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
5. В группе параметров хинта '''анимация''' выбираем анимируемую сцену и тип анимации - фокусировка.<br />
<br />
<br />
=== Хинт с остановкой таймер на некоторое время ===<br />
<br />
Таймер останавливается на некоторое время, оставляя возможность игроку находить искомые предметы.<br><br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (остановка таймера)'''<br><br />
2. Настраиваем его следующим образом<br />
<br />
[[Файл:Hint type8 11.jpg]]<br />
<br />
3. Останавливаемый таймер - это таймер, который привязан к хидден-листу.<br><br />
4. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
<br />
=== Хинт с бомбой которая взрывает несколько объектов ===<br />
<br />
Бекграунд начинает дрожать и с некоторой задержкой взрываются/находятся несколько поисковых объектов. <br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (бомба)'''<br><br />
2. Настраиваем его следующим образом<br />
<br />
[[Файл:Hint type8 1.jpg]]<br />
<br />
3. Кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
<br />
=== Хинт с таскаемым кругом, который восстанавливает цветность в своей окружности ===<br />
<br />
[[Файл:Hint type10 1.jpg]]<br />
<br />
1. Выбираем для хинта добавляемый параметр [[Файл:+.png]] '''хинт (фонарь)'''<br><br />
2. Работает этот хинт при условии наличия аномалии. Поэтому для начала настраиваем объект типа 'effect'. На скрине - это эффект черно-белого негатива. Настроен он следующим образом:<br><br />
<br />
[[Файл:Hint type10 4.jpg]]<br />
<br />
3. Подключаем аномалию в хидден-листе:<br />
<br />
[[Файл:Hint type10 3.jpg]]<br />
<br />
4.Настраиваем хинт:<br />
<br />
[[Файл:Hint type10 2.jpg]]<br />
<br />
5. Не забываем, что кнопка запуска хинта должна содержать следующее событие:<br />
<br />
[[Файл:Hint iskra 6.jpg]]<br />
<br />
== Пример ==<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9603Collapse2018-06-27T14:45:59Z<p>Sadovoy: /* Структура файла */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<nowiki><br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
</nowiki><br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9602Collapse2018-06-27T14:45:19Z<p>Sadovoy: /* Структура файла */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<nowiki><levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
</nowiki><br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9601Collapse2018-06-27T14:45:04Z<p>Sadovoy: /* Файл уровней */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9600Collapse2018-06-27T14:44:35Z<p>Sadovoy: /* Файл уровней */</p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
<br />
<br />
*'''dropBorn''' - анимация рождения;<br />
*'''style''' - id стиля, применит указанный стиль (по сути перегрузка арта фишек), при этом стиль из файла уровней приоритетнее;<br />
<br />
<br />
=Файл уровней=<br />
Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:<br />
*'''файл уровня'''(levelFile) - путь к xml файлу уровней;<br />
*'''номер уровня'''(levelNum) - id уровня из файла уровней;<br />
<br />
На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.<br />
<br />
==Структура файла==<br />
<levels><br />
<!-- style --><br />
<style id="3"><br />
<tokens norm="355"/><br />
<tokens norm="356"/><br />
</style><br />
<br />
<!-- levels --><br />
<level id="1" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
<level id="2" rows="2" cols="2" numTokenNums="2" ><br />
<field><br />
0,0,<br />
0,0<br />
</field><br />
</level><br />
</levels><br />
<br />
Где <style> - стиль в котором перечисляем настройки фишек (resID);<br />
<level> - один игровой уровень<br />
<field> - стартовая настройка поля<br />
<br />
==Поле==<br />
Итак поле для объекта это строка которая имеет разделитель фишки "," при этом пробелы игнорируются.<br />
Код каждой фишки может состоять от 1 до 5-ти символов "NTKXY". <br />
Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY". <br />
<br />
Значение символов:<br />
*'''N''' - индекс фишки объекта ( стартует с "0");<br />
**'''0''' - рандомная обычная фишка;<br />
**'''0-9''' - рандомная обычная фишка;<br />
**'''*''' - "дырка" (пустая ячейка) которая никогда не заполнится;<br />
**'''#''' - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);<br />
<br />
==Цели==<br />
Важно указать в самом объекте флаг "перегрузка целей"(override_goal) и зануляем все параметры в теге "перегруженные цели" - чтобы не добавлялись цели которые нам не нужны (уронить статические, очистить поле).<br />
*'''goalAny''' - выбить N фишек (у объекте параметр '''goal_any''');<br />
*'''goalLines''' - выжить N генераций линий, для Аркады (у объекта параметр '''goal_lines''');<br />
*'''goalLocks''' - убрать N замков (у объекта параметр '''goal_locks''');<br />
*'''goalTokens''' - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя '''goal_num_%N%''', где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов '''numTokenNums''' не меньшим чем количество целей - иначе уровень нельзя будет пройти;<br />
<br />
==Параметры==<br />
*'''id''' - id уровня (объект возьмёт первый уровень который совпадёт по id);<br />
*'''cols''' - высота поля;<br />
*'''rows''' - ширина поля;<br />
*'''numTokenNums''' - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);<br />
*'''needCollapse''' - схлопывание фишек при пустой вертикальной линии;<br />
*'''needBirth''' - досыпание фишек (для аркады можно не указывать);<br />
*'''style''' - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку '''tokenStyle''' (resID фишек через запятую));<br />
*'''chameleonTime''' - время изменения фишки-Хамелеон (у объекта параметр '''currentDt''');<br />
*'''chameleonColors''' - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр '''chameleonColors''');<br />
<br />
==Бонусы==<br />
<br />
<br />
==Аркада==<br />
Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).<br />
*'''dt0''' - если больше 0 - включается режим аркады;<br />
*'''n''' - количество линий через которое время уменьшиться на множитель;<br />
*'''mult''' - множитель на которое уменьшиться время;<br />
<br />
При работе режима, объект записывает строку ('''nextLine''') в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Collapse&diff=9599Collapse2018-06-27T13:39:40Z<p>Sadovoy: </p>
<hr />
<div>[[Object|Объект]] «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".<br><br />
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.<br><br />
<br />
[[Файл:27-12-2013 14-15-18.png|150px|thumb|right]]<br />
[[Файл:27-12-2013 16-18-35.png|250px|thumb|right]]<br />
<br />
<br />
=Свойства=<br />
'''Общие параметры'''<br />
*'''Слушатель''' - Объект типа matchbattle.<br />
*'''Время партии''' - Время игры. По окончанию которого будет засчитано поражение.<br />
<br />
<br />
=Перегруженные правила=<br />
*'''Типов фишек''' - Число разновидностей типов фишек.<br />
*'''Номер в фишках''' - Число номеров в фишках. Включая статические.<br />
*'''Номер бомбы''' - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.<br />
*'''Номер крестобомбы''' - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.<br />
*'''Статический номер''' - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.<br />
*'''Типов узлов''' - Число разновидностей типов нормальных узлов графа.<br />
*'''Условия пометки''' - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.<br />
*'''Монотонность''' - Должны ли номера в первой пометке быть монотонной последовательностью.<br />
*'''Мин.пометка''' - Минимальное число фишек помечаемых в первой пометке.<br />
*'''Макс.пометка''' - Максимальное число фишек помечаемых в первой пометке.<br />
*'''Время пометки''' - Пометка завершается спустя заданное в этом поле время.<br />
*'''Переставлять''' - Фишки первой пометки переставляются.<br />
*'''Уменьшать''' - Фишки первой пометки уменьшают свой номер.<br />
*'''Удалять''' - Удалять ячейки первой пометки.<br />
*'''Условие удаления''' - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.<br />
*'''Тип удаления''' - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.<br />
*'''Мин.удаление''' - Минимальное число фишек, которое можно удалить.<br />
*'''Генерация без мачей''' - При генерации поля избегать готовых совпадений.<br />
*'''Проверка после осыпания''' - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.<br />
*'''Добавление''' - Нужно ли добавлять фишки на поле. Или игра на разбор.<br />
*'''Схлопывание''' - Нужно ли схлопывание (Ликвидация пустых столбцов).<br />
*'''Менять тип узла''' - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.<br />
*'''Поддерживать число ходов''' - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.<br />
*'''Тащить фишку''' - Тащить первую фишку пометки за пальцем.<br />
*'''Завершать пометку''' - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.<br />
<br />
<br />
=Перегруженные цели=<br />
*'''Очистить поле''' - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.<br />
*'''Перекрасить поле''' - Перекрасить все ячейки поля в базовый тип.<br />
*'''Уронить статические''' - Уронить все статические фишки на дно поля.<br />
*'''Уничтожить фишек''' - Уничтожить фишек, количество через запятую.<br />
<br />
<br />
=Внешний вид=<br />
*'''Картинка''' - Графический ресурс картинки пазла.<br />
*'''Фишки''' - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.<br />
*'''Ячейки''' - Графический ресурс ячейки.<br />
*'''Курсор''' - Курсор для выделения фишек.<br />
*'''Колонок''' - Число колонок на которые разбивается пазл.<br />
*'''Строк''' - Число строк на которые разбивается пазл.<br />
*'''Авторазмер''' - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек<br />
*'''Сетка?''' - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.<br />
*'''Счетчик статических''' - Счетчик статических. Объект типа каунтер.<br />
*'''Прогресс статических''' - Прогресс-бар статических. Объект типа progress.<br />
<br />
<br />
<br />
<br />
=Времена этапов=<br />
*'''невидимости''' - Начальная пауза перед откртыием пазлы.<br />
*'''открытия''' - Время открытия исходной картинки (проявляется по alpha).<br />
*'''показа''' - Время показа исходной картинки (после проявления).<br />
*'''перемешивания''' - Время визуализации процесса перемешивания ячеек.<br />
*'''финала''' - Время финального показа пазлы после её разбора, перед переходом к закрытию.<br />
*'''закрытия''' - Время закрытия пазлы (в состояниия close, исчезает по alpha).<br />
<br />
<br />
<br />
=Времена игры=<br />
*'''перестановки''' - Время перестановки двух ячеек местами при их выборе.<br />
*'''движения''' - Время движения фишек от одного узла к соседнему.<br />
*'''движения верх''' - Время движения фишек от одного узла к соседнему при отскоке.<br />
*'''отскока''' - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"<br />
*'''рождения и удаления''' - Время рождения и удаления фишки.<br />
*'''поворота''' - Время поворота ячейки при повторном клике на нее.<br />
*'''паузы''' - Время паузы перед началом перестановки или поворота.<br />
*'''подсказки1''' - Время за которое проявляется исходная картинка в состоянии hint.<br />
*'''подсказки2''' - Время в течении которого показывается после проявления исходная картинка в состоянии hint.<br />
*'''подсказки3''' - Время в течении которого закрывается после показа исходная картинка в состоянии hint.<br />
<br />
<br />
<br />
=Хинт при бездействии=<br />
*'''время задержки''' - Время бездействия, после которого следует показывать хинт.<br />
*'''машина''' - Объект, который будет установлен между двумя фишками.<br />
<br />
<br />
<br />
=Генерация поля=<br />
*'''min размер кластера''' - min размер кластера из фишек одного типа<br />
*'''max размер кластера''' - max размер кластера из фишек одного типа<br />
<br />
<br />
<br />
=Звуки=<br />
*'''нажатие на фишку''' - Звук нажатия на фишку.<br />
*'''перемещение фишки''' - Звук перемещения фищки.<br />
*'''возврат фишки''' - Звук возврата фищки при неудачном перемещении.<br />
*'''падение фишки''' - Звук для падения фишки.<br />
<br />
<br />
<br />
=Добавляемые свойства=<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - выигрыш===<br />
- изменить состояние / параметр объекта в случае выигрыша.<br />
<br />
===[[Файл:+.png]] Изменить состояние / параметр объекта - проигрыш===<br />
- изменить состояние / параметр объекта в случае проигрыша<br />
<br />
===[[Файл:+.png]] Изменить состояние объекта - клик на одиночную===<br />
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"<br />
<br />
===[[Файл:+.png]] Звук фишки===<br />
- Удаление, появление.<br />
<br />
===[[Файл:+.png]] Уровень сложности===<br />
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.<br />
<br />
===[[Файл:+.png]] Графика фишки===<br />
- Обычная: графический ресурс перетаскивается из редактора ресурсов.<br />
<br />
===[[Файл:+.png]] Эффект===<br />
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.<br />
<br />
===[[Файл:+.png]] Эффект крестобомбы===<br />
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.<br />
<br />
=Состояния=<br />
*'''beg''' - пауза перед open<br />
*'''open''' - появляется по alpha-каналу<br />
<br />
*'''sel1''' - ждем окончания первой пометки<br />
*'''sel1_end''' - показываем окончание первой пометки<br />
*'''sel1_transf1''' - первая трансформация первой пометки<br />
*'''sel1_transf2''' - вторая трансформация первой пометки<br />
*'''sel2''' - ждем окончания второй пометки<br />
*'''sel2_end''' - показываем окончание второй пометки<br />
*'''sel2_trands1''' - первая трансформация второй пометки<br />
*'''sel2_trands2''' - вторая трансформация второй пометки<br />
<br />
*'''born''' - рождение фишек<br />
*'''move''' - перемещаем фишки <br />
*'''aftermatch''' - проверяем, не случилось ли чего-то после движения/добавления фишек<br />
*'''close''' - исчезает по alpha-каналу<br />
*'''end''' - недоступна, невидима<br />
*'''rotate_left''' - повернуть влево на 90 градусов<br />
*'''rotate_right''' - повернуть вправо на 90 градусов<br />
*'''undo''' - отменить один ход<br />
*'''remove_color''' <br />
*'''remove_single''' <br />
*'''shuffle_cols''' <br />
*'''remove_last''' - удалить последнюю кликнутую ячейку (покупное удаление одиночных)<br />
<br />
=Файл уровней=<br />
<br />
<br />
=Пример=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip<br />
<br />
<br />
[[Category:Game mechanic]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Eitems&diff=9598Eitems2018-06-27T13:38:03Z<p>Sadovoy: /* Cостояния */</p>
<hr />
<div>[[Object|Объект]] '''Eitems''', служит для связи инвентаря(магазина) и экономики<br />
<br />
=Свойства=<br />
<br />
*'''иконка ресурса 1''' - Графический ресурс иконки монет.<br />
*'''иконка ресурса 2''' - Графический ресурс иконки кристаллов<br />
<br />
==Ссылки на объекты==<br />
<br />
[[Файл:Eitems.jpg|right]]<br />
*'''economics''' - Ссылка на объект economics.<br />
<br />
*'''таблица''' - Ссылка на таблицу, где будут размещаться шаблоны.<br />
<br />
*'''шаблон магазина''' - Ссылка на шаблон магазина.<br />
<br />
*'''шаблон инвентаря''' - Ссылка на шаблон инвентаря.<br />
<br />
*'''шаблон создания''' - Ссылка на шаблон создания конкретного объекта в инвентаре.<br />
<br />
*'''инвентарь''' - Для связи объектов economics, например, с tools.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br clear /br><br />
<br />
==Окно подтверждения покупки==<br />
<br />
[[Файл:Eitems2.jpg|right]]<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''иконка цены''' - Объект отображающий иконку цены (кристаллы, золото и т.п.).<br />
*'''цена''' - Счетчик отображающий непосредственно цену.<br />
*'''купить''' - Кнопка купить. Вызывает объекту eitems состояние ''buy''.<br />
*'''использовать''' - Кнопка использовать. Вызывает объекту eitems состояние ''use''. Состояние ''use'' вызвать больше одного раза подряд нельзя, лучше после вызова состояния прописать закрытие окна.<br />
*'''количество''' - Счетчик отображающий количество предметов на данный момент. Если не установлена кнопка ''использовать'' - счетчик работать не будет, он будет виден, но отобразит не корректные данные.<br />
<br />
Пример:<br />
<br />
[[Файл:Eitems3.jpg|300px]]<br />
<br />
==Окно подтверждения продажи==<br />
[[Файл:Eitems sell.jpg|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно подтверждения продажи. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''иконка цены''' - объект типа картинка, отображающий иконку цены, это может быть золото, кристаллы и т.п.<br />
*'''цена''' - счетчик, отображающий цену продаваемого предмета.<br />
*'''продать''' - кнопка, по нажатию на которую, происходит продажа предмета. Вызывает объекту eitems состояние ''sell''.<br />
*'''использовать''' - кнопка, по нажатию на которую, предмет используется.<br />
*'''количество''' - счетчик, отображающий количество предметов, которые есть в наличии на данный момент.<br />
*'''иконка ресурса 1''' - графический ресурс, отображающий иконку монет.<br />
*'''иконка ресурса 2''' - графический ресурс, отображающий иконку кристаллов.<br />
<br />
<br />
==Окно создания предмета==<br />
[[Файл:Craft1.png|250px|right]]<br />
<br />
*'''окно''' - некая машина, содержащая в себе всю необходимую информацию,олицетворяет собой само окно создания предмета. Должно содержать состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета.<br />
*'''текст(объект)''' - текстовый объект, отображающий название предмета.<br />
*'''описание (объект)''' - текстовый объект, отображающий описание предмета, который продается.<br />
*'''процент''' - счетчик, отображающий сколько процентов ингридиентов собрано.<br />
*'''создать''' - кнопка, которая создает предмет. Вызывает состояние ''craft_item''. Находится в состоянии disable если не хватает ингридиентов для крафта.<br />
*'''таблица''' - таблица отображает сколько ингридиентов собрано. Должна иметь 2 строки. В первую строку помещаются иконки ингридиентов, а во вторую строку помещается количество ингридиентов в формате "есть"/"нужно".<br />
<br />
Ингридиенты для крафта добавляются в объекте economics в разделе "Предмет".<br />
<br />
==Добавляемые параметры==<br />
<br />
[[Файл:+.png]] '''нехватка ресурсов''' - При попытке купить предмет, когда не хватает средств, будет передаваться соответствующее состояние объекту указанному в следующем поле.<br />
<br />
<br />
[[Файл:+.png]] '''свой фильтр''' - Список предметов. Формируется путем перетягивания с тестовой базы связанных с предметами id - шников.<br />
<br />
==Параметры==<br />
<br />
[[Файл:Eitems1.jpg|right]]<br />
Есть возможность применять фильтры к предметам, чтобы отображать только предметы нужной нам категории. Можно этот делать двумя способами.<br />
<br />
1) Категория указывается в настройках предметов в объекте economics. Для этого есть параметр '''filter'''. Этот параметр является текстовым и перетаскивается из текстовой базы. После определения параметра фильтрации переводим объект eitems в состояние '''filter'''.<br />
<br />
2) Сформировать свой фильтр с помощью добавляемого свойста. Записать в параметр '''filter''' номер фильтра по порядку. Перевести объект eitems в состояние '''custom_filter'''.<br />
<br />
<br />
'''param_num''' - кол-во предметов, можно задать перед вызовом состояний ''add_param'', ''buy_param''<br />
<br />
==Cостояния==<br />
<br />
*'''Store''' - Отобразить шаблон магазина.<br />
*'''Inventory''' - Отобразить шаблон инвентаря.<br />
*'''craft''' - Отобразить шаблон крафта предметов.<br />
*'''filter''' - Задать категорию предметов, исходя из настроек предметов в объекте ''economics''.<br />
*'''custom_filter''' - Задать категорию предметов, исходя из ''своего фильтра''.<br />
<br />
Перед тем, как переводить объект eitems в следующие состояния, нужно его параметру param присвоить текстовый id соответствующего предмета.<br />
<br />
*'''hide_param''' - Спрятать объект (итемс пропадает и из магазина, и из инвентаря).<br />
*'''use_param''' - Использовать объект из поля param или просто вычесть его, если предмет не используемый.<br />
*'''use_param_no_update''' - такое же использование предмета как и '''use_param''', но без обновления экономики (Hidden365).<br />
*'''add_param''' - Добавляет объект из магазина в инвентарь, но не вычитает ресурс (пассивное добавление итемса)<br />
*'''buy_param''' - Добавляет объект из магазина в инвентарь и вычитает ресурс (осуществляет покупку итемса).<br />
*'''check_price''' - узнать значение предмета из поля param (записывает цену в параметры - checked_res1 и checked_res2 )<br />
*'''craft_item''' - Создает предмет из других предметов (предметы необходимые для создания при этом отнимаются).<br />
*'''buy''' - Купить предмет для которого показано окошко покупки.<br />
*'''use''' - Использовать предмет для которого показано окошко покупки. (В параметр '''last_used_item''' запишется id примененного предмета).<br />
*'''cancel_param''' - Отменить действие амулета из поля param.<br />
*'''sell''' - Продать предмет для которого показано окошко продажи.<br />
*'''wnd_param''' - Показывает окно подтверждения покупки для предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''show_craft_param''' - Показывает окно крафта предмета, id которого мы предварительно запишем в параметр param объекта eitems.<br />
*'''ingridient_click''' - Вызывается при клике на таблицу ингридиентов в окне крафта, показывает окно покупки ингридиента.<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Пример=<br />
<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Store&diff=9586Store2018-06-15T11:04:02Z<p>Sadovoy: /* Обработчики покупки */</p>
<hr />
<div>{{TOC right}}<br />
<br />
[[Object|Объект]] '''Store''' необходим для описания InApp покупок(позволяют продавать отдельные бонусы, паки и т.п.) в игре.<br />
<br />
== Параметры объекта Store ==<br />
<br />
*'''service id''' - Идентификатор сервиса для Fortumo<br />
*'''app secret''' - Секретный ключ для Fortumo<br />
*'''group id''' - ID группы для Samsung<br />
*'''wallet''' - Объект типа [[Wallet|Wallet]]<br />
<br />
'''Группа adjust'''<br />
*'''включить adjust''' - нет=0, да=1;<br />
*'''событие первой покупки для iOS'''<br />
*'''событие первой покупки для Ansroid'''<br />
*'''событие покупки для iOS'''<br />
*'''событие покупки для Android'''<br />
<br />
==Добавляемые параметры==<br />
<br />
[[Файл:+.png]] '''Покупка''' - Описание одной внутриигровой покупки.<br />
<br />
*'''id покупки''' - внутренний id покупки<br />
*'''числовой id покупки''' - Числовой id покупки для сохранения истории покупок в опции<br />
*'''цена''' - Цена покупки по умолчанию<br />
*'''объект (успех)''' - Этому объекту будет сообщено об успехе покупки<br />
*'''состояние (успех)''' - Это состояние будет установлено объекту при успешной покупке<br />
*'''объект (провал)''' - Этому объекту будет сообщено о неудаче покупки<br />
*'''состояние (провал)''' - Это состояние будет установлено объекту при ошибке/отмене покупки<br />
*'''iOS id покупки''' - id покупки в магазине Apple для iOS версии приложения<br />
*'''Amazon id покупки''' - id покупки для Amazon версии приложения<br />
*'''Fortumo id покупки''' - id Fortumo покупки для Android версии приложения<br />
*'''Описание покупки Fortumo''' - отбражаемое описание покупки для Frotumo под Android<br />
*'''Fortumo service Id''' - берутся с сайта фортумо (их видно в свойствах покупки)<br />
*'''Fortumo appSecret''' - берутся с сайта фортумо (их видно в свойствах покупки)<br />
*'''Samsung Item ID''' - id покупки в самсунговском маркете<br />
*'''Wild Tangent Product Name''' - имя продукта в маркете Wild Tangent(берётся из сайта Wild Tangent)<br />
*'''Wild Tangent Partner Name''' - имя партнера в маркете Wild Tangent(берётся из сайта Wild Tangent)<br />
*'''Wild Tangent Site Name''' - имя сайта в маркете Wild Tangent(берётся из сайта Wild Tangent)<br />
*'''Wild Tangent Game Name''' - имя игры в маркете Wild Tangent(берётся из сайта Wild Tangent)<br />
*'''Google Product ID''' - ID покупки на Google Play [[http://ge.absolutist.com/index.php/Store#.D0.94.D0.BE.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D1.81.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D1.8F]]<br />
*'''BlackBerry id покупки''' - BlackBerry ID<br />
*'''WP8 ID''' - id покупки для Windows Phone 8 приложений<br />
*'''Windows 81 id покупки''' - Windows 81 ID<br />
*'''Netmarble transaction id''' - Netmarble transaction id<br />
*'''Netmarble item id''' - Netmarble item id<br />
*'''Tizen id покупки''' - id покупки в магазине Tizen<br />
*'''Yandex id покупки''' - id покупки в магазине Yandex<br />
*'''Nokia id покупки''' - id покупки в магазине Nokia<br />
*'''Mobiroo id покупки''' - id покупки в магазине Mobiroo<br />
*'''Web facebook id''' - Web facebook id<br />
*'''Web odnoklassniki id''' - Web odnoklassniki id<br />
*'''Web vkontakte id''' - Web vkontakte id<br />
*'''Web yahoo id''' - Web yahoo id<br />
*'''Web mailru id''' - Web mailru id<br />
*'''Web wizq id''' - Web wizq id<br />
*'''Steam id покупки''' - id покупки в Steam версии приложения<br />
*'''Consumable''' - 1 - покупка расходуемая, 0 - покупка раз и навсегда. '''! Важно, если параметр не указан, по-умолчанию покупка - навсегда !'''<br />
*'''объект (restore)''' - объект - Слушатель восстановления покупки. Этому объекту будет сообщено об успехе восстановления этой покупки покупки.<br />
*'''состояние (restore)''' - Это состояние будет установлено объекту при успешном восстановлении этой покуки<br />
<br />
<br />
[[Файл:+.png]] '''успех restore''' - Выполняется когда хотя бы одна покупка успешно восстановлена.<br />
<br />
*'''объект''' - Объект - состояние которого меняем. Этому объекту будет сообщено о завершении восстановления покупок.<br />
*'''состояние''' - Это состояние будет установлено объекту при завершении восстановления покупок.<br />
<br />
<br />
[[Файл:+.png]] '''ошибка restore''' - выполняется, когда произошла ошибка при восстановлении покупок<br />
<br />
*'''объект''' - Объект - состояние которого меняем. Этому объекту будет сообщено об ошибке восстановления покупок.<br />
*'''состояние''' - Это состояние будет установлено объекту при ошибке восстановления покупок.<br />
<br />
<br />
[[Файл:+.png]] '''пусто restore''' - выполняется когда нет покупок для восстановления<br />
<br />
*'''объект''' - Объект - состояние которого меняем. Этому объекту будет сообщено об отсутствии покупок для восстановления.<br />
*'''состояние''' - Это состояние будет установлено объекту при отсутствии покупок для восстановления.<br />
<br />
==Состояния==<br />
<br />
*'''purchase''' - совершить покупку, взяв ее идентификатор (внутренний id) из параметра ''productBundle''<br />
*'''restore''' - вызвать восстановление покупок<br />
<br />
<br />
<br />
==Создание, совершение и восстановление покупок==<br />
<br />
===Создание===<br />
<br />
'''Шаг 1.''' Создание обюъекта Store.<br />
На глобальном экране (например, там, где находятся [[options]]) создать объект [[store]]. Для этого на сцене ПКМ (правой кнопкой мыши), из выпадающего меня выбрать "создать объект сцены в текущем объекте". У созданного объекта изменить тип объекта на [[store]]. В поле ''имя'' вводим уникальное имя (приучаем себя к порядку в проекте).<br />
<center><br />
[[Файл:store_new.png]]<br />
</center><br />
<br />
'''Шаг 2.''' Создание покупки.<br />
* В свойствах этого объекта нажимаем ПКМ и добавляем раздел '''in-app покупка'''. По умолчанию создаются параметры: объект (успех), состояние (успех), объект (провал), состояние (провал), объект (restore), состояние (restore).<br />
* Для выбора остальных параметров нужно нажать на кнопку с троеточием, откроется окно с параметрами, в котором проставим галочки на нужных параметрах:<br />
<center><br />
[[Файл:store_params.png]].<br />
</center><br />
'''!!! Обязательным параметром является ''внутренний id покупки'' - это уникальный идентификатор покупки в проекте.!!!'''<br />
Можно выбирать сразу несколько систем in-app покупок - при сборке в зависимости от платформы и целевого маркета на устройстве будут использованы соответствующие покупки.<br />
* В первом поле "'''id покупки'''" записываем строковый идентификатор инапа. Это может быть любая строка, уникальная для каждого инапа. Если в строке встречаются точки, то информация о покупках будет сохранятся в поддиректориях опций. Эта строка будет использоваться в игре объектами для выяснения того, была ли уже проведена покупка или нет и для совершения покупки. '''!!!Недопустимо начинать внутренний id покупки с числа!!!'''<br />
* Во втором поле, в примере "'''iOS id покупки'''", записывается идентификатор этого инапа, в нашем случае на Apple Store. Аналогично для других систем.<br />
* Далее, таким же образом, добавляется следующий инап. '''!!!Недопустимо использовать одинаковый идентификатор инапа из стора в разных внутренних покупках!!!'''<br />
В результате, окно настроек объекта будет выглядеть примерно таким образом:<br />
<center><br />
[[Файл:store_buy.png]]<br />
</center><br />
<br />
<br />
===Совершение покупки===<br />
<br />
Для инициации процесса покупки существует несколько способов.<br />
<br />
'''Способ 1.''' По нажатию на кнопку.<br />
В кнопке добавляется свойство "'''совершить in-app покупку'''" (как обычно, ПКМ). В нем отмечается галкой поле ''внутренний id покупки'' - тот же, что и "id покупки" в объекте [[store]]. По нажатию на эту кнопку произойдет обращение к магазину.<br />
<br />
'''Способ 2.''' Из машины состояний.<br />
В машине состояний выбрать команду '''in-app совершить in-app покупку''', в ней отметить галкой поле ''внутренний id покупки'' по аналогии с кнопкой. При вызове нужного состояния машине будет произведено обращение к магазину.<br />
<br />
===Обработчики покупки===<br />
Перед вызовом обработчика успеха объект пишет в шапку опций параметры:<br />
*'''store_last_purchase_id''' - внутренний id совершённой покупки<br />
*'''store_last_purchase_date''' - дата последней покупки<br />
<br />
<br />
'''Обработка успеха'''<br />
Если игрок произвел покупку, то объект, заданный в поле этой покупки объекта Store ''объект (успех)'' будет переведен в состояние ''состояние (успех)''. В этом объекте (обычно [[Machine|машина состояний]]) может быть активированы некоторые действия (например, спрятаны замочки, блокирующие продаваемый бонус). Одновременно с этим, в раздел опций который соответствует полю "внутренний id покупки" будет записано значение "1" (покупка совершена). Это поле может в дальнейшем вычитываться различными игровыми объектами.<br />
Если в объекте Store указан объект Wallet, и начисление ресурсов покупки происходит через него, то начисление произойдет автоматически при успехе покупки.<br />
<br />
'''Обработка ошибки'''<br />
Если покупка не была совершена (нет интернета, игрок не стал её делать и т.п.), то спустя некоторое время ''объект (провал)'' будет переведен в ''состояние (провал)''. В этом объекте можно, например, открыть окно, сообщающее, что покупка не может быть произведена и инап не активирован.<br />
В основном для обработки ошибок используется объект [[Errormanager|Errormanager]].<br />
<br />
===Типы ошибок при совершении покупки===<br />
<br />
0 - Unknown error<br />
<br />
1 - Client is not allowed to make the payment<br />
<br />
2 - Client canceled purchase<br />
<br />
3 - Invalid parameter/purchase ID<br />
<br />
4 - Device is not allowed to make the payment<br />
<br />
5 - No internet connection ( нет сети )<br />
<br />
6 - No internet connection ( нет интернета )<br />
<br />
7 - The service is not available for some reason (Услуга временно не доступна)<br />
<br />
8 - Purchase restore failed (Восстановить покупку не возможно)<br />
<br />
код ошибки находится в объекте типа options в параметре store.lastError<br />
<br />
В данный момент для IOS работает возврат всех ошибок, для других платформ "неизвестная ошибка" и "отсутствие интернета".<br />
<br />
<br />
===Восстановление покупок===<br />
<br />
В некоторых магазинах используется восстановление покупок автоматически. В Apple Store для восстановления нерасходуемых покупок нужно вызвать состояние ''restore''.<br />
<br />
В полях "объект (restore)" и "состояние (restore)" in-app покупки указывается машина и состояние в которое её надо перевести, если придёт сообщение, о том, что данная покупка должна быть восстановлена.<br />
<br />
Обработчики "успех restore", "ошибка restore" и "пусто restore" используются в общем по приходу сообщений о восстановлении. Т.е. если пришло сообщение в восстановлении 2-х покупок, то переведутся в указанные состояние 2 машины в покупках, которые необходимо восстановить, и переведётся машина в "успех restore" в указанное состояние. Если придёт сообщение о ошибке восстановления или о том что нет покупок для восстановления , то машины в "ошибка restore" и "пусто restore" переведутся в указанные состояние соответственно.<br />
<br />
===Восстановление покупки через патч опций===<br />
<br />
Если возникла необходимость восстановить покупку методом патча опций, то процедура следующая:<br />
* патчем записываем в опции в некий параметр строку ''внутренний id покупки'';<br />
* машиной состояний вычитываем эту строку и записываем в параметр ''productBundle'' и вызываем состояние ''purchase''.<br />
<br />
В итоге получаем успех совершенной покупки.<br />
<br />
<br />
== Пример InApp-a==<br />
<br />
Предположим, что в игре [[puzzle]] есть бонус, ставящий ячейку на своё место.<br />
Игроку дается возможность использовать этот бонус 3 раза за игровую сессию, после чего появляется окно на подобное этому:<br />
<center><br />
[[Файл:store2.png]]<br />
</center><br />
При нажатии на крестик окно закрывается, а при нажатии на замок активируется процесс покупки.<br />
<br />
Голубая кнопка с белым ноликом является кнопкой запуска хинта. В ней есть раздел<br />
* '''изменить состояние объекта'''<br />
** объект = puzzle (идентификатор миниигры [[puzzle]])<br />
** состояние = swap (состояние котором одна из ячеек становится на свое место).<br />
<br />
Белая цифра поверх кнопки - это счетчик [[counter]]. Его идентификатор cnt_hnt сообщается пазле (она уменьшает его значение при выполнении этого хинта). Диапазон изменения счетчика задан в пределах min=0, max=3. Начальное значение val=3. Кроме этого в счетчик правой кнопкой мыши добавлены разделы:<br />
* '''min: изменить объект'''<br />
** объект = win_buy_hint<br />
** состояние = open<br />
* '''minIf: условие изменения min'''<br />
** куплено = buy.hint<br />
** not = 1<br />
Эти разделы означают, что при достижении счетчиком минимальной границы будет открыто окно win_buy_hint если в опциях '''не''' (поле not) отмечена покупка "buy.hint".<br />
<br />
Заметим, что пазла [[puzzle]] выполняет этот хинт (получив состояние от кнопки), если счетчика этих хинтов нет, или он не достиг минимума, или достиг, но в нем нет выполнившегося раздела "min: изменить объект".<br />
<br />
Само окно win_buy_hint (желтый прямоугольник) является [[Machine|машиной состояний]] в которой может быть выключен счётчик, открывается окно, закрывается окно.<br />
<br />
У машины состояний есть 2 подобъекта - кнопки с замочком и крестиком.<br />
Крестик имеет добавленный раздел, который закрывает окно.<br />
Замок запускает процесс покупки и также закрывает окно:<br />
* '''изменить состояние объекта'''<br />
** объект = win_buy_hint<br />
** состояние = close<br />
* '''совершить in-app покупку'''<br />
** id покупки = buy.hint<br />
** объект (успех) = win_buy_hint<br />
** состояние (успех) = hide <br />
** объект (провал) = win_error<br />
** состояние (провал) = open <br />
В случае успешной покупки счетчик становится невидимым (состояние hide окна). При неудаче открывается окно win_error, аналогичное win_buy_hint сообщающее об ошибке покупки хинта.<br />
<br />
Обратим внимание, что выполнение состояний "успех" и "провал" является отложенными во времени.<br />
Они вызываются магазином, когда соответствующие события (покупка или отказ от неё) возникнут.<br />
<br />
== Дополнительные сведения ==<br />
<br />
===Покупки Google Play===<br />
<br />
* Для работы покупок на Google Play необходимо добавить разрешения:<br />
<pre><br />
<br />
<uses-permission android:name="com.android.vending.BILLING" /><br />
<br />
</pre><br />
<br />
<br />
* Для получения ID покупки на Google Play необходимо сначала загрузить apk с разрешением покупок<br />
<br />
* Разрешения записываются в AndroidManifest.xml, который находится обычно в каталоге %s3e_dir%\deploy\plugins\android. Также можно вместо AndroidManifest.xml вносить соответствующие настройки в android-extra-manifest.xml, который находится в каталоге %каталог_редактора%\system\marmalade\conf\%марект%(к примеру android)<br />
<br />
* Для приложения с покупками на google play надо добавить лицензионный ключ приложения в app.icf в группу [AndroidLVL] и разбить его на 4 части длинной не более 100 знаков. Также добавить для бесплатного приложения параметр ''free_app=1''<br />
<pre><br />
[AndroidLVL]<br />
base64_public_key_1=""<br />
base64_public_key_2=""<br />
base64_public_key_3=""<br />
base64_public_key_4=""<br />
free_app=1<br />
</pre><br />
<br />
* Для корректной обработки покупок в случае неожиданного закрытия приложения(например во время открытого системного окна с процессом покупки пользователь сворачивает всё и закрывает приложение), необходимо добавить восстановление покупок для всех типов покупок. Таким образом если покупка произошла успешно, но в приложение не попали, при следующем запуске пользователю зачислится то что он купил.<br />
<br />
===Настройка маркета действующих покупок===<br />
<br />
* Для работы соостветствующего маркета на устройстве недобходимо в [[app.icf]] в секцию [Game] добавить параметр Market с значением для маркета.<br />
<br />
магазин - значение в [[app.icf]]<br><br />
Fortumo - fortumo<br><br />
Samsung - samsung<br><br />
Amazon market - amazon<br><br />
Apple store - ios<br><br />
Wildtangent - wildtangent<br><br />
Windows Store - wp8<br><br />
Blackberry - blackberry<br><br />
Google Play - android<br><br />
<br />
Пример: <br />
<pre><br />
[Game]<br />
Market="ios"<br />
</pre><br />
<br />
<br />
<br />
===Trial период в Windows Phone 8===<br />
* Для windows phone 8 есть возможность работы в пробном режиме. То есть пользователь может пользоваться платным приложением или некоторое время или с ограниченными возможностями.<br />
<br />
<br />
"The trial/full state of a user’s execution rights for an app are maintained in a license. When a user tries your app, it is installed on their phone along with a license that grants them the right to try the app. Trial licenses do not expire but when a user purchases an app they have been trying a full license is downloaded. The full license replaces the trial license and grants full rights to the app."<br />
<br />
[http://msdn.microsoft.com/library/windowsphone/develop/ff967558%28v=vs.105%29.aspx Creating trial apps for Windows Phone]<br />
<br />
Данный функционал связан с объектом типа store - недоступный функционал находится за внутриигровой покупкой. Когда пользователь покупает полную версию все покупки помечаются автоматически как "купленные".<br />
<br />
Для работы данного функционала в [[app.icf]] или [[platform.icf]] необходимо в группу <nowiki>[Game]</nowiki> поместить параметр '''''trial'''''<br />
<br />
'''trial=0''' - без триала<br />
<br />
'''trial=1''' - с триалом<br />
<br />
Также что приложение имеет триальный функционал необходимо отметить в соответствующих настройках приложения при создании в магазине страницы приложения.<br />
<br />
===Тестирование покупок для Blackberry===<br />
Для тестирования покупок на Blackberry устройствах в app.icf сборки необходимо добавить следующие строки:<br />
<pre><br />
[Game]<br />
inappTest=1<br />
</pre><br />
inappTest=1 - all in-app in test mode, 0 - default<br />
<br />
<br />
===Тестирование покупок из редактора на Viewer===<br />
Для тестирования покупок на Viewer-е в app.icf необходимо добавить следующие строки:<br />
<pre><br />
[Game]<br />
purchaseEverything=1<br />
</pre><br />
<br />
<br />
[[Category:Options]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=9585Wallet2018-06-15T11:00:14Z<p>Sadovoy: /* Принцип работы */</p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' (''economics'') - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' (''id'') - Внутренний id покупки<br />
**'''Монеты''' (''res1'') - количество монет<br />
**'''кристаллы''' (''res2'') - количество кристаллов<br />
**'''поле в опциях для множителя''' (''multfield'') - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' (''status'') - прибавка к статусным очкам<br />
**'''множитель от уровня''' (''multlev'') - применять ли дополнительный множитель от уровня экономики. Т.е значение из <br />
**'''эталонная цена''' (''price'') - цена in-app в валюте для подсчета потраченных игроком денег.<br />
**'''предмет''' (''item'') - если задан, то будет добавлен в eitems и немедленно активирован.<br />
([http://wiki.appsalutecreator.com/index.php/Economics#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81 | Что такое статус и с чем его едят]). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
Объект сам считает и записывает следующие параметры в опции:<br />
*'''wallet_last_usd''' - эталонная цена последней покупки;<br />
*'''wallet_total_usd''' - сумма всех эталлонных цен совершённых юзером;<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
* ''%player%.wallet_total_usd'' - ключ к сумме потраченных единиц валюты на in-app.<br />
<br />
[[Category:Options]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9577HiddenList2018-06-07T06:41:41Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
HiddenList является менеджером поисковых [[Object|объектов]]. На сегодня HiddenList не просто управляет объектами на сцене - он отвечает за все штрафы и поощрения. В связке с такими объектами как [[HiddenHint]] + [[Effect]] HiddenList дает возможность реализовать систему подсказок, а также такие графические эффекты как: "ночь", "трансформация цвета" и т.д. с одним набором графики.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:HOList_1.jpg|right]]<br />
<br />
*'''имя''' ('' nm '') - Имя объекта HiddenList в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenList, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
*'''группа''' ('' gr '') - Группа, в которую входит текущий объект.<br />
<br />
У листа также есть группы стандартных параметров такие как '''положение''', '''размер''', '''модификаторы'''. Но, по сути, они не важны. Главное, чтобы лист не перекрывал на сцене другие объекты. Поэтому ему лучше находиться за пределами сцены. <br />
<br />
==Основные параметры==<br />
<br />
*'''Картинка''' ('' res '') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Обычно не используется, а применяется для отображения table;<br><br />
*'''Таблица''' ('' table '') - Объект типа [[table]], который является визуальным отображением списка. '''Должна быть обязательно''';<br><br />
*'''Подсказка''' ('' hint '') — объект типа [[HiddenHint]], который является менеджером хинтов;<br><br />
*'''highlighter''' ('' hl '') — объект типа [[HiddenHighLighter|hiddenhighlighter]], который подсвечивает не найденные объекты.;<br><br />
*'''Счетчик''' ('' hdncnt '') — объект типа [[Counter]], который отображает количество найденных объектов.<br><br />
В самом счетчике в параметрах нужно указать val = 0, поскольку изначально нет найденных объектов;<br />
*'''Таймер''' ('' timer '') — объект типа [[Timer]], который отображает время игры.<br />
При инициализации листа он передаст состояние "start" таймеру.<br />
*'''отладка''' ('' trace '') — Отображать в окне состояний текущий объект.<br />
<br />
<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''вычеркнуть''' ('' cross ''):<br />
:'''1''' - найденный объект вычеркивается, оставаясь в списке(таблице);<br />
:'''число''' - найденный объект удаляется из списка;<br />
*'''листать''' ('' scroll '')<br />
:'''1''' - список можно листать (скролировать);<br />
:'''число''' - ищутся только те объекты, которые видны в списке (таблице);<br />
*'''тип списка''' ('' kind '') - Тип поиска объектов:<br />
:'''1''' - слово;<br />
:'''2''' - предложение;<br />
:'''3''' - удаляемая пиктограмма;<br />
:'''4''' - пиктограмма;<br />
:'''5''' - поиск различий.<br />
*'''поиск пар''' ('' pair '') - Если 1, то идет поиска пар объектов с одинаковым типом, иначе обычный режим<br />
:'''пары''' - поиск пар;<br />
:'''одиночные''' - поиск по одному объекту.<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''обычный''' ('' sndNrm '') - Звук при нахождении обычного [[HiddenObject]].<br />
*'''коллекционный''' ('' sndCol '') - Звук при нахождении коллекционного [[HiddenObject]](объекту должна быть установлена коллекция).<br />
<br />
<br />
<br />
'''Группа - параметры поиска'''<br />
<br />
*'''объектов''' ('' num '') - Максимальное количество доступных для поиска объектов в одной игровой сессии. (ВАЖНО!!! Таблице нужно установить общее количество ячеек равное(или больше) количеству доступных для поиска объектов).<br />
*'''активных объектов''' ('' numact '') - Максимальное количество активных объектов в одной игровой сессии.<br />
*'''видимых объектов''' ('' numvis'') - Максимальное количество видимых объектов в одной игровой сессии.<br />
*'''одного типа''' ('' max ''):<br />
:'''число''' - Максимальное количество объектов одного типа - поле тип в [[hiddenObject]] или хидден объекты с одинаковыми текстовыми ID могут считаться объектами одного типа;<br />
:'''-1''' - игнорируется.<br />
*'''прятать''' ('' hide '') - Делать невидимыми объекты, не участвующие в поиске.<br />
*'''оставлять''' ('' stay '') - Оставлять найденный объект на месте (вызывая только флаеры) при удачном клике.<br />
*'''актёр-иконка''' ('' actorIco '') - если "да", то во время полёта найденного хидден-объекта вместо него летит иконка которая помечена как "main picture" и указана в текстовом id хидден-объекта.<br><br />
*'''актер''' ('' actor '') - машина состояний, которая управляет процессом полета к таблице найденных [[HiddenObject]] .<br />
*'''z актера''' ('' actorZ '') - z актера. Будет применено только если не равен 0.<br />
*'''актер стартует из таблицы''' ('' actorTable '') - если настройка включена, то актер стартует не из позиции хиддена, а из ячейки таблицы .<br />
*'''целевой объект''' (''trg'') - Если задан, [[HiddenObject]] после нахождения летит не в ячейку таблицы, а к нему.<br />
<br />
<br />
<br />
'''Группа - скорость'''<br />
<br />
Отвечают за скорость перемещения найденного объекта.<br />
*'''полета''' ('' vf '') - Скорость полета в пикселях в секунду.<br />
*'''вращения''' ('' vr '') - Скорость вращения в градусах в секунду.<br />
<br />
<br />
<br />
'''Группа - равномерное распределение'''<br />
<br />
*'''включить''' ('' undist '') - Равномерно распределять объекты по площади сцены.<br />
*'''дополнительные сортировки''' ('' altern_algo '') - Использовать альтернативный алгоритм равномерного распределения.<br />
*'''максимальное перекрытие''' ('' max_overlapping '') - Максимальная допустимая площадь перекрытия в пикселях.<br />
*'''количество итераций''' ('' fix_overlapping_iter_num '') - Максимальное количество итераций фикса перекрытия объектов.<br />
*'''удалять перекрытия''' ('' del_after_fix '') - Удалять оставшиеся перекрытия после последней итерации фикса.<br />
<br />
Рекомендации по использованию:<br />
<br />
*Если включать "Удалять перекрытия", то нужно для счетчика кол-ва оставшихся хидденов считывать значение из "num".<br />
*Оптимальное значение максимальной площади - 1024 пикселей, т.е. допускаем перекрытие в 32 на 32 пикселя, что совсем не влияет на визуальное перекрытие объектов.<br />
*Количество итераций можем ставить 20-50. Если перекрытий не останется раньше, то фикс перекрытий остановится, если выполнится все количество - отобразится количество перекрытий в логах. Большое количество итераций фикса негативно сказывается на скорости загрузки сцены.<br />
<br />
Логи:<br />
<br />
*"Deleting a hidden object with textID: %i" - удаление объекта с текстовым ID<br />
*"Overlapping detected! Area: %f px" - обнаружения перекрытия в столько-то пикселей<br />
*"fixOverlapping() Iterations num: %i / %i; Overlaps num: %i" - итерации, итоговое количество перекрытий<br />
<br />
==Дополнительные параметры==<br />
<br />
*'''скалирование объектов''' ('' scale_object '') - При нахождении во время полета объект будет скалироватся: <br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''пропадание объектов''' ('' alpha_object '') - При нахождении во время полета объект будет менять альфу:<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''реагировать на отпускание''' ('' touch_up '') - Объекты связанные с этим хидденлистом будут реагировать на отпускание, а не на нажатие:<br />
:'''0''' - отключено;<br />
:'''1''' - включено (То есть реагировать на четкий клик, если кликнули и сместили область клика объект не реагирует!).<br />
*'''реагировать на finger tap''' ('' finger_tap '') - Объекты, связанные с этим хидденлистом, будут реагировать на отпускание после ожидания даблтача.<br />
*'''задержка срабатывания''' ('' touch_delay '') - только для реакции на нажатие. Время между нажатием и реакцией списка объектов.<br />
*'''объединять одинаковые тексты''' ('' same_txt '') - Объекты с одинаковым текстом будут жить в одной ячейке таблицы с добавлением множителя xN.<br />
:'''0''' - отключено;<br />
:'''1''' - включено.<br />
*'''множитель для иконок''' ('' ico_res '') - Графический ресурс(анимация) для отображения множителя у иконок для типа списка 4(поиск по иконкам) и включенного объединения одинаковых текстов. Первый фрейм - х2, второй - х3 и т.д.<br />
*'''исключать одинаковые тексты''' ('' unTxtID '') - исключает или не исключает из поиска объекты с одинаковыми txtID, используется совместно с '''одного типа'''.<br />
*'''вероятность пассивного предпочитаемого объекта''' ('' prefProb '') - вероятность выпадения пассивного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''вероятность активного предпочитаемого объекта''' ('' prefProbAct '') - вероятность выпадения активного объекта, если у объекта стоит параметр "предпочитаемый" используется при исключении объектов с одинаковыми текстовыми ID.<br />
*'''реагировать на невидимые''' ('' canInvis '') - реагировать или нет на объекты, которые в момент игры не видны в таблице. (Кликаются только те [[hiddenObject]] которые отображены в таблице, остальные нет!).<br />
*'''прятать актеров при старте''' ('' hideact '') - Устанавливать актерам видимость false при старте (по умолчанию - да)(То есть всем актерам которые находятся на сцене при запуске принудительно установиться vis = 0).<br />
*'''аномалия''' ('' anom '') - для всех аномалий кроме текстовой [[HiddenObject]] и игровой фон должны быть подобъектами [[Effect]]):<br />
:'''0''' - нет;<br />
:'''1''' - текстовая;<br />
:'''2''' - ночь; В машине которая выставляет эффект ночь, должны передавать сцене с объектом аномалия ( obj="scene"; par="drag"; val="0" ) и ( obj="scene"; st="update");<br />
:'''3''' - трансформация цвета;<br />
:'''4''' - дым.<br />
При применении аномалии "блитц" через объект [[Economics]] набор параметров: anom="0", is_blitz="1".<br />
*'''флурри''' ('' flurry '') - Нужно ли отправлять статистику флурри "regexp=":<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''вероятность инверсии''' ('' invProb '') - Вероятность того, что сцена будет перевернута по x;<br />
*'''набор''' ('' kit '') - Набор, из которого берутся объекты.<br />
*'''поведение дифференсов''' (''difbeh'') - Поведение найденных объектов в режиме поиск отличий.<br />
<br />
<br />
<br />
'''Группа - появление новых объектов'''<br />
<br />
*'''время''' ('' acttm '') - Время появления объекта (мс);<br />
*'''начальный скейл''' ('' actsc '') - Начальный скейл;<br />
*'''начальная альфа''' ('' actal '') - Начальная альфа.<br />
<br />
<br />
<br />
'''Группа - сессии'''<br />
<br />
*'''сессионность''' ('' ses ''):<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''ограничение сессий''' ('' sesLim '') - Максимальное количество сессий, в которые можно играть.<br />
*'''набор объектов''' ('' sesSet '') - Набор объектов при заходе в хидден после последней сессии:<br />
:'''0''' - случайный;<br />
:'''1''' - последний фон;<br />
:'''2''' - пустой.<br />
<br />
<br />
<br />
'''Группа - цвета'''<br />
<br />
*'''Цвет обязательных''' ('' c_forced '') — цвет текста для обязательных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Цвет найденных''' ('' c_found '') — цвет текста для найденных объектов, указывается код цвета, если строку не заполнять цвет не используется.<br />
*'''Время перехода''' ('' c_time '') - Время изменения цвета.<br />
<br />
<br />
<br />
'''Группа - время'''<br />
<br />
*'''игры''' ('' tmGm '') - Общее время игры. Если оно истекает, идет переход на экран [время вышло] (см.ниже):<br />
:'''-1''' - игнорируется;<br />
:'''число''' - время игры.<br />
*'''прерывать''' ('' tmInt ''):<br />
:'''1''' - по окончанию времени игра будет прервана;<br />
:'''0''' - по окончанию времени игра продолжится, но переход все равно будет на неудачную ветку.<br />
*'''паузы''' ('' tmWt '') - Время перед закрытием окна после разбора (для осмысления результата);<br />
*'''полета актера''' ('' tmActor '') - Время работы актера, после которого обрабатываются ячейки таблицы;<br />
*'''перед исчезновением''' ('' tmWtHide '') - Время, в течение которого объект остается видимым после обработки.<br />
<br />
<br />
<br />
'''Группа - ошибки'''<br />
<br />
*'''flyer при ошибке''' ('' fl '') - обычно объект типа flyer (летуны которых надо показать в точке клика, если этот клик ошибочный). Можно в принципе любой объект который обладает состоянием "beg". Ошибочный клик - все клики мимо [[hiddenObject]].<br />
*'''вычет времени при ошибке''' ('' tmPen '') - Сколько отнять миллисекунд за ошибочный клик.<br />
<br />
<br />
<br />
'''Группа - переход'''<br />
<br />
*'''при разборе''' ('' scrOk '') - Экран на который надо перейти, если все объекты найдены.<br />
*'''время вышло''' ('' scrOv '') - Экран на который надо перейти если время вышло, а не все объекты найдены.<br />
<br />
<br />
<br />
'''Группа - система очков'''<br />
<br />
*'''Счетчик''' ('' score_counter '') — счетчик, отображающий набранные очки.<br />
*'''счетчик (test)''' ('' score_counter_test '') — счетчик, отображающий набранные очки.<br />
*'''ID пака''' ('' pack_id '') — строковый идентификатор пака(для записи набранных очков в [[options]] должен быть заполнен); используется для вытаскивания суммарных очков в счетчики и дальнейшего их отображения.<br />
*'''ID игры''' ('' game_id '') — строковый идентификатор игры (сцены).<br />
'''Обязательно должен иметь префикс ID пака. Например, если pack_id = "pack1", то game_id = "pack1.game1"'''.<br />
*'''мультипликатор очков''' ('' scoreM '') — Мультипликатор очков за объект, если все собрано за отведенное время.<br />
*'''Очки''' ('' score '') — количество очков, которые даются за каждый найденный [[hiddenObject]].<br />
*'''Бонус за скорость''' ('' bonusS '') — бонус за быстро найденный [[hiddenObject]].<br />
*'''Бонусный интервал''' ('' bonusT '') — время, за которое нужно найти [[hiddenObject]] для получения бонуса.<br />
*'''бонус за время''' ('' bonusTime '') - бонус за оставшееся время игры = коэффициент который введем * оставшееся время таймера.<br />
*'''Бонусный мультипликатор''' ('' grow ''):<br />
:'''1''' - умножать очки за второй быстро найденный предмет на 2, за третий на 3, и т. д.<br />
:'''0''' - не умножать.<br />
*'''Количество кликов для штрафа''' ('' wrngC '') — количество неверных кликов, после которых запустится блокатор (см. ниже).<br />
*'''Интервал для штрафа''' ('' wrngT '') — время, за которое нужно совершить неверные клики.<br />
*'''Штраф (очки)''' ('' delS '') — Сколько отнимаем очков за ошибочный клик.<br />
*'''Штраф (время)''' ('' delT '') — Сколько отнимаем времени за ошибочный клик.<br />
*'''блокатор''' ('' blockImg '') - Объект, блокирующий сцену при серии ошибочных кликов. (Обычно маска растянутая на весь экран. '''ДОЛЖНА иметь состояние "beg"''').<br />
*'''время блокировки''' ('' blockTime '') - Время блокировки при серии ошибочных кликов по истечении переводит "блокатор" в состояние '''end'''.<br />
*'''порог touch move''' ('' mvSens '') - Порог, начиная с которого движение пальца воспринимается как мув и сбрасываются неправильные клики.<br />
*'''touch move как штраф''' ('' tchMvPen '') - Считать ли touch move за ложное попадание:<br />
:'''0''' - нет;<br />
:'''1''' - да.<br />
*'''клик на найденный как штраф''' ('' clkFndPen '') - Считать ли клик на найденный объект за ложное попадание(актуально если объекты остаются на сцене).<br />
*'''аниматор очков''' ('' scoreAnim '') - машина, которая анимирует полученные очки, должна иметь состояние '''anim'''.<br />
*'''коэффициент комбо''' ('' cmbCoef '') - коэффициент для расчёта комбо очков по формуле s(n) = k * n * (n + 1).<br />
*'''счётчик очков за объект''' ('' objScCnt '') - счётчик который показывает очки за последний полученный объект (учитывая бонусы).<br />
*'''счётчик комбо-очков''' ('' cmbScCnt '') - счётчик очков полученных за комбо-серию.<br />
*'''счётчик комбо-серий''' ('' cmbRwCnt '') - счётчик который показывает комбо-серию (комбо из 2-х, 3-х и т.д. найденных объектов).<br />
*'''комбо2 прогресс''' ('' cmb2Pr '') - комбо2 прогресс;<br />
*'''комбо2 время''' ('' cmb2Tm '') - комбо2 время;<br />
*'''комбо2 кол-во''' ('' cmb2Num '') - комбо2 кол-во.<br />
*'''очки 3.0''' (''score30'') - Использовать систему очков, придуманную Степановым в августе 2015.<br />
*'''очки 3.0 коэф. комбо''' (''score30lc'') - в конце комбо даем за него очков n * s * l * (n-1) - где n число предметов в комбо, s - очки за один предмет, l - этот коэффициент<br />
*'''очки 3.0 коэф. аккуратности''' (''score30la'') - в конце игры начисляем очки за точность по формуле s * la / (1 + Nmiss / N)<br />
*'''очки 3.0 коэф. времени 1 (l)''' (''score30lt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
*'''очки 3.0 коэф. времени 2 (t)''' (''score30tt'') - в конце игры начисляем очки за время по формуле s * lt / (1 + T / (tt * N))<br />
<br />
<br />
'''Группа - звезды'''<br />
<br />
*'''combo num''' ('' comboNum '') - Количество быстро найденных объектов, нужное для получения звезды Combo.<br />
*'''combo time''' ('' comboInt '') - Интервал между кликами, считающимися быстрыми для Combo.<br />
*'''accuracy''' ('' accuracy '') - Точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные).<br />
*'''лимит ложных кликов''' ('' starWrAcc '') - Лимит ложных кликов.<br />
Формула расчета проста, количество верных кликов делим на общее количество получаем коэффициент если он равен или больше указного нами то в опции пишем параметр, если нет то не пишем.<br />
<br />
==Параметры бота и мультиплеера==<br />
<br />
'''Группа - Хидден бот'''<br />
<br />
*'''тип бота''' - тип бота:<br />
:'''нет''' - обычная одиночная игра, бот выключен;<br />
:'''на одном поле''' - игра с ботом на одном поле, у обоих одинаковый список предметов;<br />
:'''с маленьким полем''' - бот будет играть на отдельном поле (??????);<br />
:'''горячий стул''' - hotsit, игра двух живых игроков на одном девайсе, передача хода по очереди;<br />
:'''мультиплеер''' - игра через сервер с живым оппонентом;<br />
*'''файл уровня''' - xml файл с настройками сложности бота ([[HiddenList#Настройка сложности бота|пример]]);<br />
*'''номер уровня''' - номер уровня в файле (начиная с 0);<br />
*'''номер уровня max''' - если задан больше предыдущего номера - выбирается рандомное значение;<br />
*'''multiplayer''' - объект мультиплеера;<br />
*'''кнопка хинта''' - кнопка хинта для 2го игрока \ бота;<br />
*'''проверять интернет''' - проверять интернет при игре с ботом (так же, как при игре с живым игроком);<br />
*'''первый ход (вероятность)''' - вероятность первого хода игрока при игре с ботом (в процентах);<br />
*'''t min abs ms''' - самая минимальная задержка между ходами бота;<br />
*'''t1 min ms''' - минимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 max ms''' - максимальное время для быстрого нахождения предмета ботом;<br />
*'''t1 prob %''' - вероятность быстрого нахождения предмета ботом;<br />
*'''t2 min ms''' - минимальное время для нахождения предмета ботом;<br />
*'''t2 max ms''' - максимальное время для нахождения предмета ботом;<br />
*'''t coef delta''' - коэффициент сложности (кажется от -1 до 1, могу ошибаться);<br />
*'''t wrong min ms''' - минимальное время между ложными кликами (мимо объекта) бота;<br />
*'''t wrong max ms''' - максимальное время между ложными кликами бота;<br />
*'''bot hint chance (percent)''' - шанс бота использовать хинт (в процентах);<br />
*'''bot hint num''' - максимальное кол-во использования хинтов ботом на игру;<br />
*'''доп. поле x''' - координаты доп. поля по Х;<br />
*'''доп. поле y''' - координаты доп. поля по Y;<br />
*'''доп. поле sx''' - масштаб доп. поля;<br />
*'''доп. поле sy''' - масштаб доп. поля;<br />
*'''указатель хода''' - указатель хода бота\оппонента. Должен иметь состояние ''beg'' и находитсья в сцене с хидденами;<br />
*'''родитель''' - родитель, в который поместим клонированную сцену (доп. поле);<br />
*'''счетчик очков бота''' - счетчик, выводящий очки;<br />
*'''счетчик без бонусов бота''' - счетчик, выводящий очки без бонусов за время и точность;<br />
*'''комбо2 прогресс бота''' - комбо2 прогресс;<br />
*'''аниматор очков бота''' - машина, которая при нахождении хиддена анимирует полученные очки;<br />
*'''счетчик очков за объект бот''' - счетчик, выводящий очки за объект;<br />
*'''счетчик комбо-серий (макс) бот''' - счетчик, выводящий макс. количество комбо-серий;<br />
*'''счетчик комбо-серий (тек) бот''' - счетчик, выводящий текущее количество комбо-серий;<br />
*'''flyer при ошибке''' - объект типа ''flyer'' который надо показать в точке клика, если этот клик ошибочный;<br />
*'''таймер хода бота''' - таймер хода бота;<br />
*'''таймер хода игрока''' - таймер хода игрока;<br />
*'''длительность хода ms''' - длительность хода игрока \ бота. Если задан 0 - игроки ходят одновременно;<br />
*'''длительность паузы между ходами ms''' - длительность паузы при смене хода игрока\бота.<br />
<br />
=== Настройка сложности бота ===<br />
<br />
Файл уровней для хидден-бота должен иметь такую структуру:<br />
<bots><br />
<obj id="0"><br />
<bot weight="3" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="21000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
<obj id="1"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="10000" t2max="25000" twrongmax="10000" /><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="7000" twrongmax="10000" /><br />
</obj><br />
<obj id="2"><br />
<bot weight="1" t1min="1000" t1max="2000" t1percent="10" t2min="7000" t2max="21000" twrongmax="10000" /><br />
<bot weight="2" t1min="1000" t1max="2000" t1percent="15" t2min="3000" t2max="5000" twrongmax="10000" /><br />
</obj><br />
</bots><br />
<br />
*bots - основной таг<br />
*obj > id - номер уровня<br />
*bot - содержит те же параметры, что и настройки бота в хидден листе<br />
<br />
==Режим "блиц" с бесконечными объектами==<br />
<br />
'''Правила аномалии "блиц"''':<br />
<br />
*Блиц заканчивается победой, если игрок нашел хотя бы один предмет за отведенное время игры блиц.<br />
*Если время вышло, но не было найдено ни одного предмета, то засчитывается поражение.<br />
*В аномалии блиц количество возможных предметов ограничивается максимальным количеством уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num). А количество видимых предметов ограничивается количеством предметов, заданных на уровне мастерства локации. При постепенном разборе предметов добавляются новые пока не будет разобрано максимальное количество предметов на хидден сцене, либо, пока не закончится время, но одновременно видно предметов не больше, чем заданных на конкретном уровне мастерства локации.<br />
<br />
Для включения такого режима блиц используем поле в настройках хидден-листа:<br />
*'''блиц с бесконечными объектами''' ('' endlessBlitz '') - При блице ставим максимальное количество объектов и засчитываем победу, если найден хоть один. (да - использовать режим, нет - не использовать).<br />
<br />
Если в этом поле настройка "нет", то режим блиц работает по-старому: объектов столько, сколько указано в уровне мастерства.<br />
<br />
Прочитать, находится ли хидден в режиме блиц можно из поля "is_blitz" хидден листа (возможные значения - 0 или 1). Заполняется экономикой в момент старта локации.<br />
<br />
Для отображения в счетчике максимального количества уникальных хидден-предметов на сцене (считываем из хидден-листа, параметр num) вычитывать измененный num можно ТОЛЬКО ПОСЛЕ прихода start hiddenlist, т.е. не в ините.<br />
<br />
В экономике указываем блиц, как отдельную аномалию.<br />
<br />
==Состояния==<br />
<br />
Состояния которые есть у листа. Мы можем передавать их с помощью различных объектов:<br />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<br />
*'''get_visible_ho''' - вернуть id активного HO объекта (объект пишет в себя два параметра - '''randomHO_id''' и '''randomHO_vis''' (id объекта и виден ли он сейчас юзеру)); Приоритет выбора HO объекта: с начала видимые юзеру, если таких нет - выводим невидимый на текущий момент HO (до предмета нужно фокусировать сцену).<br />
<br />
==Примечания==<br />
<br />
*HiddenList должен располагаться в дереве проекта ниже всех своих поисковых объектов.<br />
<br />
*Единственный '''обязательный объект''' о котором должен знать лист это [[Table]] для отображения списка поиска, даже если таблица не будет использоваться быть все равно должна!<br />
<br />
*После завершения хидден-игры (по разбору или по времени)при переходе на другой экран HiddenList записывает данные в опции в два места: первое - это то, которое указано у настройках (ID пака, ID уровня, тип списка), для каждой локации свое; а второе - это last_game. <br><br />
Например, <br><br />
'''last_game.time_spent''' (либо же '''pck_N.lvl_N.kind_N.time_spent''') - время последней игры, <br> <br />
'''last_game.clicks''' (либо же '''pck_N.lvl_N.kind_N.clicks''') - количество найденных объектов и т.д. <br><br />
Все их можно увидеть в опциях. last_game был придуман для того, чтобы было удобно задавать счетчики в окне результатов. Также эти данные могут быть сохранены в опциях, если задать листу состояние '''wait'''.<br />
<br />
*Для проверки кликабельности хидденобъектов можно воспользоваться следующими настройками в app.icf:<br />
<br />
<pre><br />
[GHiddenList]<br />
HitTest=0<br />
HitTestDx=1 - шаг по х<br />
HitTestDy=1 - шаг по y<br />
</pre><br />
<br />
в результате после перехода на сцену с хидденом появится файл, в котором будет казан объекты и координаты в которых они не тапаются.<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''появляется новый объект: изменить состояние объекта''' ('' actst ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
[[Файл:HOList_3.jpg|right]]<br />
<br />
[[Файл:+.png]] '''разбор: если был экран''' ('' wscrOk '') - При нахождении всех объектов, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''разбор: изменить состояние объекта''' ('' nstOk '') - При нахождении всех объектов, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - Перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''разбор: изменить параметр объекта''' ('' chgOk '') - При нахождении всех объектов, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''не успел: если был экран''' ('' wscrOv '') - Если вышло время, а объекты не найдены, переходим на определенный экран, если некоторый экран был уже хотя бы раз посещен:<br />
:'''был экран''' ('' was '') - Экран, который мы проверяем на то, был ли он уже открыт хотя бы один раз;<br />
:'''перейти на''' ('' scr '') - Переходим на этот экран, если экран из предыдущего поля уже открывался.<br />
<br />
[[Файл:+.png]] '''не успел: изменить состояние объекта''' ('' nstOv '') - Если вышло время, а объекты не найдены, перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''не успел: изменить параметр объекта''' ('' chgOv '') - Если вышло время, а объекты не найдены, изменить параметр объекта:<br />
:'''объект''' ('' obj '') - этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '')- Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
[[Файл:+.png]] '''счетчик очков''' ('' scoreCnt ''):<br />
:'''счетчик''' ('' cnt '') - Каунтер, которому приходят очки.<br />
<br />
[[Файл:+.png]] '''группа extra bonus''' ('' extraBonus ''). Используется для economics, при нахождении объекта с некой вероятностью может выпасть бонус. Объект который анимирует появление бонуса должен иметь состояние show, время на анимацию бонуса - 10 секунд:<br />
:'''монетки объект''' ('' coinsObj '') - объект который анимирует получение монет;<br />
:'''монетки вероятность''' ('' coinsProb '') - вероятность по нахождению объекта получить дополнительно монетки;<br />
:'''опыт объект''' ('' expObj '') - объект который анимирует получение опыта;<br />
:'''опыт вероятность''' ('' expProb '') - вероятность по нахождению объекта получить дополнительно опыт;<br />
:'''энергия объект''' ('' energyObj '') - объект который анимирует получение энергии;<br />
:'''энергия вероятность''' ('' energyProb '') - вероятность по нахождению объекта получить дополнительно энергию.<br />
<br />
[[Файл:+.png]] '''Объект, который срабатывает, если долго не находить хидден''' ('' notfnd ''):<br />
:'''объект''' ('' obj '') - Объект, который переводится в указанное состояние, если долго не находить хидден;<br />
:'''состояние''' ('' st '') - Состояние, в которое переводится объект;<br />
:'''время''' ('' tm '') - Время от последнего нахождения хиддена, после которого срабатывает объект.<br />
<br />
[[Файл:+.png]] '''параметры аномалии с исчезновением букв''' ('' hlPars ''):<br />
:'''оставшиеся буквы''' ('' min '') - Минимальное количество оставшихся букв в предложении;<br />
:'''задержка''' ('' wait '') - Момент времени, начиная с которого аномалия будет проявляться;<br />
:'''задержка 2''' ('' wait2 '') - Задержка для появившихся слов, изначально недоступных;<br />
:'''время''' ('' time '') - Время, за которое должны исчезнуть все буквы (если -1, то до конца времени в хиддене);<br />
:'''промежутки''' ('' dt '') - промежутки времени между каждой итерацией;<br />
:'''флайер''' ('' fl '') - Флайер, анимирующий исчезающую букву (должен иметь '''текстовый''' тип).<br />
<br />
[[Файл:+.png]] '''параметры аномалии ночь''' ('' nightPars ''): <br />
:'''effect''' ('' ef '') - эффект, управляющий трансформацией цвета;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего ночь.<br />
<br />
[[Файл:+.png]] '''параметры аномалии трансформации цвета''' ('' colInvPars ''):<br />
:'''effect''' ('' ef '') - Эффект, управляющий трансформацией цвета;<br />
:'''tags''' ('' eftags '') - Теги эффектов, реализующих трансформацию цвета, из которых будет выбран один.<br />
<br />
[[Файл:+.png]] '''параметры аномалии дым''' ('' smokePars ''): <br />
:'''effect''' ('' ef '') - Машина, управляющая эффектом дыма;<br />
:'''tag''' ('' eftag '') - Тег эффекта, реализующего дым.<br />
<br />
Все аномалии кроме текстовой должны быть настроены с помощью объекта [[Effect]]<br />
<br />
== Get Started==<br />
Минимальный набор ресурсов:<br />
* Фоновая картинка для поисковой сцены<br />
* Комплект картинок, с которых будут сделаны поисковые [[HiddenObject|объекты]]<br />
* Текстовые объекты для идентификации спрятанных объектов<br />
<br />
Минимальный набор объектов редактора:<br />
* [[Image]] который будет изменен в хидден-лист<br />
* [[Table|Таблица]] в которой будут отображаться тексты/картинки (зависит от режима) спрятанных объектов.<br />
* По одному [[Image]] для каждого спрятанного объекта (будут созданы автоматически при добавлении картинок из базы ресурсов на сцену)<br />
<br />
Наши действия:<br />
# откроем [[Интерфейс_ScenceEditor|редактор сцен]] и создадим новый проект,<br />
# добавим новый экран с именем ''scrHList''<br />
# создадим в этом экране сцену ''stgHList''<br />
# перейдём в [[Интерфейс_ResourceEditor|редактор ресурсов]]<br />
## создаём папку ''HList''<br />
## добавим в ней картинку для фона и картинки для спрятанных объектов.<br />
## выделим все картинки в дереве ресурсов и перенесем их на нашу сцену ''stgHList'', при этом для каждой картинки автоматически создастся объект [[Image]].<br />
## закроем редактор ресурсов<br />
# перейдём в [[Интерфейс_TextEditor|редактор текстов]]<br />
## создаём папку ''HListText''<br />
## добавим в нее текстовые объекты, по одному на каждый поисковый объект.<br />
## сохраним внесенные изменения.<br />
# перейдём в редактор сцен.<br />
# создадим в сцене stgHList объект [[Table]] и назовем его HOT<br />
## настроим размер и положение таблицы, согласно нашего дизайна<br />
## установим параметры колонок = "50", колонок видно = "5", строчек = "5", строчек видно = "1" (таким образом в таблице будут отображаться 5 поисковых предметов, а максимальное количество объектов для поиска будет равно 250)<br />
## установим параметры скорость листания = "650", добавлять по строкам = "0", центрировать = "растянуть", сдвигать ячейки при удалении ="да"<br />
# создадим в сцене stgHList объект '''HiddenList''', напоминаем что его размер и положение на сцене не имеют значения, по этому расположим его где-нибудь за границей экрана. <br>'''Важно''' В дереве проекта хидден-лист должен быть ниже всех своих поисковых объектов.<br />
## в поле таблица указываем нашу HOT<br />
## установим параметр объектов = "10"<br />
## установим параметр пропадание объектов = "да"<br />
## установим параметр реагировать на отпускание = "да"<br />
## установим параметр реагировать на невидимые = "нет"<br />
## установим параметр набор = "1"<br />
# Настроим объекты, которые будут прятаться. Для этого выделим картинки поисковых объектов, добавленные нами ранее, и изменим им тип на "hiddenObject". Оставляя группу этих объектов выделенной, настроим им параметры:<br />
## в поле list укажем наш HiddenList<br />
## параметр набор = "1"<br />
## Теперь снимаем выделение и каждому объекту в поле текстID перетаскиваем мышкой соответствующий текстовый объект из текстовой базы (поле текстID должно быть активно для редактирования - по нему нужно кликнуть мышкой)<br />
# сохраним проект<br />
# запустим [[Интерфейс_Viewer|вьювер]]<br />
<br />
== Динамический HG==<br />
Функционал позволяет генерировать HL самостоятельно HO объекты из файла конфига.<br />
<br />
П.С. - вся графика д.б. динамической. Данные файлы может создавать HO_Manager ( http://wiki/index.php/HO_Manager )<br />
<br />
[[Файл:D485ecbbbb.jpg|right]]<br />
*'''файл уровня''' ('' configFile'') — указываем путь к файлу конфигу, где перечисляем файлы с HG. <br />
*'''список графических ресурсов''' — служебное, пока не используется;<br />
*'''список текстовых ресурсов''' — служебное, пока не используется;<br />
*'''номер уровня''' ('' hiddenLevelNum '') — номер уровня из файла;<br />
*'''образец хиддена''' ('' hiddenTemplate '') — obj_id HO объект, должен иметь нужные параметры (остальные возьмутся из конфига) ;<br />
*'''образец нашлёпки''' ('' hiddenPatchTempl '') — obj_id нашлёпки на HO объект, должна иметь нужные параметры (остальные возьмутся из конфига);<br />
*'''корневой объект''' ('' hiddenRoot '') — obj_id корневого объект в который сложим всех клонов;<br />
*'''точечный спецэффект''' ('' hiddenEffect '') — ;<br />
*'''фоновый объект ''' ('' hiddenBG '') — obj_id объекта которому поменяем ресурс;<br />
<br />
Требования, вся графика HO,BG отрисовывается без учёта пивоты;<br />
<br />
Файлы конфиги имеют вид:<br />
Файл уровня имеет вид:<br />
{<br />
"levels": [<br />
{<br />
"file": "ViewerFiles/DynHid/hidden0.cfg",<br />
"pack":3<br />
}<br />
]<br />
}<br />
<br />
:Где "levels" - линки на файлы уровней. <br />
:::"file" - путь к файлу;<br />
:::"pack" - пак в который попадут ресурсы;<br />
<br />
<br />
<br />
Файл конкретного уровня имеет вид:<br />
{<br />
"bg": {<br />
"src": "bg.png",<br />
"w": 2048,<br />
"h": 1151,<br />
"id": 16,<br />
"color": "#ffffff",<br />
"tile": ""<br />
},<br />
"hiddens": [<br />
{<br />
"id": 1022,<br />
"nm": "bucket_01",<br />
"res": 129,<br />
"bg": 666,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
},<br />
"objs": [{<br />
"res": 1488,<br />
"rect": {<br />
"x": 1393,<br />
"y": 653,<br />
"w": 115,<br />
"h": 137<br />
}<br />
}],<br />
}, <br />
{<br />
"x": 1537,<br />
"y": 409,<br />
"id": 1023,<br />
"res": 329,<br />
"nm": "bucket_02",<br />
"rect": {<br />
"x": 1493,<br />
"y": 366,<br />
"w": 81,<br />
"h": 87<br />
}<br />
}<br />
],<br />
"res": {<br />
"images": [16, 129, 1488, 329],<br />
"texts": [1022, 1023],<br />
"sounds": [],<br />
}<br />
}<br />
<br />
:Где "bg" - настройки фона. <br />
:::"src" - сорс графического файла в ресурсной базе;<br />
:::"color" - цвет которым будет залито под фоном, нужное если фон имеет дырки;<br />
:::"tile" - тайлинг фона;<br />
:::"id" - id ресурса из ресурсной базы;<br />
::"hiddens" - перечень HO с их настройками<br />
::::"id" - TxtId;<br />
::::"nm" - имя HO;<br />
::::"res" - графический ресурс HO;<br />
::::"bg" - графический ресурс тени;<br />
::::"rect" - настройки "res";<br />
:::::"x" - координата x, в координатах корневого объекта;<br />
:::::"y" - координата y, в координатах корневого объекта;<br />
:::::"w" - ширина;<br />
:::::"h" - высота;<br />
::::"objs" - перечень нашлёпок;<br />
:::::"res" - графический ресурс нашлёпки;<br />
:::::"rect" - настройки графического ресурса нашлёпки;<br />
::::::"x" - координата x, в координатах HO;<br />
::::::"y" - координата y, в координатах HO;<br />
::::::"w" - ширина;<br />
::::::"h" - высота;<br />
::"res" - ресурсы которые входят в пак уровня ( будут вырезаны при экспорте в пак уровня)<br />
::::"images" - перечень графических ресурсов<br />
::::"texts" - перечень текстовых ресурсов<br />
::::"sounds" - перечень звуковых ресурсов<br />
<br />
== Авто тест HL ==<br />
Для запуска автотеста, нам нужно указать в app.icf параметры:<br />
<br />
[GHiddenList]<br />
:'''HitTest''' - мода автотеста; (0- выкл.; 1 - разовая логика, пишется в файл раз в сессию для одного хидден листа ; 2 - при каждом init любого хидн листа дописывается статистика в файл);<br />
:'''HitTestDx''' = 5 - шаг с которым проходит автокликер по X;<br />
:'''HitTestDy''' = 5 - шаг с которым проходит автокликер по Y;<br />
<br />
Для HitTest==2, очень помогает параметр "allow_background". Остаётся только написать скриптулину, которая ходит сама между экранами.<br />
<br />
== Пример ==<br />
<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
HiddenList.rar<br />
<br />
[[Category:Game mechanic]]<br />
<br />
[[Category:Get Started]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Progress&diff=9536Progress2018-05-11T10:45:09Z<p>Sadovoy: /* Передаваемые состояния */</p>
<hr />
<div>{{TOC right}}<br />
== Общие сведения ==<br />
[[Object|объект]] '''Progress''' используют для отображения каких либо ачивментов, например когда игрок проходить уровень он может получить 1,2,3 звезды или бронзовую, серебряную, золотую.<br />
<br />
== Основные параметры ==<br />
[[Файл:Progress_properties.png|250px|right]]<br />
*'''тип''' - тип прогрессбара: 0 - анимационный, 1 - линейный, 2 - дугообразный;<br />
* '''имя''' - объекта в дереве проекта. Может быть произвольным<br />
* '''синхронизация''' - синхронизация между лейаутами: нет - нет синхронизации; да - есть синхронизация.<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''blending''' - Alpha смешивание: parent=0, blend=1, half=2, add=3, sub=4, none=5<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''память''' - если 1 - не обновляет свои параметры при последующем открытии экрана, 0 - обновляет<br />
* '''z''' - параметр порядка рисования объекта. Сначала рисуются объекты с большим z, а под ними с меньшим<br />
* '''тайлинг''' - если да - включить тайлинг<br />
* '''прокликиваемая''' - если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то картинка сама обрабатывает клик, но и пропускает его дальше<br />
<br />
*'''игра''' ''(game)'' - Имя игры (раздела в опциях), который надо вычитать для получения начального значения прогресса (например, для отображения результатов).<br />
<br />
*'''уровень''' ''(level)'' - Имя уровня (параметра в разделе игра - см.выше), который надо вычитать для получения начального значения прогресса (например, для отображения результатов). Для каждого прогресса разделы равны: [game.]level0, [game.]level1,...<br />
<br />
*'''сохранять в профиль''' ''(prof)'' - Если = 1, то значение будет сохранено в текущий профиль, если 0 - то глобально.<br />
<br />
*'''тип изменения''' ''(chType)'' - Тип изменения (увеличение, уменьшение)<br />
<br />
*'''изменение''' ''(chVal)'' - Изменение значения прогреса при вызове состояния next<br />
<br />
*'''значение''' ''(val)'' - Текущее значение прогрессбара<br />
<br />
*'''мин.зн''' ''(minVal)'' - Минимальное значение прогрессбара<br />
<br />
*'''макс.зн''' ''(maxVal)'' - Максимальное значение прогрессбара<br />
<br />
*'''нахлест заполнителя''' ''(cov)'' - Нахлест текстур заполнителя в пикселях<br />
<br />
*'''скорость''' ''(vel)'' - Скорость анимации изменения прогреса в точках за секунду<br />
<br />
'''Группа - позиционирование'''<br />
<br />
*'''горизонтальное''' - 0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому<br />
<br />
*'''вертикальное''' - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему<br />
<br />
'''Группа - ресурсы'''<br />
<br />
*'''нач.граница''' ''(resBBord)'' - Ресурс, который рисуется в начальной точке прогрессбара<br />
<br />
*'''заполнитель''' ''(resTail)'' - Ресурс, который будет тайлиться в зависимости от заполнения прогресса<br />
<br />
*'''указатель''' ''(resCurr)'' - Ресурс, который рисуется в текущей точке прогрессбара<br />
<br />
*'''объект указатель''' ''(objCurr)'' - Объект, который рисуется в текущей точке прогрессбара<br />
<br />
'''Группа - анимационный'''<br />
<br />
*'''res''' ''(res)'' — в качестве графического ресурса используется анимация с нужным на количеством кадров. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования)<br />
<br />
*'''количество''' ''(num)'' — количество прогресс баров<br />
<br />
*'''dx''' ''(dx)'' — расстояние между прогресс барами по X, если их больше 1<br />
<br />
*'''dy''' ''(dy)'' — расстояние между прогресс барами по Y, если их больше 1<br />
<br />
*'''вертикальный''' ''(ver)'' – если 1, то прогресс бар будет размножен вертикально, 0 - горизонтально<br />
<br />
'''Группа - дугообразный'''<br />
<br />
*'''нач.угол''' ''(angBeg)'' - Угол, с которого рисуем дугу<br />
<br />
*'''угол дуги''' ''(angCurv)'' - Угол в котором дуга завершается<br />
<br />
*'''направление''' ''(angDir)'' - Направление угла дуги. 0-по часовой стрелке, 1-против часовой стрелки<br />
<br />
==Добавляемые параметры==<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по нажатию правой кнопки мыши.<br />
<br />
[[Файл:+.png]] '''диапазон''' - Диапазон при котором меняется заполнитель.<br />
<br />
*'''нач.зн''' - Начальное значение прогрессбара <br />
<br />
*'''кон.зн''' - Конечное значение прогрессбара<br />
<br />
*'''заполнитель''' - Ресурс, который будет тайлиться когда прогрессбар принимает значение из диапазона<br />
<br />
*'''нач объект''' - При входе в диапазон перевести объект в состояние из следующего поля<br />
<br />
*'''нач состояние''' - Новое состояние для объекта из предыдущего поля<br />
<br />
*'''нач объект''' - При выходе из диапазона перевести объект в состояние из следующего поля<br />
<br />
*'''нач состояние''' - Новое состояние для объекта из предыдущего поля <br />
<br />
[[Файл:+.png]] '''Изменилось значение: изменить параметры объекта''' - после изменения значения прогресбара изменить параметр объекта.<br />
<br />
*'''объект''' - объект, состояние которого меняем <br />
<br />
*'''свойство''' - параметр, который мы изменяем<br />
<br />
*'''значение''' - новое значение параметра<br />
<br />
[[Файл:+.png]] '''Изменилось значение: изменить состояние объекта''' - после изменения значения прогресбара перевести объект в новое состояние.<br />
<br />
*'''объект''' - объект, состояние которого меняем<br />
<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
[[Файл:+.png]] '''Завершен прогрес: изменить параметры объекта''' - после завершения прогреса изменить параметр объекта.<br />
<br />
*'''объект''' - объект, состояние которого меняем<br />
<br />
*'''свойство''' - параметр, который мы изменяем<br />
<br />
*'''значение''' - новое значение параметра<br />
<br />
[[Файл:+.png]] '''Завершен прогрес: изменить состояние объекта''' - после завершения прогресса перевести объект в новое состояние.<br />
<br />
*'''объект''' - объект, состояние которого меняем<br />
<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
= Использование объекта =<br />
<br />
Для отображения нужного кадра анимации прогресс бар вычитывает данные из [[Options]] в зависимости от значения 0,1,2.... показывает определенный фрейм анимации<br><br />
Чтение значений из опций осуществляется с помощью полей '''''игра''''' и '''''уровень'''''<br><br />
Эти параметры можно менять с помощью машин, тогда прогресс будет вычитывать разные значения.<br><br />
<br />
Ниже приведена запись из опций с которых прогресс вычитает значения:<br />
<br />
<pk1><br />
<pz01 lv0="2" lv1="1"/><br />
</pk1><br />
<br />
У нас есть два значения lv0="2" и lv1="1"<br />
<br />
Напоминаем, что у нас есть такое поле как '''количество''' и мы может одним progress`ом вычитать эти два значения и отобразить если поставим кол-во = 2.<br><br />
Для этого в поле игра мы пишем "pk1.pz01", а в уровень пишем просто "lv". Запись в опциях lv0 и lv1 означает что это значения для прогресс бара с кол-ом = 2 и в первую свою копию он считает значение lv0 во вторую lv1 и отобразит две к примеру звезды и каждую со своим фреймом.<br><br />
pk01, pz01, lv0, lv1 и т.д. это просто ключи по которым прогресс вычитывает нужные значение, по-этому они могут быть произвольными.<br><br />
<br />
'''Одно только правило:''' Если у нас указано кол-во. То в опции параметр уровень мы должны записывать с числовой приставкой (например lv0,lv1,lv2) и т.д. Если у нас кол = 1, то прогресс будет вычитывать значение из lv0.<br />
<br />
При работе с '''дуговым''' прогрессом важно знать:<br />
<br />
Радиус дуги = высота прогресса / 2 . Центр окружности в точке пересечений диагоналей объекта прогресс.<br />
<br />
= Передаваемые состояния =<br />
<br />
:'''next''' - добавит к текущему значению ''chVal''(''изменение'') и визуально c скоростью "vel" (''скорость'') сменит своё состояние ("при увеличении" - станет более заполненным);<br />
<br />
= Пример=<br />
Пример использования объекта, типа Progress в хидденах:<br />
<br />
[[Файл:Progress1_1.jpg|700px]] [[Файл:Progress2_1.jpg|205px]]<br />
<br />
В данном примере используется 2 объекта типа Progress, тип которых - линейный: 1 - combo_progress для отображения комбо прогресса в очковой системе хидденлиста,<br /> 2 - cnt_prgss для отображения количества найденных объектов. <br />
<br />
Параметры объектов типа Progress следующие:<br />
<br />
[[Файл:Progress3_1.jpg|250px]] [[Файл:Progress4_1.jpg|250px]]<br />
<br />
[[Category:Main objects]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9509Economics2018-05-04T06:19:13Z<p>Sadovoy: </p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3, 4.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях (в случае с календарём - влияет параметр "подзадача предмет" -> "сгенерировать предмет" - если указано неделя - будет давать локацию в диапазоне текущей недели; день - локацию текущего дня).<br />
<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Коды ошибок:=<br />
При скачивании паков, посредством фоновой загрузки или через состояние "download_pack" могут возникать ошибки (которые можем словить через еррорменеджер):<br />
*'''1''' - ошибка не классифицирована<br />
*'''2''' - отсутствует соединение с интернетом<br />
*'''3''' - отсутствуют ресурсы по данному запросу<br />
*'''4''' - недостаточно оперативной памяти для загрузки<br />
*'''5''' - недостаточно памяти в файловой системе для загрузки<br />
*'''6''' - ошибка работы с файловой системой во время загрузки<br />
*'''7''' - недостаточно оперативной памяти для распаковки<br />
*'''8''' - недостаточно памяти в файловой системе для распаковки<br />
*'''9''' - ошибка работы с файловой системой во время распаковки<br />
*'''10''' - ошибка проверки распакованного пака<br />
*'''11''' - ошибка распаковки<br />
<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
=Динамические паки=<br />
Функционал позволяет уменьшить размер приложения, посредством разбиения арта на паки, и в процессе игры их скачивания [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit# (см. документ)].<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9505Taskorganizer2018-04-25T07:44:12Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Taskorganizer - Менеджер задач и квестов<br />
<br />
=Свойства=<br />
[[Файл:Task.jpg|250px|thumb|right]]<br />
[[Файл:Task_1.jpg|250px|thumb|right]]<br />
=== Общие параметры ===<br />
*'''economics''' - Объект типа экономикс.<br />
*'''предметы''' - Объект типа eitems.<br />
*'''таблица''' - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).<br />
*'''добавлять иконки''' - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).<br />
*'''шаблон предмета''' - Объект типа etaskitem будет использоваться при показе превью задания.<br />
*'''фильтрация''' - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.<br />
*'''таблица логов''' - Таблица куда будут помещены записи логбука.<br />
*'''новая запись''' - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.<br />
*'''новое задание''' - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.<br />
*'''прочитанное задание''' - Графический ресурс, который будет отмечать прочитанные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе).<br />
*'''выполненное задание''' - Графический ресурс, который будет отмечать выполненные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе)<br />
*'''уведомление''' - Текстовый айди заголовка связанных с задачами уведомлений (Должно быть заполнено поле sense 4 - т.к. рандомно его будет постить).<br />
*'''вероятность уведомления''' - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.<br />
*'''выполнять непрочитанные''' - 1 - выполнять непрочитанные таски, 0 - нет.<br />
*'''хронологический порядок''' - 1 - записывать задачи в хронологическом порядке, 0 - нет.<br />
*'''картинки в логбук''' - Расположение картинки до или после текста.<br />
*'''сдвиг уровней''' - число на которое сдвинутся требования к уровню игрока в taskorganizer_setup для каждой задачи;<br />
*'''refresh при показе окна''' - 0 - нет, 1 - да. Ставим = 0 ( "нет" ), если хотим чтобы при тапе по таблице отложить сортировку и обновление статуса таска ( в определённый момент ( к примеру, когда открылось окно таска), передаём состояние '''refresh''' и таблица обновится).<br />
*'''использовать накопление ошибки''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы нахождение предметов в хиддене, по таску не превышало n-раз ( к примеру p= 0.5 (1/0.5=2 , т.е. предмет должны найти не более чем за две игры в хидн), если количество сыгранных игр >= максимальному по вероятности, то предмет попадает в таблицу ( мы его нашли)). Если стоит - 0 ( "нет" ), то вне зависимости от количества заходов, будет браться вероятность.<br />
*'''etasktemplate''' - объект типа [[Etasktemplate|etasktemplate]]<br />
*'''только одна подкрутка за раз''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы за один проход хиддена выполнялся один таск.<br />
*'''таблица для шаблонов''' - таблица, в которую сложим шаблоны из предыдущего поля<br />
*'''помещать генерируемые в шаблоны''' - помещать в шаблоны генерируемые таски<br />
*'''уменьшать предметы при сдаче коллекции''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), то при сдаче коллекции будет выполнен декремент количества предметов необходимых чтобы задание выполнилось ( параметр таски s0 в опциях).<br />
<br />
<br />
<pre><br />
Для огранизации логбука необходимо текст поместить в sentenсe 1. Картинка, что будет отображаться с этим текстом, должна быть icon 2. Также есть возможность использовать эту картинку в качестве фона. Тогда текст, который будет отображаться поверх этой картинки, нужно разместить в sentenсe 2.<br />
</pre><br />
<br />
=== Группа угадайка ===<br />
<br />
Угадайка - задание, в котором игроку предлагается вспомнить или угадать, кто из персонажей просил тот или иной коллекционный предмет. Владелец предмета указывается в настройке подзадачи.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать угадайку.<br />
*'''с уровня''' - Угадайка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''иконка''' - Объект, в который сложим иконку предмета.<br />
*'''иконка для таблицы''' - Иконка соответствующая угадайке в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
=== Группа рулетка ===<br />
<br />
На самом деле название "рулетка" весьма условное. В этом разделе можно поместить любое периодически повторяющееся задание.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать рулетку.<br />
*'''с уровня''' - Рулетка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show.<br />
*'''иконка для таблицы''' - Иконка соответствующая рулетке в таблице задач.<br />
=== Группа генерируемые ===<br />
<br />
В этой группе находятся периодически генерируемые задания на прохождение локаций.<br />
<br />
*'''активных задач''' - Эти задачи будут генерироваться, когда активных задач столько или меньше.<br />
*'''с уровня''' - Эти задачи будут генерироваться только начиная с данного уровня.<br />
*'''максимально''' - Будет сгенерированно случайное количество задач от 1 до n.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''название''' - Текстовый объект, в который будет сложено название локации.<br />
*'''превью''' - Объект, в который сложим превью локации для генерируемой задачи.<br />
*'''иконка для таблицы''' - Иконка соответствующая генерируемому таску в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
*'''текст для etasktemplate''' - будет в поле name etasktemplate. Это название задачи на прохождение локации, которая генерируется автоматически и использует шаблон etasktemplate. Текст используется из Текстовой Базы Ресурсов. Например, "Исследовать локацию".<br />
*'''номер кнопки для etasktemplate''' - номер кнопки для etasktemplate. [[Button|Кнопка]], которая используется для данной задачи. Например, "Исследовать". <br />
<br />
<pre><br />
Если перед генерацией случайного таска на исследование локации указать параметру gen_loc значение от 0 до n, то ближайшая генерируемая задача будет для конкретной локации под указанным номером. После генерации параметр gen_loc становится -1.<br />
</pre><br />
<br />
<pre><br />
Если перед генерацией случайного таска от персонажа указать параметру gen_face значение от 0 до n, то ближайшая генерируемая задача будет от персонажа под указанным номером. После генерации параметр gen_face становится -1.<br />
Если указать gen_face="-2", то таскорганайзер попытается с генерировать задачу с персонажем так, чтобы номер локации совпадал с персонажем, при условии что номер локации будет меньше максимальному числу персонажей ( char_num).<br />
</pre><br />
<br />
=== Группа угадаечные задачи ===<br />
<br />
В этой группе указываем диапазоны для генерации тасков-викторин и способ генерации.<br />
<br />
*'''стандартная генерация''':<br />
::'''нет''' - особая генерация задач, при которой с начало генерируем задачи из _очереди 1_, потом задачи из _очереди 2_ ( Если в первой очереди мы не можем сгенерировать задачу, пытаемся сгенерировать из второй очереди). Если мы не сгенерировали задачу из обоих очередей, то мы обнуляем все таски из обоих очередей ( и сразу генерим из _очереди 1_ задачу);<br />
::'''да''' - стандартная генерация одной угадайки ( начинаем сверху вниз генерить;<br />
*'''очередь 1''' - Основная очередь, пытаемся из неё сгенерировать задачу, при получении Taskorganizer сост. _generate_guess_, если в предыдущем поле стоит '''нет'''. Каждая задача из этой очереди имеет условия для появления ( прохождение сюжетного таска к примеру);<br />
*'''очередь 2''' - Очередь затычка, задачи из этой очереди без условий. Предназначена когда в первой очереди нету доступных тасков для генерации;<br />
<br />
<pre><br />
У таскорганайзера есть поле disabled, если при каждом запуске приложения после конца туториала писать туда 1 - это приведет к удалению старого сейва и несозданию нового. Несколько килобайт выгоды в опциях + использовать только для туториального таскорганайзера, когда он отработает.<br />
</pre><br />
<br />
=Taskorganizer setup=<br />
[[Файл:Task_2.jpg|600px|thumb|right]]<br />
<br />
*'''id''' - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди. Перетаскивается из текстовой базы.<br />
'''Для каждого задания(записи в logbook) должен быть свой уникальный id.'''<br />
*'''хинт''' - Список строк-подсказок для задачи. Перетаскиваются из текстовой базы. Таким образом, добавив несколько записей из базы, увидим выпадающий список.<br />
*'''название (объект)''' - Текстовый объект, в который мы сложим название задания. Описание подтягивается из текстовой базы из первого столбика (word) текстового id задания.<br />
*'''машина''' - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.<br />
*'''портрет''' - Объект, которому при активации задания будет устанорвлен графический ресурс рожи.<br />
*'''таблица''' - Таблица куда будут помещены темплейты предметов данного задания.<br />
*'''описание (объект)''' - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.<br />
*'''награда (ресурс 1)''' - Счетчик отображающий награду в ресурсе 1 за выполнение задания.<br />
*'''награда (ресурс 2)''' - Счетчик отображающий награду в ресурсе 2 за выполнение задания.<br />
*'''награда (опыт)''' - Счетчик отображающий награду в опыте за выполнение задания.<br />
*'''таблица хинта''' - Таблица, в которую будем складывать хинты.<br />
*'''умножать цену пропуска''' - нужно в случае, если мы хотим давать юзеру возможность моментально выполнить задачу за цену, которая зависит от количества нехватающих коллекционных предметов (цена пропуска*количество отсутствующих предметов).<br />
*'''видимые кнопки''' - номера видимых кнопок в [[Etasktemplate#Дополнительные кнопки|Etasktemplate]] через запятую. Отображает кнопки, используемые для данной задачи.<br />
<br />
<br />
'''Необходимое для логбука'''<br />
<br />
*'''для журнала''' - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.<br />
*'''категория''' - Категория к которой относится задача/запись. Пока используется только задачами для логбука.<br />
<br />
'''Критерии появления'''<br />
<br />
*'''уровень''' - Минимальный уровень, при котором может появиться задание.<br />
*'''аномалия''' - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.<br />
*'''локация''' - Локация для которой будем проверять мастерство. -1 - не учитывать условие.<br />
*'''мастерство''' - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.<br />
*'''завершены до''' - Задания, которые должны быть завершены до появления этого.<br />
*'''получены до''' - Задания, которые должны быть получены до появления этого.<br />
*'''не завершены до''' - Задания, которые должны быть НЕ завершены до появления этого.<br />
*'''объект до''' - Объект, который должен находиться в состоянии_до для появления задания.<br />
*'''состояние до''' - Состояние объекта_до, в котором вызывается генерация задания.<br />
*'''коллекционные''' - Коллекционные предметы, которые должны быть найдены для появления задания.<br />
*'''вероятность нужного''' - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью. 0 - использовать дефолтную.<br />
<br />
'''Критерии завершения'''<br />
<br />
*'''с аномалией''' - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию. <br />
*'''задачи''' - Задания, выполнение которых требуется для выполнения данной.<br />
*'''предметы''' - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).<br />
*'''объект''' - Объект, который должен находиться в определенном состоянии,для завершения задания.<br />
*'''состояние''' - Состояние объекта, в котором вызывается проверка задания.<br />
<br />
'''Награда'''<br />
<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''перевести объект''' - При выполнении задания этот объект будет переведен в новое состояние.<br />
*'''в состояние''' - Состояние для объекта из предыдущего поля.<br />
<br />
==Подзадача предмет==<br />
В опции суммарно будет записываться значение два параметра:<br />
<br />
:'''iN''' - "item need" - необходимое количество предметов, по всем "подзадачам предмет";<br />
:'''iH''' - "item have" - имеющееся количество предметов, по всем "подзадачам предмет";<br />
:'''i0..i666''' - требующийся предмет, пишется для задач из коллекций;<br />
<br />
*'''сгенерировать предмет''' - определить необходимый предмет из коллекции; <br />
::'''нет''' - просто требовать предмет;<br />
::'''да''' - сгенерировать предмет из доступных локаций (календарь);<br />
::'''сегодня''' - с генерировать предмет из коллекции, для локации текущего дня (календарь);<br />
::'''неделя''' - с генерировать предмет из коллекции, для локаций текущей недели (календарь);<br />
*'''из коллекции''' - указать txtID коллекции из которой будут браться id предметов;<br />
<br />
==Подзадача экспертиза==<br />
<br />
*'''предмет''' - в поле предмет записываем id объекта, который нужен для проведения экспертизы. Предмет берем из текстовой базы ресурсов. Иконка предмета до начала и во время проведения экспертизы в icon1, иконка предмета после проведения экспертизы в icon2.<br />
*'''время''' - изначальная длительность экспертизы в секундах.<br />
*'''стоимость''' - стоимость экспертизы, используется res3.<br />
*'''стоимость ускорения''' - стоимость ускорения экспертизы, используется res2.<br />
*'''описание''' - описание подзадачи<br />
*'''владелец''' - здесь используем число для указания типа экспертизы. Например, 1 - это экспертизы одного типа, 2 - это второй тип экспертиз<br />
*'''уведомление''' - текстовый id для уведомления. Генерируется при старте. Имя уведомления записать в поле word, текст уведомления в sentence1, картинку уведомления в sentence2.<br />
<br />
<pre><br />
Картинку для уведомления положить в конфиги, рядом с файлом platform.icf для каждой платформы.<br />
К примеру, путь может выглядеть так: C:\Editor\Projects\Crime_City\conf\base\project\platforms\google<br />
</pre><br />
<br />
[[Файл:Taskorganizer_eanalysis.png|600px|thumb|right]]<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
=Состояния=<br />
<br />
*'''show''' - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе '''задание'''.<br />
*'''check''' - При вызове проверяется выполнение текущих заданий(заданий добавленных в таблицу). Для того чтобы таскорганайзер добавил таски в таблицу после загрузки приложения ему нужно передать refresh.<br />
*'''generate''' - При вызове подбирается подходящее задание в зависимости от прогресса игрока.<br />
*'''generate_plot''' - При вызове генерится задача с персонажем ( поле генерируемые с персонажами), если перед этим передать в поле gen_face номер персонажа, то сгенерируем с указанным персонажем, после параметр обнулится ( значение -1 ). Перед вызовом данного состояния, '''обязательнo''' в поле _param_ вбить "1".<br />
*'''log_check''' - При вызове состояния проверяется доступны ли новые записи в логбук.<br />
*'''log_show''' - Заполняет таблицу логбука записями с текущим фильтром.<br />
*'''refresh''' - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.<br />
*'''cancel''' - Удаляет задание без награды, которое указано как ID в параметре param таскорганайзера, т.е. объекту Taskorganizer в param указываем ID таска (например 1933 - берется из options.xml или текстовой базы), а потом вызываем состояние cancel.<br />
*'''add_hint''' - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.<br />
*'''task_prev''' - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.<br />
*'''task_next''' - Показывает следующее по списку таблицы задание.<br />
<pre><br />
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.<br />
</pre><br />
*'''show_id''' - Показать окно задачи, взяв ее id из параметра.<br />
*'''show_complete_id''' - показать окно после задачи, взяв ее id из param (делалось для одноразовых задач, повторяемые могут не работать);<br />
*'''show_last_plot''' - Открыть последнюю сгенерированную сюжетную задачу.<br />
*'''guess''' - Ответить на текущую угадайку, взяв ответ из параметра (param). Taskorganizer также хранит правильный ответ на текущую угадайку в параметре ''guess_answer'', его можно использовать, если нужно оставить игроку меньше вариантов для угадывания.<br />
*'''add_hint_last''' - Добавить подсказку последней добавленной задаче.<br />
*'''add_hint_top''' - Добавить подсказку верхней задаче в таблице.<br />
*'''guess_who_reward''' - начислить награду за последнюю угадайку.<br />
*'''roulette_complete''' -состояние, вызываемое при выполнении текущей задачи "рулетка".<br />
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.<br />
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.<br />
*'''skip_id_no_effect''' - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.<br />
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.<br />
*'''add_hint_hidden_all''' - Вызов подсказки для всех активных скрытых задач (по списку в таскорганайзере).<br />
*'''calc_active_preset''' - Посчитать количество активных задач по конкретному "preset" (перед вызовом в поле "param" указать номер интересующей категории preset). После вызова, таскорганайзер заполнит параметр "preset_tasks".<br />
<br />
Состояния для работы с тасками-угадайками по типу викторины ( в taskorganizer_setup - тип = "угадайка"):<br />
*'''answer''' - ответить на открытую угадайку ( в поле '''param''' должно находиться число, номер нажатой кнопки от 0 до 3 ). Вешаем на кнопки варианты-ответа ( пишем param = 0 - 3 , после передаёт _answer_); <br />
*'''generate_guess''' - сгенерировать угадайку-викторину ( выберет доступные задачи из диапазона указанном в очередях ( 1 и 2) поле _угадаечные задачи_ taskorganizer). При открытии угадайки, в поле _cur_guess_answer_ объекта Taskorganizer записывается номер кнопки где лежит правильный ответ ( от 0 до 3 );<br />
<br />
ПРИМЕЧАНИЕ: при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.<br />
<br />
При кажом refresh таскорганайзер заполняет у себя поля:<br />
*'''tasks_in_table''' - задач в таблице<br />
*'''tasks_total''' - задач в таблице + скрытых задач<br />
<br />
<br />
Изменение состояния объекта в логе выводится как:<br />
I/GTaskOrganizer GTaskOrganizer::state() state from 0 to 5 through object eco_checker (2543);<br />
<br />
<pre><br />
Состояния из кода:<br />
0 "idle", // Состояние по умолчанию<br />
1 "refresh", // Обновить таблицу с иконками задач<br />
2 "refresh_templates", // Обновить "ленту" задач<br />
3 "generate", // Сгенерировать новую задачу (выбрать одну из доступных по условиям) И обновить таблицу с иконками задач<br />
4 "show", // Показать окно задачи в зависимости от выделенной ячейки в таблице<br />
5 "check", // Проверить задачи на выполнение. После этого автоматически вызовется рефреш<br />
6 "log_check", // Проверить, не стали ли доступны новые записи в логе<br />
7 "log_show", // Заполнить таблицу логбука записями с текущим фильтром<br />
8 "task_next", // Следующий таск в таблице<br />
9 "task_prev", // Предыдущий таск в таблице<br />
10 "add_hint", // Добавить подсказку<br />
11 "task_reward", // Вручить награду за задание - нужно, чтобы разделить выполнение задания и окно получения уровня<br />
12 "show_id", // Показать окно задачи, взяв ее id из параметра<br />
13 "guess", // Ответить на текущую угадайку, взяв ответ из параметра<br />
14 "add_hint_last", // Добавить подсказку последней добавленной задаче<br />
15 "add_hint_top", // Добавить подсказку верхней задаче в таблице<br />
16 "guess_who_reward", // Начислить награду за последнюю угадайку<br />
17 "roulette_complete", // состояние, вызываемое при выполнении текущей задачи "рулетка"<br />
18 "cheat_complete", // читерское завершение задачи<br />
19 "generate_plot", // сгенерировать новых "сюжетных задач"<br />
20 "eraser_start", // принудительно стартовать стирачку <br />
21 "eraser_complete", // вручить награду за нее<br />
22 "cancel", // отменить задание из param<br />
23 "guess_year", // попытаться угадать год (param)<br />
24 "guess_year_reward", // Дать награду за угадывание года<br />
25 "show_last_plot", // Открыть последнюю сгенерированную сюжетную задачу<br />
26 "skip", // Пропустить задачу для которой открыто окно за кристаллы<br />
27 "add_hint_id", // Добавить хинт задаче по id, если она активна<br />
28 "add_hint_hidden", // Добавить хинт первой скрытой задаче<br />
29 "add_hint_hidden_all", // Добавить хинт всем скрытым задачам<br />
30 "time_to_activate", // Пришло событие об активации задачи<br />
31 "time_to_timeout", // Пришло событие о таймауте задачи<br />
32 "check_multiple", // Проверить выполнение задач не выходя из проверки после первой найденной<br />
33 "answer", // Ответить на новую (январь 2015) угадайку. Номер кнопки в param<br />
34 "generate_guess", // Сгенерировать новую угадайку<br />
35 "show_random", // Показать окно случайной активной задачи<br />
36 "show_eraser", // Показать окно стирачки<br />
37 "calc_active_preset", // Посчитать активные задачи по заданному пресету<br />
38 "show_case", // Найти активный кейс и заполнить его поля<br />
39 "scroll_to_task", // Промотать на таск из param таблицу<br />
40 "reactivate", // Повторно активировать таск из param<br />
41 "generate_loc", // Сгенерировать генерируемых (извиняюсь) тасков, количество в param<br />
42 "copy", // Скопировать общие данные в другой таскорганайзер<br />
43 "cross_promo", // Открыть урл связанный с crosspromo задачей<br />
44 "show_complete_id", // Показать окно после задачи независимо от ее состояния, взяв ее id из параметра<br />
45 "skip_id_no_effect", // Изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
46 "clear_shown_templates" // Убрать выполненные таски для которых показан эффект из таблицы шаблонов<br />
</pre><br />
<br />
=Запись в опции=<br />
<br />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<br />
* '''7''' - таск выполнен, награда получена, таск остался в таблице;<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
<br />
=Вычитаемые параметры:=<br />
Каждая таскорганайзер пишет в пользователя следующие параметры:<br />
*'''public.TaskOrganizerCompletedTasks''' - количество выполненных одноразовых задач;<br />
*'''public.TaskOrganizerCompletedTasksAll''' - количество выполненных задач с учётом повторяемых;<br />
<br />
=Механизм многоуровневых достижений=<br />
С помощью таскорганайзера можно организовать систему многоуровневых достижений. Для этого используется [[Etasktemplate|темплейт задачи]]. Данные темплейты складываются в таблицу темплейтов таскорганайзера. При этом в самом таскорганайзере должна быть указанна таблица для иконок задач, хоть она и не используется (желательно вынести за границы экрана).<br />
<br />
Каждый уровень достижения представляет собой отдельный таск с подзадачей на опции. В поле опций этой подзадачи указываем параметр, который отображает прогресс по достижению. Чтобы создать несколько уровней достижения, нужно несколько задач одного типа (с возрастающими требованиями).<br />
<br />
Часть контента для достижения задается чрез текстовый объект - id таска. В текстовом объекте указываем название (word), описание невыполненной (sentence1) и выполненной (sentence2) ачивки. А также ресурс иконки ачивки (ico1), ресурс звезд для невыполненной (ico2) и выполененной (ico3) задачи.<br />
Награду за достижения ачивки указываем как награду за выполнение таска. Также с помощью обработчика завершения задачи можем запустить анимацию получения ачивки.<br />
<br />
Для заполнения таблицы темплейтов нужно вызвать состояние '''refresh_templates''', при вызове '''check''' задача, условия которой были выполнены изменит свое состояние, при этом будут переключены ресурсы звезд, описание ачивки и спрятана кнопка темплейта '''btn'''. <br />
<br />
Для контроля того, какая задача будет вызвана при вызове '''check''' можно использовать следующий способ. К задаче добавляем еще одну подзадачу на опции. Когда прогресс по первой подзадаче на опции будет >= требуемого значения для задачи будет отображаться кнопка темплейта '''btn'''. При нажатии на эту кнопку, которая должна вызывать '''take''' темплейту задачи, в него пишется параметр clicked_task_id, по этому параметру определяем у какой задачи нужно выполнить вторую подзадачу на опции и вызываем '''check''' таскорганайзеру.<br />
<br />
Пример<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
Complex_achievements.zip<br />
<br />
=Пример проекта=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer<br />
<br />
=Равномерная экономика (Preset)=<br />
[[Файл:1499422858929.jpg|300px|thumb|right]]<br />
Работает, при включении в объекте Economic равномерной экономики (задание не нулевых значений).<br />
Настройка позволяет давать диапазонную награду конкретной группе задач("preset").<br />
Настройка награды для всех задач, у которых не указан параметр "preset" (т.е. =="-1"), осуществляется, группой параметров объекта Taskorganizer:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Настройки конкретного preset вынесены в отдельную вкладку "Taskorganizer_setup":<br />
[[Файл:Photo hidden 365 Scene Editor build Wed Jul 5 151607 2017 -(single-user) DProjectsEDITOR Game Hidden 365Photo hidden 365Photo hidden 365.seproj.jpg|600px|right]]<br />
[[Category:Economics]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9504Taskorganizer2018-04-25T07:16:36Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Taskorganizer - Менеджер задач и квестов<br />
<br />
=Свойства=<br />
[[Файл:Task.jpg|250px|thumb|right]]<br />
[[Файл:Task_1.jpg|250px|thumb|right]]<br />
=== Общие параметры ===<br />
*'''economics''' - Объект типа экономикс.<br />
*'''предметы''' - Объект типа eitems.<br />
*'''таблица''' - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).<br />
*'''добавлять иконки''' - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).<br />
*'''шаблон предмета''' - Объект типа etaskitem будет использоваться при показе превью задания.<br />
*'''фильтрация''' - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.<br />
*'''таблица логов''' - Таблица куда будут помещены записи логбука.<br />
*'''новая запись''' - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.<br />
*'''новое задание''' - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.<br />
*'''прочитанное задание''' - Графический ресурс, который будет отмечать прочитанные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе).<br />
*'''выполненное задание''' - Графический ресурс, который будет отмечать выполненные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе)<br />
*'''уведомление''' - Текстовый айди заголовка связанных с задачами уведомлений (Должно быть заполнено поле sense 4 - т.к. рандомно его будет постить).<br />
*'''вероятность уведомления''' - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.<br />
*'''выполнять непрочитанные''' - 1 - выполнять непрочитанные таски, 0 - нет.<br />
*'''хронологический порядок''' - 1 - записывать задачи в хронологическом порядке, 0 - нет.<br />
*'''картинки в логбук''' - Расположение картинки до или после текста.<br />
*'''сдвиг уровней''' - число на которое сдвинутся требования к уровню игрока в taskorganizer_setup для каждой задачи;<br />
*'''refresh при показе окна''' - 0 - нет, 1 - да. Ставим = 0 ( "нет" ), если хотим чтобы при тапе по таблице отложить сортировку и обновление статуса таска ( в определённый момент ( к примеру, когда открылось окно таска), передаём состояние '''refresh''' и таблица обновится).<br />
*'''использовать накопление ошибки''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы нахождение предметов в хиддене, по таску не превышало n-раз ( к примеру p= 0.5 (1/0.5=2 , т.е. предмет должны найти не более чем за две игры в хидн), если количество сыгранных игр >= максимальному по вероятности, то предмет попадает в таблицу ( мы его нашли)). Если стоит - 0 ( "нет" ), то вне зависимости от количества заходов, будет браться вероятность.<br />
*'''etasktemplate''' - объект типа [[Etasktemplate|etasktemplate]]<br />
*'''только одна подкрутка за раз''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы за один проход хиддена выполнялся один таск.<br />
*'''таблица для шаблонов''' - таблица, в которую сложим шаблоны из предыдущего поля<br />
*'''помещать генерируемые в шаблоны''' - помещать в шаблоны генерируемые таски<br />
*'''уменьшать предметы при сдаче коллекции''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), то при сдаче коллекции будет выполнен декремент количества предметов необходимых чтобы задание выполнилось ( параметр таски s0 в опциях).<br />
<br />
<br />
<pre><br />
Для огранизации логбука необходимо текст поместить в sentenсe 1. Картинка, что будет отображаться с этим текстом, должна быть icon 2. Также есть возможность использовать эту картинку в качестве фона. Тогда текст, который будет отображаться поверх этой картинки, нужно разместить в sentenсe 2.<br />
</pre><br />
<br />
=== Группа угадайка ===<br />
<br />
Угадайка - задание, в котором игроку предлагается вспомнить или угадать, кто из персонажей просил тот или иной коллекционный предмет. Владелец предмета указывается в настройке подзадачи.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать угадайку.<br />
*'''с уровня''' - Угадайка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''иконка''' - Объект, в который сложим иконку предмета.<br />
*'''иконка для таблицы''' - Иконка соответствующая угадайке в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
=== Группа рулетка ===<br />
<br />
На самом деле название "рулетка" весьма условное. В этом разделе можно поместить любое периодически повторяющееся задание.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать рулетку.<br />
*'''с уровня''' - Рулетка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show.<br />
*'''иконка для таблицы''' - Иконка соответствующая рулетке в таблице задач.<br />
=== Группа генерируемые ===<br />
<br />
В этой группе находятся периодически генерируемые задания на прохождение локаций.<br />
<br />
*'''активных задач''' - Эти задачи будут генерироваться, когда активных задач столько или меньше.<br />
*'''с уровня''' - Эти задачи будут генерироваться только начиная с данного уровня.<br />
*'''максимально''' - Будет сгенерированно случайное количество задач от 1 до n.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''название''' - Текстовый объект, в который будет сложено название локации.<br />
*'''превью''' - Объект, в который сложим превью локации для генерируемой задачи.<br />
*'''иконка для таблицы''' - Иконка соответствующая генерируемому таску в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
*'''текст для etasktemplate''' - будет в поле name etasktemplate. Это название задачи на прохождение локации, которая генерируется автоматически и использует шаблон etasktemplate. Текст используется из Текстовой Базы Ресурсов. Например, "Исследовать локацию".<br />
*'''номер кнопки для etasktemplate''' - номер кнопки для etasktemplate. [[Button|Кнопка]], которая используется для данной задачи. Например, "Исследовать". <br />
<br />
<pre><br />
Если перед генерацией случайного таска на исследование локации указать параметру gen_loc значение от 0 до n, то ближайшая генерируемая задача будет для конкретной локации под указанным номером. После генерации параметр gen_loc становится -1.<br />
</pre><br />
<br />
<pre><br />
Если перед генерацией случайного таска от персонажа указать параметру gen_face значение от 0 до n, то ближайшая генерируемая задача будет от персонажа под указанным номером. После генерации параметр gen_face становится -1.<br />
Если указать gen_face="-2", то таскорганайзер попытается с генерировать задачу с персонажем так, чтобы номер локации совпадал с персонажем, при условии что номер локации будет меньше максимальному числу персонажей ( char_num).<br />
</pre><br />
<br />
=== Группа угадаечные задачи ===<br />
<br />
В этой группе указываем диапазоны для генерации тасков-викторин и способ генерации.<br />
<br />
*'''стандартная генерация''':<br />
::'''нет''' - особая генерация задач, при которой с начало генерируем задачи из _очереди 1_, потом задачи из _очереди 2_ ( Если в первой очереди мы не можем сгенерировать задачу, пытаемся сгенерировать из второй очереди). Если мы не сгенерировали задачу из обоих очередей, то мы обнуляем все таски из обоих очередей ( и сразу генерим из _очереди 1_ задачу);<br />
::'''да''' - стандартная генерация одной угадайки ( начинаем сверху вниз генерить;<br />
*'''очередь 1''' - Основная очередь, пытаемся из неё сгенерировать задачу, при получении Taskorganizer сост. _generate_guess_, если в предыдущем поле стоит '''нет'''. Каждая задача из этой очереди имеет условия для появления ( прохождение сюжетного таска к примеру);<br />
*'''очередь 2''' - Очередь затычка, задачи из этой очереди без условий. Предназначена когда в первой очереди нету доступных тасков для генерации;<br />
<br />
<pre><br />
У таскорганайзера есть поле disabled, если при каждом запуске приложения после конца туториала писать туда 1 - это приведет к удалению старого сейва и несозданию нового. Несколько килобайт выгоды в опциях + использовать только для туториального таскорганайзера, когда он отработает.<br />
</pre><br />
<br />
=Taskorganizer setup=<br />
[[Файл:Task_2.jpg|600px|thumb|right]]<br />
<br />
*'''id''' - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди. Перетаскивается из текстовой базы.<br />
'''Для каждого задания(записи в logbook) должен быть свой уникальный id.'''<br />
*'''хинт''' - Список строк-подсказок для задачи. Перетаскиваются из текстовой базы. Таким образом, добавив несколько записей из базы, увидим выпадающий список.<br />
*'''название (объект)''' - Текстовый объект, в который мы сложим название задания. Описание подтягивается из текстовой базы из первого столбика (word) текстового id задания.<br />
*'''машина''' - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.<br />
*'''портрет''' - Объект, которому при активации задания будет устанорвлен графический ресурс рожи.<br />
*'''таблица''' - Таблица куда будут помещены темплейты предметов данного задания.<br />
*'''описание (объект)''' - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.<br />
*'''награда (ресурс 1)''' - Счетчик отображающий награду в ресурсе 1 за выполнение задания.<br />
*'''награда (ресурс 2)''' - Счетчик отображающий награду в ресурсе 2 за выполнение задания.<br />
*'''награда (опыт)''' - Счетчик отображающий награду в опыте за выполнение задания.<br />
*'''таблица хинта''' - Таблица, в которую будем складывать хинты.<br />
*'''умножать цену пропуска''' - нужно в случае, если мы хотим давать юзеру возможность моментально выполнить задачу за цену, которая зависит от количества нехватающих коллекционных предметов (цена пропуска*количество отсутствующих предметов).<br />
*'''видимые кнопки''' - номера видимых кнопок в [[Etasktemplate#Дополнительные кнопки|Etasktemplate]] через запятую. Отображает кнопки, используемые для данной задачи.<br />
<br />
<br />
'''Необходимое для логбука'''<br />
<br />
*'''для журнала''' - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.<br />
*'''категория''' - Категория к которой относится задача/запись. Пока используется только задачами для логбука.<br />
<br />
'''Критерии появления'''<br />
<br />
*'''уровень''' - Минимальный уровень, при котором может появиться задание.<br />
*'''аномалия''' - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.<br />
*'''локация''' - Локация для которой будем проверять мастерство. -1 - не учитывать условие.<br />
*'''мастерство''' - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.<br />
*'''завершены до''' - Задания, которые должны быть завершены до появления этого.<br />
*'''получены до''' - Задания, которые должны быть получены до появления этого.<br />
*'''не завершены до''' - Задания, которые должны быть НЕ завершены до появления этого.<br />
*'''объект до''' - Объект, который должен находиться в состоянии_до для появления задания.<br />
*'''состояние до''' - Состояние объекта_до, в котором вызывается генерация задания.<br />
*'''коллекционные''' - Коллекционные предметы, которые должны быть найдены для появления задания.<br />
*'''вероятность нужного''' - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью. 0 - использовать дефолтную.<br />
<br />
'''Критерии завершения'''<br />
<br />
*'''с аномалией''' - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию. <br />
*'''задачи''' - Задания, выполнение которых требуется для выполнения данной.<br />
*'''предметы''' - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).<br />
*'''объект''' - Объект, который должен находиться в определенном состоянии,для завершения задания.<br />
*'''состояние''' - Состояние объекта, в котором вызывается проверка задания.<br />
<br />
'''Награда'''<br />
<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''перевести объект''' - При выполнении задания этот объект будет переведен в новое состояние.<br />
*'''в состояние''' - Состояние для объекта из предыдущего поля.<br />
<br />
==Подзадача предмет==<br />
В опции суммарно будет записываться значение два параметра:<br />
<br />
:'''iN''' - "item need" - необходимое количество предметов, по всем "подзадачам предмет";<br />
:'''iH''' - "item have" - имеющееся количество предметов, по всем "подзадачам предмет";<br />
:'''i0..i666''' - требующийся предмет, пишется для задач из коллекций;<br />
<br />
*'''сгенерировать предмет''' - определить необходимый предмет из коллекции; <br />
::'''нет''' - просто требовать предмет;<br />
::'''да''' - сгенерировать предмет из доступных локаций (календарь);<br />
::'''сегодня''' - с генерировать предмет из коллекции, для локации текущего дня (календарь);<br />
::'''неделя''' - с генерировать предмет из коллекции, для локаций текущей недели (календарь);<br />
*'''из коллекции''' - указать txtID коллекции из которой будут браться id предметов;<br />
<br />
==Подзадача экспертиза==<br />
<br />
*'''предмет''' - в поле предмет записываем id объекта, который нужен для проведения экспертизы. Предмет берем из текстовой базы ресурсов. Иконка предмета до начала и во время проведения экспертизы в icon1, иконка предмета после проведения экспертизы в icon2.<br />
*'''время''' - изначальная длительность экспертизы в секундах.<br />
*'''стоимость''' - стоимость экспертизы, используется res3.<br />
*'''стоимость ускорения''' - стоимость ускорения экспертизы, используется res2.<br />
*'''описание''' - описание подзадачи<br />
*'''владелец''' - здесь используем число для указания типа экспертизы. Например, 1 - это экспертизы одного типа, 2 - это второй тип экспертиз<br />
*'''уведомление''' - текстовый id для уведомления. Генерируется при старте. Имя уведомления записать в поле word, текст уведомления в sentence1, картинку уведомления в sentence2.<br />
<br />
<pre><br />
Картинку для уведомления положить в конфиги, рядом с файлом platform.icf для каждой платформы.<br />
К примеру, путь может выглядеть так: C:\Editor\Projects\Crime_City\conf\base\project\platforms\google<br />
</pre><br />
<br />
[[Файл:Taskorganizer_eanalysis.png|600px|thumb|right]]<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
=Состояния=<br />
<br />
*'''show''' - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе '''задание'''.<br />
*'''check''' - При вызове проверяется выполнение текущих заданий(заданий добавленных в таблицу). Для того чтобы таскорганайзер добавил таски в таблицу после загрузки приложения ему нужно передать refresh.<br />
*'''generate''' - При вызове подбирается подходящее задание в зависимости от прогресса игрока.<br />
*'''generate_plot''' - При вызове генерится задача с персонажем ( поле генерируемые с персонажами), если перед этим передать в поле gen_face номер персонажа, то сгенерируем с указанным персонажем, после параметр обнулится ( значение -1 ). Перед вызовом данного состояния, '''обязательнo''' в поле _param_ вбить "1".<br />
*'''log_check''' - При вызове состояния проверяется доступны ли новые записи в логбук.<br />
*'''log_show''' - Заполняет таблицу логбука записями с текущим фильтром.<br />
*'''refresh''' - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.<br />
*'''cancel''' - Удаляет задание без награды, которое указано как ID в параметре param таскорганайзера, т.е. объекту Taskorganizer в param указываем ID таска (например 1933 - берется из options.xml или текстовой базы), а потом вызываем состояние cancel.<br />
*'''add_hint''' - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.<br />
*'''task_prev''' - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.<br />
*'''task_next''' - Показывает следующее по списку таблицы задание.<br />
<pre><br />
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.<br />
</pre><br />
*'''show_id''' - Показать окно задачи, взяв ее id из параметра.<br />
*'''show_complete_id''' - показать окно после задачи, взяв ее id из param (делалось для одноразовых задач, повторяемые могут не работать);<br />
*'''show_last_plot''' - Открыть последнюю сгенерированную сюжетную задачу.<br />
*'''guess''' - Ответить на текущую угадайку, взяв ответ из параметра (param). Taskorganizer также хранит правильный ответ на текущую угадайку в параметре ''guess_answer'', его можно использовать, если нужно оставить игроку меньше вариантов для угадывания.<br />
*'''add_hint_last''' - Добавить подсказку последней добавленной задаче.<br />
*'''add_hint_top''' - Добавить подсказку верхней задаче в таблице.<br />
*'''guess_who_reward''' - начислить награду за последнюю угадайку.<br />
*'''roulette_complete''' -состояние, вызываемое при выполнении текущей задачи "рулетка".<br />
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.<br />
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.<br />
*'''skip_id_no_effect''' - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.<br />
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.<br />
*'''add_hint_hidden_all''' - Вызов подсказки для всех активных скрытых задач (по списку в таскорганайзере).<br />
*'''calc_active_preset''' - Посчитать количество активных задач по конкретному "preset" (перед вызовом в поле "param" указать номер интересующей категории preset). После вызова, таскорганайзер заполнит параметр "preset_tasks".<br />
<br />
Состояния для работы с тасками-угадайками по типу викторины ( в taskorganizer_setup - тип = "угадайка"):<br />
*'''answer''' - ответить на открытую угадайку ( в поле '''param''' должно находиться число, номер нажатой кнопки от 0 до 3 ). Вешаем на кнопки варианты-ответа ( пишем param = 0 - 3 , после передаёт _answer_); <br />
*'''generate_guess''' - сгенерировать угадайку-викторину ( выберет доступные задачи из диапазона указанном в очередях ( 1 и 2) поле _угадаечные задачи_ taskorganizer). При открытии угадайки, в поле _cur_guess_answer_ объекта Taskorganizer записывается номер кнопки где лежит правильный ответ ( от 0 до 3 );<br />
<br />
ПРИМЕЧАНИЕ: при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.<br />
<br />
При кажом refresh таскорганайзер заполняет у себя поля:<br />
*'''tasks_in_table''' - задач в таблице<br />
*'''tasks_total''' - задач в таблице + скрытых задач<br />
<br />
<br />
Изменение состояния объекта в логе выводится как:<br />
I/GTaskOrganizer GTaskOrganizer::state() state from 0 to 5 through object eco_checker (2543);<br />
<br />
<pre><br />
Состояния из кода:<br />
0 "idle", // Состояние по умолчанию<br />
1 "refresh", // Обновить таблицу с иконками задач<br />
2 "refresh_templates", // Обновить "ленту" задач<br />
3 "generate", // Сгенерировать новую задачу (выбрать одну из доступных по условиям) И обновить таблицу с иконками задач<br />
4 "show", // Показать окно задачи в зависимости от выделенной ячейки в таблице<br />
5 "check", // Проверить задачи на выполнение. После этого автоматически вызовется рефреш<br />
6 "log_check", // Проверить, не стали ли доступны новые записи в логе<br />
7 "log_show", // Заполнить таблицу логбука записями с текущим фильтром<br />
8 "task_next", // Следующий таск в таблице<br />
9 "task_prev", // Предыдущий таск в таблице<br />
10 "add_hint", // Добавить подсказку<br />
11 "task_reward", // Вручить награду за задание - нужно, чтобы разделить выполнение задания и окно получения уровня<br />
12 "show_id", // Показать окно задачи, взяв ее id из параметра<br />
13 "guess", // Ответить на текущую угадайку, взяв ответ из параметра<br />
14 "add_hint_last", // Добавить подсказку последней добавленной задаче<br />
15 "add_hint_top", // Добавить подсказку верхней задаче в таблице<br />
16 "guess_who_reward", // начислить награду за последнюю угадайку<br />
17 "roulette_complete", // состояние, вызываемое при выполнении текущей задачи "рулетка"<br />
18 "cheat_complete", // читерское завершение задачи<br />
19 "generate_plot", // сгенерировать новых "сюжетных задач"<br />
20 "eraser_start", // принудительно стартовать стирачку <br />
21 "eraser_complete", // вручить награду за нее<br />
22 "cancel", // отменить задание из param<br />
23 "guess_year", // попытаться угадать год (param)<br />
24 "guess_year_reward", // Дать награду за угадывание года<br />
25 "show_last_plot", // Открыть последнюю сгенерированную сюжетную задачу<br />
26 "skip", // Пропустить задачу для которой открыто окно за кристаллы<br />
27 "add_hint_id", // Добавить хинт задаче по id, если она активна<br />
28 "add_hint_hidden", // Добавить хинт первой скрытой задаче<br />
29 "add_hint_hidden_all", // Добавить хинт всем скрытым задачам<br />
30 "time_to_activate", // Пришло событие об активации задачи<br />
31 "time_to_timeout", // Пришло событие о таймауте задачи<br />
32 "check_multiple", // Проверить выполнение задач не выходя из проверки после первой найденной<br />
33 "answer", // Ответить на новую (январь 2015) угадайку. Номер кнопки в param<br />
34 "generate_guess", // Сгенерировать новую угадайку<br />
35 "show_random", // Показать окно случайной активной задачи<br />
36 "show_eraser", // Показать окно стирачки<br />
37 "calc_active_preset", // Посчитать активные задачи по заданному пресету<br />
38 "show_case", // Найти активный кейс и заполнить его поля<br />
39 "scroll_to_task", // Промотать на таск из param таблицу<br />
40 "reactivate", // Повторно активировать таск из param<br />
41 "generate_loc", // Сгенерировать генерируемых (извиняюсь) тасков, количество в param<br />
42 "copy", // Скопировать общие данные в другой таскорганайзер<br />
43 "cross_promo", // Открыть урл связанный с crosspromo задачей<br />
44 "show_complete_id", // Показать окно после задачи независимо от ее состояния, взяв ее id из параметра<br />
45 "skip_id_no_effect", // Изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
46 "clear_shown_templates" // Убрать выполненные таски для которых показан эффект из таблицы шаблонов<br />
</pre><br />
<br />
=Запись в опции=<br />
<br />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<br />
* '''7''' - таск выполнен, награда получена, таск остался в таблице;<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
<br />
=Вычитаемые параметры:=<br />
Каждая таскорганайзер пишет в пользователя следующие параметры:<br />
*'''public.TaskOrganizerCompletedTasks''' - количество выполненных одноразовых задач;<br />
*'''public.TaskOrganizerCompletedTasksAll''' - количество выполненных задач с учётом повторяемых;<br />
<br />
=Механизм многоуровневых достижений=<br />
С помощью таскорганайзера можно организовать систему многоуровневых достижений. Для этого используется [[Etasktemplate|темплейт задачи]]. Данные темплейты складываются в таблицу темплейтов таскорганайзера. При этом в самом таскорганайзере должна быть указанна таблица для иконок задач, хоть она и не используется (желательно вынести за границы экрана).<br />
<br />
Каждый уровень достижения представляет собой отдельный таск с подзадачей на опции. В поле опций этой подзадачи указываем параметр, который отображает прогресс по достижению. Чтобы создать несколько уровней достижения, нужно несколько задач одного типа (с возрастающими требованиями).<br />
<br />
Часть контента для достижения задается чрез текстовый объект - id таска. В текстовом объекте указываем название (word), описание невыполненной (sentence1) и выполненной (sentence2) ачивки. А также ресурс иконки ачивки (ico1), ресурс звезд для невыполненной (ico2) и выполененной (ico3) задачи.<br />
Награду за достижения ачивки указываем как награду за выполнение таска. Также с помощью обработчика завершения задачи можем запустить анимацию получения ачивки.<br />
<br />
Для заполнения таблицы темплейтов нужно вызвать состояние '''refresh_templates''', при вызове '''check''' задача, условия которой были выполнены изменит свое состояние, при этом будут переключены ресурсы звезд, описание ачивки и спрятана кнопка темплейта '''btn'''. <br />
<br />
Для контроля того, какая задача будет вызвана при вызове '''check''' можно использовать следующий способ. К задаче добавляем еще одну подзадачу на опции. Когда прогресс по первой подзадаче на опции будет >= требуемого значения для задачи будет отображаться кнопка темплейта '''btn'''. При нажатии на эту кнопку, которая должна вызывать '''take''' темплейту задачи, в него пишется параметр clicked_task_id, по этому параметру определяем у какой задачи нужно выполнить вторую подзадачу на опции и вызываем '''check''' таскорганайзеру.<br />
<br />
Пример<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
Complex_achievements.zip<br />
<br />
=Пример проекта=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer<br />
<br />
=Равномерная экономика (Preset)=<br />
[[Файл:1499422858929.jpg|300px|thumb|right]]<br />
Работает, при включении в объекте Economic равномерной экономики (задание не нулевых значений).<br />
Настройка позволяет давать диапазонную награду конкретной группе задач("preset").<br />
Настройка награды для всех задач, у которых не указан параметр "preset" (т.е. =="-1"), осуществляется, группой параметров объекта Taskorganizer:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Настройки конкретного preset вынесены в отдельную вкладку "Taskorganizer_setup":<br />
[[Файл:Photo hidden 365 Scene Editor build Wed Jul 5 151607 2017 -(single-user) DProjectsEDITOR Game Hidden 365Photo hidden 365Photo hidden 365.seproj.jpg|600px|right]]<br />
[[Category:Economics]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9503Taskorganizer2018-04-25T07:15:32Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Taskorganizer - Менеджер задач и квестов<br />
<br />
=Свойства=<br />
[[Файл:Task.jpg|250px|thumb|right]]<br />
[[Файл:Task_1.jpg|250px|thumb|right]]<br />
=== Общие параметры ===<br />
*'''economics''' - Объект типа экономикс.<br />
*'''предметы''' - Объект типа eitems.<br />
*'''таблица''' - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).<br />
*'''добавлять иконки''' - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).<br />
*'''шаблон предмета''' - Объект типа etaskitem будет использоваться при показе превью задания.<br />
*'''фильтрация''' - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.<br />
*'''таблица логов''' - Таблица куда будут помещены записи логбука.<br />
*'''новая запись''' - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.<br />
*'''новое задание''' - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.<br />
*'''прочитанное задание''' - Графический ресурс, который будет отмечать прочитанные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе).<br />
*'''выполненное задание''' - Графический ресурс, который будет отмечать выполненные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе)<br />
*'''уведомление''' - Текстовый айди заголовка связанных с задачами уведомлений (Должно быть заполнено поле sense 4 - т.к. рандомно его будет постить).<br />
*'''вероятность уведомления''' - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.<br />
*'''выполнять непрочитанные''' - 1 - выполнять непрочитанные таски, 0 - нет.<br />
*'''хронологический порядок''' - 1 - записывать задачи в хронологическом порядке, 0 - нет.<br />
*'''картинки в логбук''' - Расположение картинки до или после текста.<br />
*'''сдвиг уровней''' - число на которое сдвинутся требования к уровню игрока в taskorganizer_setup для каждой задачи;<br />
*'''refresh при показе окна''' - 0 - нет, 1 - да. Ставим = 0 ( "нет" ), если хотим чтобы при тапе по таблице отложить сортировку и обновление статуса таска ( в определённый момент ( к примеру, когда открылось окно таска), передаём состояние '''refresh''' и таблица обновится).<br />
*'''использовать накопление ошибки''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы нахождение предметов в хиддене, по таску не превышало n-раз ( к примеру p= 0.5 (1/0.5=2 , т.е. предмет должны найти не более чем за две игры в хидн), если количество сыгранных игр >= максимальному по вероятности, то предмет попадает в таблицу ( мы его нашли)). Если стоит - 0 ( "нет" ), то вне зависимости от количества заходов, будет браться вероятность.<br />
*'''etasktemplate''' - объект типа [[Etasktemplate|etasktemplate]]<br />
*'''только одна подкрутка за раз''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы за один проход хиддена выполнялся один таск.<br />
*'''таблица для шаблонов''' - таблица, в которую сложим шаблоны из предыдущего поля<br />
*'''помещать генерируемые в шаблоны''' - помещать в шаблоны генерируемые таски<br />
*'''уменьшать предметы при сдаче коллекции''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), то при сдаче коллекции будет выполнен декремент количества предметов необходимых чтобы задание выполнилось ( параметр таски s0 в опциях).<br />
<br />
<br />
<pre><br />
Для огранизации логбука необходимо текст поместить в sentenсe 1. Картинка, что будет отображаться с этим текстом, должна быть icon 2. Также есть возможность использовать эту картинку в качестве фона. Тогда текст, который будет отображаться поверх этой картинки, нужно разместить в sentenсe 2.<br />
</pre><br />
<br />
=== Группа угадайка ===<br />
<br />
Угадайка - задание, в котором игроку предлагается вспомнить или угадать, кто из персонажей просил тот или иной коллекционный предмет. Владелец предмета указывается в настройке подзадачи.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать угадайку.<br />
*'''с уровня''' - Угадайка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''иконка''' - Объект, в который сложим иконку предмета.<br />
*'''иконка для таблицы''' - Иконка соответствующая угадайке в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
=== Группа рулетка ===<br />
<br />
На самом деле название "рулетка" весьма условное. В этом разделе можно поместить любое периодически повторяющееся задание.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать рулетку.<br />
*'''с уровня''' - Рулетка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show.<br />
*'''иконка для таблицы''' - Иконка соответствующая рулетке в таблице задач.<br />
=== Группа генерируемые ===<br />
<br />
В этой группе находятся периодически генерируемые задания на прохождение локаций.<br />
<br />
*'''активных задач''' - Эти задачи будут генерироваться, когда активных задач столько или меньше.<br />
*'''с уровня''' - Эти задачи будут генерироваться только начиная с данного уровня.<br />
*'''максимально''' - Будет сгенерированно случайное количество задач от 1 до n.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''название''' - Текстовый объект, в который будет сложено название локации.<br />
*'''превью''' - Объект, в который сложим превью локации для генерируемой задачи.<br />
*'''иконка для таблицы''' - Иконка соответствующая генерируемому таску в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
*'''текст для etasktemplate''' - будет в поле name etasktemplate. Это название задачи на прохождение локации, которая генерируется автоматически и использует шаблон etasktemplate. Текст используется из Текстовой Базы Ресурсов. Например, "Исследовать локацию".<br />
*'''номер кнопки для etasktemplate''' - номер кнопки для etasktemplate. [[Button|Кнопка]], которая используется для данной задачи. Например, "Исследовать". <br />
<br />
<pre><br />
Если перед генерацией случайного таска на исследование локации указать параметру gen_loc значение от 0 до n, то ближайшая генерируемая задача будет для конкретной локации под указанным номером. После генерации параметр gen_loc становится -1.<br />
</pre><br />
<br />
<pre><br />
Если перед генерацией случайного таска от персонажа указать параметру gen_face значение от 0 до n, то ближайшая генерируемая задача будет от персонажа под указанным номером. После генерации параметр gen_face становится -1.<br />
Если указать gen_face="-2", то таскорганайзер попытается с генерировать задачу с персонажем так, чтобы номер локации совпадал с персонажем, при условии что номер локации будет меньше максимальному числу персонажей ( char_num).<br />
</pre><br />
<br />
=== Группа угадаечные задачи ===<br />
<br />
В этой группе указываем диапазоны для генерации тасков-викторин и способ генерации.<br />
<br />
*'''стандартная генерация''':<br />
::'''нет''' - особая генерация задач, при которой с начало генерируем задачи из _очереди 1_, потом задачи из _очереди 2_ ( Если в первой очереди мы не можем сгенерировать задачу, пытаемся сгенерировать из второй очереди). Если мы не сгенерировали задачу из обоих очередей, то мы обнуляем все таски из обоих очередей ( и сразу генерим из _очереди 1_ задачу);<br />
::'''да''' - стандартная генерация одной угадайки ( начинаем сверху вниз генерить;<br />
*'''очередь 1''' - Основная очередь, пытаемся из неё сгенерировать задачу, при получении Taskorganizer сост. _generate_guess_, если в предыдущем поле стоит '''нет'''. Каждая задача из этой очереди имеет условия для появления ( прохождение сюжетного таска к примеру);<br />
*'''очередь 2''' - Очередь затычка, задачи из этой очереди без условий. Предназначена когда в первой очереди нету доступных тасков для генерации;<br />
<br />
<pre><br />
У таскорганайзера есть поле disabled, если при каждом запуске приложения после конца туториала писать туда 1 - это приведет к удалению старого сейва и несозданию нового. Несколько килобайт выгоды в опциях + использовать только для туториального таскорганайзера, когда он отработает.<br />
</pre><br />
<br />
=Taskorganizer setup=<br />
[[Файл:Task_2.jpg|600px|thumb|right]]<br />
<br />
*'''id''' - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди. Перетаскивается из текстовой базы.<br />
'''Для каждого задания(записи в logbook) должен быть свой уникальный id.'''<br />
*'''хинт''' - Список строк-подсказок для задачи. Перетаскиваются из текстовой базы. Таким образом, добавив несколько записей из базы, увидим выпадающий список.<br />
*'''название (объект)''' - Текстовый объект, в который мы сложим название задания. Описание подтягивается из текстовой базы из первого столбика (word) текстового id задания.<br />
*'''машина''' - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.<br />
*'''портрет''' - Объект, которому при активации задания будет устанорвлен графический ресурс рожи.<br />
*'''таблица''' - Таблица куда будут помещены темплейты предметов данного задания.<br />
*'''описание (объект)''' - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.<br />
*'''награда (ресурс 1)''' - Счетчик отображающий награду в ресурсе 1 за выполнение задания.<br />
*'''награда (ресурс 2)''' - Счетчик отображающий награду в ресурсе 2 за выполнение задания.<br />
*'''награда (опыт)''' - Счетчик отображающий награду в опыте за выполнение задания.<br />
*'''таблица хинта''' - Таблица, в которую будем складывать хинты.<br />
*'''умножать цену пропуска''' - нужно в случае, если мы хотим давать юзеру возможность моментально выполнить задачу за цену, которая зависит от количества нехватающих коллекционных предметов (цена пропуска*количество отсутствующих предметов).<br />
*'''видимые кнопки''' - номера видимых кнопок в [[Etasktemplate#Дополнительные кнопки|Etasktemplate]] через запятую. Отображает кнопки, используемые для данной задачи.<br />
<br />
<br />
'''Необходимое для логбука'''<br />
<br />
*'''для журнала''' - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.<br />
*'''категория''' - Категория к которой относится задача/запись. Пока используется только задачами для логбука.<br />
<br />
'''Критерии появления'''<br />
<br />
*'''уровень''' - Минимальный уровень, при котором может появиться задание.<br />
*'''аномалия''' - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.<br />
*'''локация''' - Локация для которой будем проверять мастерство. -1 - не учитывать условие.<br />
*'''мастерство''' - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.<br />
*'''завершены до''' - Задания, которые должны быть завершены до появления этого.<br />
*'''получены до''' - Задания, которые должны быть получены до появления этого.<br />
*'''не завершены до''' - Задания, которые должны быть НЕ завершены до появления этого.<br />
*'''объект до''' - Объект, который должен находиться в состоянии_до для появления задания.<br />
*'''состояние до''' - Состояние объекта_до, в котором вызывается генерация задания.<br />
*'''коллекционные''' - Коллекционные предметы, которые должны быть найдены для появления задания.<br />
*'''вероятность нужного''' - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью. 0 - использовать дефолтную.<br />
<br />
'''Критерии завершения'''<br />
<br />
*'''с аномалией''' - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию. <br />
*'''задачи''' - Задания, выполнение которых требуется для выполнения данной.<br />
*'''предметы''' - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).<br />
*'''объект''' - Объект, который должен находиться в определенном состоянии,для завершения задания.<br />
*'''состояние''' - Состояние объекта, в котором вызывается проверка задания.<br />
<br />
'''Награда'''<br />
<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''перевести объект''' - При выполнении задания этот объект будет переведен в новое состояние.<br />
*'''в состояние''' - Состояние для объекта из предыдущего поля.<br />
<br />
==Подзадача предмет==<br />
В опции суммарно будет записываться значение два параметра:<br />
<br />
:'''iN''' - "item need" - необходимое количество предметов, по всем "подзадачам предмет";<br />
:'''iH''' - "item have" - имеющееся количество предметов, по всем "подзадачам предмет";<br />
:'''i0..i666''' - требующийся предмет, пишется для задач из коллекций;<br />
<br />
*'''сгенерировать предмет''' - определить необходимый предмет из коллекции; <br />
::'''нет''' - просто требовать предмет;<br />
::'''да''' - сгенерировать предмет из доступных локаций (календарь);<br />
::'''сегодня''' - с генерировать предмет из коллекции, для локации текущего дня (календарь);<br />
::'''неделя''' - с генерировать предмет из коллекции, для локаций текущей недели (календарь);<br />
*'''из коллекции''' - указать txtID коллекции из которой будут браться id предметов;<br />
<br />
==Подзадача экспертиза==<br />
<br />
*'''предмет''' - в поле предмет записываем id объекта, который нужен для проведения экспертизы. Предмет берем из текстовой базы ресурсов. Иконка предмета до начала и во время проведения экспертизы в icon1, иконка предмета после проведения экспертизы в icon2.<br />
*'''время''' - изначальная длительность экспертизы в секундах.<br />
*'''стоимость''' - стоимость экспертизы, используется res3.<br />
*'''стоимость ускорения''' - стоимость ускорения экспертизы, используется res2.<br />
*'''описание''' - описание подзадачи<br />
*'''владелец''' - здесь используем число для указания типа экспертизы. Например, 1 - это экспертизы одного типа, 2 - это второй тип экспертиз<br />
*'''уведомление''' - текстовый id для уведомления. Генерируется при старте. Имя уведомления записать в поле word, текст уведомления в sentence1, картинку уведомления в sentence2.<br />
<br />
<pre><br />
Картинку для уведомления положить в конфиги, рядом с файлом platform.icf для каждой платформы.<br />
К примеру, путь может выглядеть так: C:\Editor\Projects\Crime_City\conf\base\project\platforms\google<br />
</pre><br />
<br />
[[Файл:Taskorganizer_eanalysis.png|600px|thumb|right]]<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
=Состояния=<br />
<br />
*'''show''' - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе '''задание'''.<br />
*'''check''' - При вызове проверяется выполнение текущих заданий(заданий добавленных в таблицу). Для того чтобы таскорганайзер добавил таски в таблицу после загрузки приложения ему нужно передать refresh.<br />
*'''generate''' - При вызове подбирается подходящее задание в зависимости от прогресса игрока.<br />
*'''generate_plot''' - При вызове генерится задача с персонажем ( поле генерируемые с персонажами), если перед этим передать в поле gen_face номер персонажа, то сгенерируем с указанным персонажем, после параметр обнулится ( значение -1 ). Перед вызовом данного состояния, '''обязательнo''' в поле _param_ вбить "1".<br />
*'''log_check''' - При вызове состояния проверяется доступны ли новые записи в логбук.<br />
*'''log_show''' - Заполняет таблицу логбука записями с текущим фильтром.<br />
*'''refresh''' - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.<br />
*'''cancel''' - Удаляет задание без награды, которое указано как ID в параметре param таскорганайзера, т.е. объекту Taskorganizer в param указываем ID таска (например 1933 - берется из options.xml или текстовой базы), а потом вызываем состояние cancel.<br />
*'''add_hint''' - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.<br />
*'''task_prev''' - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.<br />
*'''task_next''' - Показывает следующее по списку таблицы задание.<br />
<pre><br />
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.<br />
</pre><br />
*'''show_id''' - Показать окно задачи, взяв ее id из параметра.<br />
*'''show_complete_id''' - показать окно после задачи, взяв ее id из param (делалось для одноразовых задач, повторяемые могут не работать);<br />
*'''show_last_plot''' - Открыть последнюю сгенерированную сюжетную задачу.<br />
*'''guess''' - Ответить на текущую угадайку, взяв ответ из параметра (param). Taskorganizer также хранит правильный ответ на текущую угадайку в параметре ''guess_answer'', его можно использовать, если нужно оставить игроку меньше вариантов для угадывания.<br />
*'''add_hint_last''' - Добавить подсказку последней добавленной задаче.<br />
*'''add_hint_top''' - Добавить подсказку верхней задаче в таблице.<br />
*'''guess_who_reward''' - начислить награду за последнюю угадайку.<br />
*'''roulette_complete''' -состояние, вызываемое при выполнении текущей задачи "рулетка".<br />
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.<br />
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.<br />
*'''skip_id_no_effect''' - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.<br />
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.<br />
*'''add_hint_hidden_all''' - Вызов подсказки для всех активных скрытых задач (по списку в таскорганайзере).<br />
*'''calc_active_preset''' - Посчитать количество активных задач по конкретному "preset" (перед вызовом в поле "param" указать номер интересующей категории preset). После вызова, таскорганайзер заполнит параметр "preset_tasks".<br />
<br />
Состояния для работы с тасками-угадайками по типу викторины ( в taskorganizer_setup - тип = "угадайка"):<br />
*'''answer''' - ответить на открытую угадайку ( в поле '''param''' должно находиться число, номер нажатой кнопки от 0 до 3 ). Вешаем на кнопки варианты-ответа ( пишем param = 0 - 3 , после передаёт _answer_); <br />
*'''generate_guess''' - сгенерировать угадайку-викторину ( выберет доступные задачи из диапазона указанном в очередях ( 1 и 2) поле _угадаечные задачи_ taskorganizer). При открытии угадайки, в поле _cur_guess_answer_ объекта Taskorganizer записывается номер кнопки где лежит правильный ответ ( от 0 до 3 );<br />
<br />
ПРИМЕЧАНИЕ: при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.<br />
<br />
При кажом refresh таскорганайзер заполняет у себя поля:<br />
*'''tasks_in_table''' - задач в таблице<br />
*'''tasks_total''' - задач в таблице + скрытых задач<br />
<br />
<br />
<pre><br />
Состояния из кода:<br />
0 "idle", // Состояние по умолчанию<br />
1 "refresh", // Обновить таблицу с иконками задач<br />
2 "refresh_templates", // Обновить "ленту" задач<br />
3 "generate", // Сгенерировать новую задачу (выбрать одну из доступных по условиям) И обновить таблицу с иконками задач<br />
4 "show", // Показать окно задачи в зависимости от выделенной ячейки в таблице<br />
5 "check", // Проверить задачи на выполнение. После этого автоматически вызовется рефреш<br />
6 "log_check", // Проверить, не стали ли доступны новые записи в логе<br />
7 "log_show", // Заполнить таблицу логбука записями с текущим фильтром<br />
8 "task_next", // Следующий таск в таблице<br />
9 "task_prev", // Предыдущий таск в таблице<br />
10 "add_hint", // Добавить подсказку<br />
11 "task_reward", // Вручить награду за задание - нужно, чтобы разделить выполнение задания и окно получения уровня<br />
12 "show_id", // Показать окно задачи, взяв ее id из параметра<br />
13 "guess", // Ответить на текущую угадайку, взяв ответ из параметра<br />
14 "add_hint_last", // Добавить подсказку последней добавленной задаче<br />
15 "add_hint_top", // Добавить подсказку верхней задаче в таблице<br />
16 "guess_who_reward", // начислить награду за последнюю угадайку<br />
17 "roulette_complete", // состояние, вызываемое при выполнении текущей задачи "рулетка"<br />
18 "cheat_complete", // читерское завершение задачи<br />
19 "generate_plot", // сгенерировать новых "сюжетных задач"<br />
20 "eraser_start", // принудительно стартовать стирачку <br />
21 "eraser_complete", // вручить награду за нее<br />
22 "cancel", // отменить задание из param<br />
23 "guess_year", // попытаться угадать год (param)<br />
24 "guess_year_reward", // Дать награду за угадывание года<br />
25 "show_last_plot", // Открыть последнюю сгенерированную сюжетную задачу<br />
26 "skip", // Пропустить задачу для которой открыто окно за кристаллы<br />
27 "add_hint_id", // Добавить хинт задаче по id, если она активна<br />
28 "add_hint_hidden", // Добавить хинт первой скрытой задаче<br />
29 "add_hint_hidden_all", // Добавить хинт всем скрытым задачам<br />
30 "time_to_activate", // Пришло событие об активации задачи<br />
31 "time_to_timeout", // Пришло событие о таймауте задачи<br />
32 "check_multiple", // Проверить выполнение задач не выходя из проверки после первой найденной<br />
33 "answer", // Ответить на новую (январь 2015) угадайку. Номер кнопки в param<br />
34 "generate_guess", // Сгенерировать новую угадайку<br />
35 "show_random", // Показать окно случайной активной задачи<br />
36 "show_eraser", // Показать окно стирачки<br />
37 "calc_active_preset", // Посчитать активные задачи по заданному пресету<br />
38 "show_case", // Найти активный кейс и заполнить его поля<br />
39 "scroll_to_task", // Промотать на таск из param таблицу<br />
40 "reactivate", // Повторно активировать таск из param<br />
41 "generate_loc", // Сгенерировать генерируемых (извиняюсь) тасков, количество в param<br />
42 "copy", // Скопировать общие данные в другой таскорганайзер<br />
43 "cross_promo", // Открыть урл связанный с crosspromo задачей<br />
44 "show_complete_id", // Показать окно после задачи независимо от ее состояния, взяв ее id из параметра<br />
45 "skip_id_no_effect", // Изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
46 "clear_shown_templates" // Убрать выполненные таски для которых показан эффект из таблицы шаблонов<br />
</pre><br />
<br />
=Запись в опции=<br />
<br />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<br />
* '''7''' - таск выполнен, награда получена, таск остался в таблице;<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
<br />
=Вычитаемые параметры:=<br />
Каждая таскорганайзер пишет в пользователя следующие параметры:<br />
*'''public.TaskOrganizerCompletedTasks''' - количество выполненных одноразовых задач;<br />
*'''public.TaskOrganizerCompletedTasksAll''' - количество выполненных задач с учётом повторяемых;<br />
<br />
=Механизм многоуровневых достижений=<br />
С помощью таскорганайзера можно организовать систему многоуровневых достижений. Для этого используется [[Etasktemplate|темплейт задачи]]. Данные темплейты складываются в таблицу темплейтов таскорганайзера. При этом в самом таскорганайзере должна быть указанна таблица для иконок задач, хоть она и не используется (желательно вынести за границы экрана).<br />
<br />
Каждый уровень достижения представляет собой отдельный таск с подзадачей на опции. В поле опций этой подзадачи указываем параметр, который отображает прогресс по достижению. Чтобы создать несколько уровней достижения, нужно несколько задач одного типа (с возрастающими требованиями).<br />
<br />
Часть контента для достижения задается чрез текстовый объект - id таска. В текстовом объекте указываем название (word), описание невыполненной (sentence1) и выполненной (sentence2) ачивки. А также ресурс иконки ачивки (ico1), ресурс звезд для невыполненной (ico2) и выполененной (ico3) задачи.<br />
Награду за достижения ачивки указываем как награду за выполнение таска. Также с помощью обработчика завершения задачи можем запустить анимацию получения ачивки.<br />
<br />
Для заполнения таблицы темплейтов нужно вызвать состояние '''refresh_templates''', при вызове '''check''' задача, условия которой были выполнены изменит свое состояние, при этом будут переключены ресурсы звезд, описание ачивки и спрятана кнопка темплейта '''btn'''. <br />
<br />
Для контроля того, какая задача будет вызвана при вызове '''check''' можно использовать следующий способ. К задаче добавляем еще одну подзадачу на опции. Когда прогресс по первой подзадаче на опции будет >= требуемого значения для задачи будет отображаться кнопка темплейта '''btn'''. При нажатии на эту кнопку, которая должна вызывать '''take''' темплейту задачи, в него пишется параметр clicked_task_id, по этому параметру определяем у какой задачи нужно выполнить вторую подзадачу на опции и вызываем '''check''' таскорганайзеру.<br />
<br />
Пример<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
Complex_achievements.zip<br />
<br />
=Пример проекта=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer<br />
<br />
=Равномерная экономика (Preset)=<br />
[[Файл:1499422858929.jpg|300px|thumb|right]]<br />
Работает, при включении в объекте Economic равномерной экономики (задание не нулевых значений).<br />
Настройка позволяет давать диапазонную награду конкретной группе задач("preset").<br />
Настройка награды для всех задач, у которых не указан параметр "preset" (т.е. =="-1"), осуществляется, группой параметров объекта Taskorganizer:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Настройки конкретного preset вынесены в отдельную вкладку "Taskorganizer_setup":<br />
[[Файл:Photo hidden 365 Scene Editor build Wed Jul 5 151607 2017 -(single-user) DProjectsEDITOR Game Hidden 365Photo hidden 365Photo hidden 365.seproj.jpg|600px|right]]<br />
[[Category:Economics]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9502Taskorganizer2018-04-25T07:13:09Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Taskorganizer - Менеджер задач и квестов<br />
<br />
=Свойства=<br />
[[Файл:Task.jpg|250px|thumb|right]]<br />
[[Файл:Task_1.jpg|250px|thumb|right]]<br />
=== Общие параметры ===<br />
*'''economics''' - Объект типа экономикс.<br />
*'''предметы''' - Объект типа eitems.<br />
*'''таблица''' - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).<br />
*'''добавлять иконки''' - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).<br />
*'''шаблон предмета''' - Объект типа etaskitem будет использоваться при показе превью задания.<br />
*'''фильтрация''' - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.<br />
*'''таблица логов''' - Таблица куда будут помещены записи логбука.<br />
*'''новая запись''' - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.<br />
*'''новое задание''' - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.<br />
*'''прочитанное задание''' - Графический ресурс, который будет отмечать прочитанные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе).<br />
*'''выполненное задание''' - Графический ресурс, который будет отмечать выполненные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе)<br />
*'''уведомление''' - Текстовый айди заголовка связанных с задачами уведомлений (Должно быть заполнено поле sense 4 - т.к. рандомно его будет постить).<br />
*'''вероятность уведомления''' - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.<br />
*'''выполнять непрочитанные''' - 1 - выполнять непрочитанные таски, 0 - нет.<br />
*'''хронологический порядок''' - 1 - записывать задачи в хронологическом порядке, 0 - нет.<br />
*'''картинки в логбук''' - Расположение картинки до или после текста.<br />
*'''сдвиг уровней''' - число на которое сдвинутся требования к уровню игрока в taskorganizer_setup для каждой задачи;<br />
*'''refresh при показе окна''' - 0 - нет, 1 - да. Ставим = 0 ( "нет" ), если хотим чтобы при тапе по таблице отложить сортировку и обновление статуса таска ( в определённый момент ( к примеру, когда открылось окно таска), передаём состояние '''refresh''' и таблица обновится).<br />
*'''использовать накопление ошибки''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы нахождение предметов в хиддене, по таску не превышало n-раз ( к примеру p= 0.5 (1/0.5=2 , т.е. предмет должны найти не более чем за две игры в хидн), если количество сыгранных игр >= максимальному по вероятности, то предмет попадает в таблицу ( мы его нашли)). Если стоит - 0 ( "нет" ), то вне зависимости от количества заходов, будет браться вероятность.<br />
*'''etasktemplate''' - объект типа [[Etasktemplate|etasktemplate]]<br />
*'''только одна подкрутка за раз''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы за один проход хиддена выполнялся один таск.<br />
*'''таблица для шаблонов''' - таблица, в которую сложим шаблоны из предыдущего поля<br />
*'''помещать генерируемые в шаблоны''' - помещать в шаблоны генерируемые таски<br />
*'''уменьшать предметы при сдаче коллекции''' - 0 - нет, 1 - да. Ставим = 1 ( "да" ), то при сдаче коллекции будет выполнен декремент количества предметов необходимых чтобы задание выполнилось ( параметр таски s0 в опциях).<br />
<br />
<br />
<pre><br />
Для огранизации логбука необходимо текст поместить в sentenсe 1. Картинка, что будет отображаться с этим текстом, должна быть icon 2. Также есть возможность использовать эту картинку в качестве фона. Тогда текст, который будет отображаться поверх этой картинки, нужно разместить в sentenсe 2.<br />
</pre><br />
<br />
=== Группа угадайка ===<br />
<br />
Угадайка - задание, в котором игроку предлагается вспомнить или угадать, кто из персонажей просил тот или иной коллекционный предмет. Владелец предмета указывается в настройке подзадачи.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать угадайку.<br />
*'''с уровня''' - Угадайка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''иконка''' - Объект, в который сложим иконку предмета.<br />
*'''иконка для таблицы''' - Иконка соответствующая угадайке в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
=== Группа рулетка ===<br />
<br />
На самом деле название "рулетка" весьма условное. В этом разделе можно поместить любое периодически повторяющееся задание.<br />
<br />
*'''показывать через''' - Через какое количество обычных задач показывать рулетку.<br />
*'''с уровня''' - Рулетка будет генерироваться только начиная с данного уровня.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show.<br />
*'''иконка для таблицы''' - Иконка соответствующая рулетке в таблице задач.<br />
=== Группа генерируемые ===<br />
<br />
В этой группе находятся периодически генерируемые задания на прохождение локаций.<br />
<br />
*'''активных задач''' - Эти задачи будут генерироваться, когда активных задач столько или меньше.<br />
*'''с уровня''' - Эти задачи будут генерироваться только начиная с данного уровня.<br />
*'''максимально''' - Будет сгенерированно случайное количество задач от 1 до n.<br />
*'''машина''' - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.<br />
*'''название''' - Текстовый объект, в который будет сложено название локации.<br />
*'''превью''' - Объект, в который сложим превью локации для генерируемой задачи.<br />
*'''иконка для таблицы''' - Иконка соответствующая генерируемому таску в таблице задач.<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''награда ресурс 1''' - Счетчик, которому будет присвоено количество призового ресурса 1.<br />
*'''награда ресурс 2''' - Счетчик, которому будет присвоено количество призового ресурса 2.<br />
*'''награда опыт''' - Счетчик, которому будет присвоено количество призового опыта.<br />
*'''текст для etasktemplate''' - будет в поле name etasktemplate. Это название задачи на прохождение локации, которая генерируется автоматически и использует шаблон etasktemplate. Текст используется из Текстовой Базы Ресурсов. Например, "Исследовать локацию".<br />
*'''номер кнопки для etasktemplate''' - номер кнопки для etasktemplate. [[Button|Кнопка]], которая используется для данной задачи. Например, "Исследовать". <br />
<br />
<pre><br />
Если перед генерацией случайного таска на исследование локации указать параметру gen_loc значение от 0 до n, то ближайшая генерируемая задача будет для конкретной локации под указанным номером. После генерации параметр gen_loc становится -1.<br />
</pre><br />
<br />
<pre><br />
Если перед генерацией случайного таска от персонажа указать параметру gen_face значение от 0 до n, то ближайшая генерируемая задача будет от персонажа под указанным номером. После генерации параметр gen_face становится -1.<br />
Если указать gen_face="-2", то таскорганайзер попытается с генерировать задачу с персонажем так, чтобы номер локации совпадал с персонажем, при условии что номер локации будет меньше максимальному числу персонажей ( char_num).<br />
</pre><br />
<br />
=== Группа угадаечные задачи ===<br />
<br />
В этой группе указываем диапазоны для генерации тасков-викторин и способ генерации.<br />
<br />
*'''стандартная генерация''':<br />
::'''нет''' - особая генерация задач, при которой с начало генерируем задачи из _очереди 1_, потом задачи из _очереди 2_ ( Если в первой очереди мы не можем сгенерировать задачу, пытаемся сгенерировать из второй очереди). Если мы не сгенерировали задачу из обоих очередей, то мы обнуляем все таски из обоих очередей ( и сразу генерим из _очереди 1_ задачу);<br />
::'''да''' - стандартная генерация одной угадайки ( начинаем сверху вниз генерить;<br />
*'''очередь 1''' - Основная очередь, пытаемся из неё сгенерировать задачу, при получении Taskorganizer сост. _generate_guess_, если в предыдущем поле стоит '''нет'''. Каждая задача из этой очереди имеет условия для появления ( прохождение сюжетного таска к примеру);<br />
*'''очередь 2''' - Очередь затычка, задачи из этой очереди без условий. Предназначена когда в первой очереди нету доступных тасков для генерации;<br />
<br />
<pre><br />
У таскорганайзера есть поле disabled, если при каждом запуске приложения после конца туториала писать туда 1 - это приведет к удалению старого сейва и несозданию нового. Несколько килобайт выгоды в опциях + использовать только для туториального таскорганайзера, когда он отработает.<br />
</pre><br />
<br />
=Taskorganizer setup=<br />
[[Файл:Task_2.jpg|600px|thumb|right]]<br />
<br />
*'''id''' - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди. Перетаскивается из текстовой базы.<br />
'''Для каждого задания(записи в logbook) должен быть свой уникальный id.'''<br />
*'''хинт''' - Список строк-подсказок для задачи. Перетаскиваются из текстовой базы. Таким образом, добавив несколько записей из базы, увидим выпадающий список.<br />
*'''название (объект)''' - Текстовый объект, в который мы сложим название задания. Описание подтягивается из текстовой базы из первого столбика (word) текстового id задания.<br />
*'''машина''' - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.<br />
*'''портрет''' - Объект, которому при активации задания будет устанорвлен графический ресурс рожи.<br />
*'''таблица''' - Таблица куда будут помещены темплейты предметов данного задания.<br />
*'''описание (объект)''' - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.<br />
*'''награда (ресурс 1)''' - Счетчик отображающий награду в ресурсе 1 за выполнение задания.<br />
*'''награда (ресурс 2)''' - Счетчик отображающий награду в ресурсе 2 за выполнение задания.<br />
*'''награда (опыт)''' - Счетчик отображающий награду в опыте за выполнение задания.<br />
*'''таблица хинта''' - Таблица, в которую будем складывать хинты.<br />
*'''умножать цену пропуска''' - нужно в случае, если мы хотим давать юзеру возможность моментально выполнить задачу за цену, которая зависит от количества нехватающих коллекционных предметов (цена пропуска*количество отсутствующих предметов).<br />
*'''видимые кнопки''' - номера видимых кнопок в [[Etasktemplate#Дополнительные кнопки|Etasktemplate]] через запятую. Отображает кнопки, используемые для данной задачи.<br />
<br />
<br />
'''Необходимое для логбука'''<br />
<br />
*'''для журнала''' - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.<br />
*'''категория''' - Категория к которой относится задача/запись. Пока используется только задачами для логбука.<br />
<br />
'''Критерии появления'''<br />
<br />
*'''уровень''' - Минимальный уровень, при котором может появиться задание.<br />
*'''аномалия''' - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.<br />
*'''локация''' - Локация для которой будем проверять мастерство. -1 - не учитывать условие.<br />
*'''мастерство''' - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.<br />
*'''завершены до''' - Задания, которые должны быть завершены до появления этого.<br />
*'''получены до''' - Задания, которые должны быть получены до появления этого.<br />
*'''не завершены до''' - Задания, которые должны быть НЕ завершены до появления этого.<br />
*'''объект до''' - Объект, который должен находиться в состоянии_до для появления задания.<br />
*'''состояние до''' - Состояние объекта_до, в котором вызывается генерация задания.<br />
*'''коллекционные''' - Коллекционные предметы, которые должны быть найдены для появления задания.<br />
*'''вероятность нужного''' - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью. 0 - использовать дефолтную.<br />
<br />
'''Критерии завершения'''<br />
<br />
*'''с аномалией''' - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию. <br />
*'''задачи''' - Задания, выполнение которых требуется для выполнения данной.<br />
*'''предметы''' - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).<br />
*'''объект''' - Объект, который должен находиться в определенном состоянии,для завершения задания.<br />
*'''состояние''' - Состояние объекта, в котором вызывается проверка задания.<br />
<br />
'''Награда'''<br />
<br />
*'''ресурс 1''' - Деньги даваемые за выполнение задания.<br />
*'''ресурс 2''' - Кристаллы даваемые за выполнение задания.<br />
*'''опыт''' - Опыт даваемый за выполнение задания.<br />
*'''перевести объект''' - При выполнении задания этот объект будет переведен в новое состояние.<br />
*'''в состояние''' - Состояние для объекта из предыдущего поля.<br />
<br />
==Подзадача предмет==<br />
В опции суммарно будет записываться значение два параметра:<br />
<br />
:'''iN''' - "item need" - необходимое количество предметов, по всем "подзадачам предмет";<br />
:'''iH''' - "item have" - имеющееся количество предметов, по всем "подзадачам предмет";<br />
:'''i0..i666''' - требующийся предмет, пишется для задач из коллекций;<br />
<br />
*'''сгенерировать предмет''' - определить необходимый предмет из коллекции; <br />
::'''нет''' - просто требовать предмет;<br />
::'''да''' - сгенерировать предмет из доступных локаций (календарь);<br />
::'''сегодня''' - с генерировать предмет из коллекции, для локации текущего дня (календарь);<br />
::'''неделя''' - с генерировать предмет из коллекции, для локаций текущей недели (календарь);<br />
*'''из коллекции''' - указать txtID коллекции из которой будут браться id предметов;<br />
<br />
==Подзадача экспертиза==<br />
<br />
*'''предмет''' - в поле предмет записываем id объекта, который нужен для проведения экспертизы. Предмет берем из текстовой базы ресурсов. Иконка предмета до начала и во время проведения экспертизы в icon1, иконка предмета после проведения экспертизы в icon2.<br />
*'''время''' - изначальная длительность экспертизы в секундах.<br />
*'''стоимость''' - стоимость экспертизы, используется res3.<br />
*'''стоимость ускорения''' - стоимость ускорения экспертизы, используется res2.<br />
*'''описание''' - описание подзадачи<br />
*'''владелец''' - здесь используем число для указания типа экспертизы. Например, 1 - это экспертизы одного типа, 2 - это второй тип экспертиз<br />
*'''уведомление''' - текстовый id для уведомления. Генерируется при старте. Имя уведомления записать в поле word, текст уведомления в sentence1, картинку уведомления в sentence2.<br />
<br />
<pre><br />
Картинку для уведомления положить в конфиги, рядом с файлом platform.icf для каждой платформы.<br />
К примеру, путь может выглядеть так: C:\Editor\Projects\Crime_City\conf\base\project\platforms\google<br />
</pre><br />
<br />
[[Файл:Taskorganizer_eanalysis.png|600px|thumb|right]]<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
=Состояния=<br />
<br />
*'''show''' - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе '''задание'''.<br />
*'''check''' - При вызове проверяется выполнение текущих заданий(заданий добавленных в таблицу). Для того чтобы таскорганайзер добавил таски в таблицу после загрузки приложения ему нужно передать refresh.<br />
*'''generate''' - При вызове подбирается подходящее задание в зависимости от прогресса игрока.<br />
*'''generate_plot''' - При вызове генерится задача с персонажем ( поле генерируемые с персонажами), если перед этим передать в поле gen_face номер персонажа, то сгенерируем с указанным персонажем, после параметр обнулится ( значение -1 ). Перед вызовом данного состояния, '''обязательнo''' в поле _param_ вбить "1".<br />
*'''log_check''' - При вызове состояния проверяется доступны ли новые записи в логбук.<br />
*'''log_show''' - Заполняет таблицу логбука записями с текущим фильтром.<br />
*'''refresh''' - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.<br />
*'''cancel''' - Удаляет задание без награды, которое указано как ID в параметре param таскорганайзера, т.е. объекту Taskorganizer в param указываем ID таска (например 1933 - берется из options.xml или текстовой базы), а потом вызываем состояние cancel.<br />
*'''add_hint''' - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.<br />
*'''task_prev''' - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.<br />
*'''task_next''' - Показывает следующее по списку таблицы задание.<br />
<pre><br />
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.<br />
</pre><br />
*'''show_id''' - Показать окно задачи, взяв ее id из параметра.<br />
*'''show_complete_id''' - показать окно после задачи, взяв ее id из param (делалось для одноразовых задач, повторяемые могут не работать);<br />
*'''show_last_plot''' - Открыть последнюю сгенерированную сюжетную задачу.<br />
*'''guess''' - Ответить на текущую угадайку, взяв ответ из параметра (param). Taskorganizer также хранит правильный ответ на текущую угадайку в параметре ''guess_answer'', его можно использовать, если нужно оставить игроку меньше вариантов для угадывания.<br />
*'''add_hint_last''' - Добавить подсказку последней добавленной задаче.<br />
*'''add_hint_top''' - Добавить подсказку верхней задаче в таблице.<br />
*'''guess_who_reward''' - начислить награду за последнюю угадайку.<br />
*'''roulette_complete''' -состояние, вызываемое при выполнении текущей задачи "рулетка".<br />
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.<br />
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.<br />
*'''skip_id_no_effect''' - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.<br />
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.<br />
*'''add_hint_hidden_all''' - Вызов подсказки для всех активных скрытых задач (по списку в таскорганайзере).<br />
*'''calc_active_preset''' - Посчитать количество активных задач по конкретному "preset" (перед вызовом в поле "param" указать номер интересующей категории preset). После вызова, таскорганайзер заполнит параметр "preset_tasks".<br />
<br />
Состояния для работы с тасками-угадайками по типу викторины ( в taskorganizer_setup - тип = "угадайка"):<br />
*'''answer''' - ответить на открытую угадайку ( в поле '''param''' должно находиться число, номер нажатой кнопки от 0 до 3 ). Вешаем на кнопки варианты-ответа ( пишем param = 0 - 3 , после передаёт _answer_); <br />
*'''generate_guess''' - сгенерировать угадайку-викторину ( выберет доступные задачи из диапазона указанном в очередях ( 1 и 2) поле _угадаечные задачи_ taskorganizer). При открытии угадайки, в поле _cur_guess_answer_ объекта Taskorganizer записывается номер кнопки где лежит правильный ответ ( от 0 до 3 );<br />
<br />
ПРИМЕЧАНИЕ: при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.<br />
<br />
При кажом refresh таскорганайзер заполняет у себя поля:<br />
*'''tasks_in_table''' - задач в таблице<br />
*'''tasks_total''' - задач в таблице + скрытых задач<br />
<br />
<br />
Состояния из кода:<br />
0 "idle", // Состояние по умолчанию<br />
1 "refresh", // Обновить таблицу с иконками задач<br />
2 "refresh_templates", // Обновить "ленту" задач<br />
3 "generate", // Сгенерировать новую задачу (выбрать одну из доступных по условиям) И обновить таблицу с иконками задач<br />
4 "show", // Показать окно задачи в зависимости от выделенной ячейки в таблице<br />
5 "check", // Проверить задачи на выполнение. После этого автоматически вызовется рефреш<br />
6 "log_check", // Проверить, не стали ли доступны новые записи в логе<br />
7 "log_show", // Заполнить таблицу логбука записями с текущим фильтром<br />
8 "task_next", // Следующий таск в таблице<br />
9 "task_prev", // Предыдущий таск в таблице<br />
10 "add_hint", // Добавить подсказку<br />
11 "task_reward", // Вручить награду за задание - нужно, чтобы разделить выполнение задания и окно получения уровня<br />
12 "show_id", // Показать окно задачи, взяв ее id из параметра<br />
13 "guess", // Ответить на текущую угадайку, взяв ответ из параметра<br />
14 "add_hint_last", // Добавить подсказку последней добавленной задаче<br />
15 "add_hint_top", // Добавить подсказку верхней задаче в таблице<br />
16 "guess_who_reward", // начислить награду за последнюю угадайку<br />
17 "roulette_complete", // состояние, вызываемое при выполнении текущей задачи "рулетка"<br />
18 "cheat_complete", // читерское завершение задачи<br />
19 "generate_plot", // сгенерировать новых "сюжетных задач"<br />
20 "eraser_start", // принудительно стартовать стирачку <br />
21 "eraser_complete", // вручить награду за нее<br />
22 "cancel", // отменить задание из param<br />
23 "guess_year", // попытаться угадать год (param)<br />
24 "guess_year_reward", // Дать награду за угадывание года<br />
25 "show_last_plot", // Открыть последнюю сгенерированную сюжетную задачу<br />
26 "skip", // Пропустить задачу для которой открыто окно за кристаллы<br />
27 "add_hint_id", // Добавить хинт задаче по id, если она активна<br />
28 "add_hint_hidden", // Добавить хинт первой скрытой задаче<br />
29 "add_hint_hidden_all", // Добавить хинт всем скрытым задачам<br />
30 "time_to_activate", // Пришло событие об активации задачи<br />
31 "time_to_timeout", // Пришло событие о таймауте задачи<br />
32 "check_multiple", // Проверить выполнение задач не выходя из проверки после первой найденной<br />
33 "answer", // Ответить на новую (январь 2015) угадайку. Номер кнопки в param<br />
34 "generate_guess", // Сгенерировать новую угадайку<br />
35 "show_random", // Показать окно случайной активной задачи<br />
36 "show_eraser", // Показать окно стирачки<br />
37 "calc_active_preset", // Посчитать активные задачи по заданному пресету<br />
38 "show_case", // Найти активный кейс и заполнить его поля<br />
39 "scroll_to_task", // Промотать на таск из param таблицу<br />
40 "reactivate", // Повторно активировать таск из param<br />
41 "generate_loc", // Сгенерировать генерируемых (извиняюсь) тасков, количество в param<br />
42 "copy", // Скопировать общие данные в другой таскорганайзер<br />
43 "cross_promo", // Открыть урл связанный с crosspromo задачей<br />
44 "show_complete_id", // Показать окно после задачи независимо от ее состояния, взяв ее id из параметра<br />
45 "skip_id_no_effect", // Изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.<br />
46 "clear_shown_templates" // Убрать выполненные таски для которых показан эффект из таблицы шаблонов<br />
<br />
=Запись в опции=<br />
<br />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<br />
* '''7''' - таск выполнен, награда получена, таск остался в таблице;<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
<br />
=Вычитаемые параметры:=<br />
Каждая таскорганайзер пишет в пользователя следующие параметры:<br />
*'''public.TaskOrganizerCompletedTasks''' - количество выполненных одноразовых задач;<br />
*'''public.TaskOrganizerCompletedTasksAll''' - количество выполненных задач с учётом повторяемых;<br />
<br />
=Механизм многоуровневых достижений=<br />
С помощью таскорганайзера можно организовать систему многоуровневых достижений. Для этого используется [[Etasktemplate|темплейт задачи]]. Данные темплейты складываются в таблицу темплейтов таскорганайзера. При этом в самом таскорганайзере должна быть указанна таблица для иконок задач, хоть она и не используется (желательно вынести за границы экрана).<br />
<br />
Каждый уровень достижения представляет собой отдельный таск с подзадачей на опции. В поле опций этой подзадачи указываем параметр, который отображает прогресс по достижению. Чтобы создать несколько уровней достижения, нужно несколько задач одного типа (с возрастающими требованиями).<br />
<br />
Часть контента для достижения задается чрез текстовый объект - id таска. В текстовом объекте указываем название (word), описание невыполненной (sentence1) и выполненной (sentence2) ачивки. А также ресурс иконки ачивки (ico1), ресурс звезд для невыполненной (ico2) и выполененной (ico3) задачи.<br />
Награду за достижения ачивки указываем как награду за выполнение таска. Также с помощью обработчика завершения задачи можем запустить анимацию получения ачивки.<br />
<br />
Для заполнения таблицы темплейтов нужно вызвать состояние '''refresh_templates''', при вызове '''check''' задача, условия которой были выполнены изменит свое состояние, при этом будут переключены ресурсы звезд, описание ачивки и спрятана кнопка темплейта '''btn'''. <br />
<br />
Для контроля того, какая задача будет вызвана при вызове '''check''' можно использовать следующий способ. К задаче добавляем еще одну подзадачу на опции. Когда прогресс по первой подзадаче на опции будет >= требуемого значения для задачи будет отображаться кнопка темплейта '''btn'''. При нажатии на эту кнопку, которая должна вызывать '''take''' темплейту задачи, в него пишется параметр clicked_task_id, по этому параметру определяем у какой задачи нужно выполнить вторую подзадачу на опции и вызываем '''check''' таскорганайзеру.<br />
<br />
Пример<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample<br />
<br />
Complex_achievements.zip<br />
<br />
=Пример проекта=<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer<br />
<br />
=Равномерная экономика (Preset)=<br />
[[Файл:1499422858929.jpg|300px|thumb|right]]<br />
Работает, при включении в объекте Economic равномерной экономики (задание не нулевых значений).<br />
Настройка позволяет давать диапазонную награду конкретной группе задач("preset").<br />
Настройка награды для всех задач, у которых не указан параметр "preset" (т.е. =="-1"), осуществляется, группой параметров объекта Taskorganizer:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Настройки конкретного preset вынесены в отдельную вкладку "Taskorganizer_setup":<br />
[[Файл:Photo hidden 365 Scene Editor build Wed Jul 5 151607 2017 -(single-user) DProjectsEDITOR Game Hidden 365Photo hidden 365Photo hidden 365.seproj.jpg|600px|right]]<br />
[[Category:Economics]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Flyer&diff=9500Flyer2018-04-16T07:00:13Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Файл:flyer_fountain_property.JPG|right]]<br />
<br />
'''Flyers '''(флаеры, партиклы)- летающие картинки, при помощи этого [[Object|объекта]] можно реализовывать различные эффекты: взрывы, падающие снежинки, дождь, фонтан, огонь, летающая пыль, дым, пар и т.п.<br />
<br />
== Общие параметры ==<br />
<br />
(см. описание [[Object|Object]])<br />
*'''имя''' - Имя объекта Flyer в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта Flyer, который можно увидеть при наведении курсора на строку "имя".<br />
*'''синхронизация''' - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' - Если 1, то при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана). По умолчанию значение этого параметра 0.<br />
*'''тип''' - Тип флаера. Определяет его функциональное назначение и его свойства. Для флаера возможны следующие типы: "картинки", "текст". Выбирается подходящий тип из выпадающего списка. По умолчанию указан тип "картинки".<br />
<br />
== Основные параметры ==<br />
<br />
'''Группа - внешний вид'''<br />
<br />
*'''картинка''' - Служит для рисоания флаера в случае выбора типа флаера "картинки" В поле этого параметра находится имя графического ресурса (частицы), перетаскиваемого мышкой из редактора ресурсов (поле должно быть в состоянии редактирования). <br />
*'''текст''' - Служит для рисования флаера в случае выбора типа флаера "текст". <br />
<br />
При выборе типа флаера "картинки" параметр "текст" игнорируется и наоборот. Вместе текст и картинка не существуют.<br />
<br />
<br />
'''Группа - шрифт'''<br />
<br />
Служит для настройки внешнего вида текста в случае выбора типа флаера "текст".<br />
*'''имя''' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта). <br />
*'''размер''' - Размер шрифта в пикселях. <br />
*'''цвет''' - Цвет шрифта.<br />
<br />
<br />
'''Группа - модификаторы'''<br />
<br />
*'''alpha''' ''(al)'' - Изменяет прозрачность используемого ресурса: от 0 (прозрачен) до 1 (не прозрачен).<br />
*'''blending''' ''(bl)'' - Alpha смешивание. Взаимодействие каждой новой частицы (source) с раннее отрисованными (dest). Значения данного параметра выбираются из выпадающего списка. Каждый отдельный цвет, который мы видим, создается с помощью комбинации трех цветов: красного (red), зеленого (green) и синего (blue). RGB - является их аббревиатурой . Разные значения модификатора "blending" отличаются способ вычисления значений RGB-каналов и значения прозрачности.<br />
<br />
''' blend ''' - смешивание.<br />
<br />
Rback = (Rsource * Ralpha) + (Rdest * (1 - Ralpha)) <br />
<br />
Gback = (Gsource * Galpha) + (Gdest * (1 - Galpha))<br />
<br />
Bback = (Bsource * Balpha) + (Bdest * (1 - Balpha)) <br />
<br />
Aback = (Asource * Aalpha) + (Adest * (1 - Aalpha))<br />
<br />
<br />
''' half ''' - деление пополам.<br />
<br />
Rback = (Rsource + Rdest) / 2 <br />
<br />
Gback = (Gsource + Gdest) / 2 <br />
<br />
Bback = (Bsource + Bdest) / 2 <br />
<br />
Aback = (Asource + Adest) / 2 <br />
<br />
<br />
''' add ''' - добавление.<br />
<br />
Rback = Rsource + Rdest <br />
<br />
Gback = Gsource + Gdest <br />
<br />
Bback = Bsource + Bdest <br />
<br />
Aback = Asource + Adest <br />
<br />
<br />
''' sub ''' - вычитание.<br />
<br />
Rback = Rsource - Rdest <br />
<br />
Gback = Gsource - Gdest <br />
<br />
Bback = Bsource - Bdest <br />
<br />
Aback = Asource - Adest <br />
<br />
<br />
''' none ''' - ничего не происходит.<br />
*'''angle''' ''(ang)'' - Изменяет угол наклона используемого ресурса. Отсчитывается по часовой стрелке. Против - отсчитываются отрицательные углы. <br />
*'''scaleX/scaleY''' ''(sx/sy)'' – Изменяют масштаб используемого ресурса, но при этом изменяет и положение точки рождения флаера, что делает использование данного модификатора крайне неудобным.<br />
<br />
Модификаторы становятся активными если установлен флаг «использовать модификаторы», в противном случае установленные параметры игнорируются.<br />
<br />
<br />
'''Группа - звуки'''<br />
<br />
*'''звук''' - Звук, который будет запущен при переходе партиклов в состояние beg. Перетаскивается правой кнопки мышки из редактора ресурсов (поле должно быть в состоянии редактирования).<br />
*'''зациклить''' - Если 1, то звук будет зациклен. По умолчанию значение этого параметра 0.<br />
<br />
== Состояния ==<br />
<br />
*'''beg''' – Состояние в котором флаер начинает свой цикл жизни (включается).<br />
*'''end''' – Состояние которое выключает флаер.<br />
*'''stop_birth''' - Состояние заканчивает рождение. В по сути - "горшочек не вари"<br />
*'''start_birth''' - Начать рождения частиц (по сути отмена состояния - "stop_birth");<br />
*'''pause''' - Заморозить частицы - частицы не меняют свои параметры, но при этом остаются видимыми;<br />
*'''run''' - Вернуть частицам рабочее состояние ( снятие состояния "pause");<br />
<br />
== Дополнительные параметры ==<br />
<br />
<br />
'''Область рождения'''<br />
<br />
*'''только контур''' ''(frame)'' - Если 1, то частицы будут рождаться только по контуру, описанному параметрами. Если 0, то по всей площади.<br />
*'''радиус r''' ''(r)'' - Радиус области вокруг (х,у), где рождаются летуны.<br />
*'''горизонтальная rx''' ''(rx)'' - Горизонтальная область рождения. Летуны будут рождаться внутри прямоугольника с шириной 2*rx.<br />
*'''вертикальная ry''' ''(ry)'' - Вертикальная область рождения. Летуны будут рождаться внутри прямоугольника с высотой 2*ry.<br />
<br />
Если все параметры области рождения равны нулю: r=rx=ry=0, то летуны будут рождаться из одной точки.<br />
Центр области рождения задается стандартными для всех объектов координатами x,y из раздела "положение". Круг имеет приоритет над прямоугольником (если r не равно 0, то, не зависимо от значений rx или ry, рождение будет происходить внутри круга):<br />
<center><br />
[[Файл:flyers_born.png]]<br />
</center><br />
<br />
<br />
<br />
'''Начальная скорость'''<br />
<br />
*'''минимальная''' - Минимальная скорость при рождении летуна в px/сек.<br />
*'''максимальная''' - Максимальная скорость при рождении летуна в px/сек.<br />
*'''от угла''' - Начальный угол сектора для направления скоростей.<br />
*'''до угла''' - Конечный угол сектора для направления скоростей.<br />
*'''угловая''' - Угловая скорость вращения одного летуна в градусах в секунду.<br />
<br />
При рождении каждый флаер имеет определенную скорость, величина (по модулю) которой выбирается случайным образом из диапазона от v1 до v2. Скорость измеряется в пикселях за секунду. Типичные значения, обычно, не превышают 100.<br />
<br />
По умолчанию вектор скорости направлен изотропно (равновероятно во всех направлениях). В разделе "начальная скорость" можно определить сегмент круга, внутри которого будет направлена начальная скорость флаера. Углы отсчитываются от оси x вниз (положительные углы) или вверх (отрицательные углы) и измеряется в градусах. Например, если a1=45, a2=135, то флаеры будут вылетать вниз веером в 90 градусов.<br />
<center><br />
[[Файл:flyers_vel.png]]<br />
</center><br />
<br />
Кроме линейной скорости можно задавать угловую скорость вращения - w, в градусах в секунду. Тогда при движении флаеры будут вращаться. Впрочем, увлекаться этим эффектом не стоит, так как это дополнительная нагрузка на ресурсы.<br />
<br />
<br />
<br />
'''Цикл жизни'''<br />
<br />
*'''на экране''' - Максимально количество летунов, которые видны на экране.<br />
*'''всего''' - Общее число созданных летунов (с учетом того, что они могут умирать и создаваться до числа "на экране").<br />
*'''каскадов''' - Число каскадных рождений (фейерверк).<br />
*'''время''' - Каждый флаер рождается, живет и умирает. Соответственно, можно задать три параметра (tmBorn, tmLife, tmDie) в ms.<br />
** ''' интенсивность ''' - Интенсивность рождения одного флаера в миллисекундах.<br />
** ''' ограничения ''' - Не более штук в миллисекунду (борьба с пульсациями).<br />
** ''' рождения ''' - За период рождения tmBorn прозрачность флаера увеличивается от нуля до заданной в общих настройках. <br />
** ''' время жизни ''' - Длительность жизни одного летуна. tmLife может быть отрицательным. В этом случае флаер живет, пока живет его группа (т.е. у него бесконечное время жизни). Если tmLife положительно, то после истечения времени tmLife флаер умирает в течении времени смерти tmDie. <br />
** ''' время смерти ''' - За это время он меняет свою прозрачность, от установленной в общих параметрах до указанной.<br />
*'''до прозрачности''' - Прозрачность в конце периода умирания. По умолчанию равна нулю.<br />
<br />
Когда флаер окончательно исчезает, вместо него в области рождения может появиться новый флаер. Это происходит, если число летающих к данному моменту флаеров не превышает параметра num (цикл жизни:на экране). Кроме этого, в процессе жизни группы флаеров подсчитывается общее число родившихся флаеров. Если их количество превышает параметр tot (цикл жизни:всего), то рождений больше не происходит. Если tot меньше 0, то подобное ограничение игнорируется.<br />
<br />
Если параметры num и tot допускают рождение новых флаеров, то происходит это с интенсивностью, определяемой временем в миллисекундах на рождение одного флайера nms. Например, если число видимых флаеров равно num=100, а nms=10, то все 100 флаеров покажутся на экране через 1000 ms (одну секунду). Если при этом поставить время жизни tmLife=0, tmDie=1000, то получится файербол. Вообще, чтобы не было пульсаций при порождении флаеров, для интенсивности необходимо пользоваться формулой "общее время на количество":<br />
<pre><br />
nms = (tmBorn+tmLife+tmDie)/ num<br />
</pre><br />
Пульсации могут, тем не менее, происходить, даже при выполнении этой формулы, если параметр nms оказывается существенно меньше времени одного фрейма (вызова таймера). Поэтому надо стремиться к тому, чтобы nms был больше реального периода таймера. Впрочем, при помощи праметра "ограничение" (max) можно задавать максимальное число флаеров, которые могут рождаться в ms (тогда при большом тике таймера больше, чем разрешено не родиться).<br />
<br />
<br />
<br />
'''Действующие силы'''<br />
<br />
На каждый флаер может действовать одна из следующих сил:<br />
*'''горизонтальная''' - Постоянная сила fx вдоль оси х, подобная силе ветра.<br />
*'''вертикальная ''' - Постоянная сила fy вдоль оси у. Если она положительна, то это оказывает эффект силы тяжести (ось y направлена вниз!)<br />
*'''радиальная''' - Постоянная радиальная сила fr. Она направлена к центру группы с координатами (x,y) и не зависит от расстояния до этого центра. Если fr положительна, то это сила отталкивания, если отрицательна - притяжения.<br />
*'''конфайнмента''' - Радиальная сила конфайнмента fc. Сила притяжения стаи к центру. Аналогична fr, но её величина линейно растёт с увеличением расстояния от центра.<br />
*'''к линии''' - Сила притяжения к вертикальной линии, проходящей через координаты центра рождения флаеров (из общих параметров).<br />
*'''случайная''' - Амплитуда стохастического (случайного) воздействия fs. При каждом перемещении к компонентам скорости добавляется случайная велична в диапазоне от -fs до fs. Например, снежинки неплохо моделируются с fy=fs=2<br />
*'''трения''' - Сила трения ff, уменьшающая скорость объектов. Измеряется в процентах уменьшения скорости за секунду: 0 - нет трения, 100 - за секунду остановится.<br />
В результате воздействия сил, и при неконтролируемом подвисании компьютера (таймер получает большой интервал времени), возможно резкое увеличение скорости флаеров. Для контроля этих эффектов служит раздел "ограничения" по скорости (vMax, px/сек) и величине смещения по экрану (dMax, px)<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''картинка для рисования флаера''' <br />
*'''картинка для рисования флаера''' - Графический ресурс одного летуна. Перетаскивается мышкой из редактора ресурсов (поле должно быть в состоянии редактирования).<br />
*'''количество картинок этого типа''' - Чем больше это число, тем чаще будет встречаться картинка этого типа.<br />
<br />
Актуален данный параметр, если в эффекте должны участвовать разные летуны. При рождении каждого флаера случайным образом будет выбираться одна из этих картинок.<br />
<br />
== Советы ==<br />
<br />
Для настройки флаеров необходимо контролировать множество параметров. Необходимо четко понимать смысл этих параметров и их возможное влияние на результат. Возможно, помогут следующие советы:<br />
* Сначала надо определиться с базовыми параметрами - область рождения, величина и угол начальных скоростей.<br />
* Затем определить направление и характер сил.<br />
* Не стоит менять за один раз больше 2-х параметров<br />
* На начальном этапе параметры необходимо менять решительно - в 2, в 10 раз и т.п.<br />
* Необходимо экспериментировать с комбинацией цветов и размером флаеров.<br />
* Запоминайте промежуточные, более или менее удачные, наборы параметров, чтобы к ним вернуться, если все "разрегулировалось".<br />
* Если получился прикольный, но не нужный эффект - стоит запомнить его параметры, потом пригодится.<br />
<br />
== Производительность ==<br />
<br />
Флаеры сильно грузят быстродействие машины. Поэтому необходим самоконтроль по необходимости их использования и контроль длительности кадра (с проверкой его на реальных устройствах). Ниже идет ряд советов:<br />
* Если можно нужный эффект реализовать кадрами анимации - часто, лучше анимация, чем флаеры.<br />
* Стремиться реализовать нужный эффект с минимумом флаеров<br />
* Искать баланс соотношения размера картинки и количества флаеров. Большие картинки (даже, если их и не много) - долго рисуются. Большое число маленьких картинок - также плохо, т.к. много ресурсов уходит на обсчет их физики.<br />
* Не увлекаться без нужды вращением частицы - это требует дополнительных вычислений матрицы поворота.<br />
* Сила конфайнмента (зависящая от расстояния) не содержит корня и чуть быстрее радиальной силы.<br />
* Помнить, что хороший эффект может, в силу производительности, совсем не так хорошо выглядеть на мобильном устройстве.<br />
<br />
== Примечания ==<br />
<br />
Флаеры не предполагают, что у них могут быть подобъекты.<br />
Если флаер подобъект машины состояний, то при её движении будет двигаться и центр эмиссии (область рождения флаеров), в результате чего возникает "шлейф"<br />
Флаеры не учитывают прозрачности родительского объекта или сцены, считая её единичной.<br />
<br />
Как уже говорилось, применение к объекту Flyer модификатора '''scale x/scale y''' нежелательно, так как это изменяет положение точки рождения флаера.<br />
Возможное решение этой проблемы будет состоять в следующем: флаер сделать подобъектом другого объекта, например, объекта Image, и применять модификаторы уже к нему.<br />
<br />
== Примеры ==<br />
<br />
===Фонтан===<br />
<br />
[[Файл:flyer_fountain_property.JPG|200px]][[Файл:Fontan2.JPG]]<br />
<br />
===Рыбки ===<br />
<br />
[[Файл:Flyer fish property.JPG|200px]][[Файл:Ribki2.JPG]]<br />
<br />
===Дождь ===<br />
<br />
[[Файл:Flyer_rain1_property.JPG|200px]][[Файл:Dojd2.JPG]]<br />
<br />
===Снег ===<br />
<br />
[[Файл:Sneg1.JPG|200px]][[Файл:Sneg2.JPG]]<br />
<br />
===Фейерверк ===<br />
<br />
[[Файл:Feyerverk1.JPG|200px]][[Файл:Feyerverk2.JPG]]<br />
<br />
===Звезды ===<br />
<br />
[[Файл:Zvezdi1.JPG|200px]][[Файл:Zvezdi2.JPG]]<br />
<br />
===Файербол ===<br />
<br />
[[Файл:Fireball1.JPG|200px]][[Файл:Fireball2.JPG]]<br />
<br />
===Взрыв ===<br />
<br />
[[Файл:Vzriv1.JPG|200px]][[Файл:Vzriv2.JPG]]<br />
<br />
===Дым ===<br />
<br />
[[Файл:Dim1.JPG|200px]][[Файл:Dim2.JPG]]<br />
<br />
===Свеча ===<br />
<br />
[[Файл:Svecha1.JPG|200px]][[Файл:Svecha2.JPG]]<br />
<br />
===Огонь ===<br />
<br />
[[Файл:Flyer fire 1 property.JPG|200px]][[Файл:Flyer_fire.JPG]]<br />
<br />
===Летящие листья ===<br />
<br />
[[Файл:Flyer leaf.JPG|200px]][[Файл:Flyer_leaf_2.JPG]]<br />
<br />
===Стекающие капли ===<br />
<br />
[[Файл:Flyer drop property.JPG|200px]][[Файл:Flyer_drop.JPG]]<br />
<br />
<br />
===Косой дождь ===<br />
<br />
Для изменения угла Flyer был сделан подобъектом объекта типа Image, к которому применялись модификаторы.<br />
<br />
[[Файл:Flyer_rain_2_property.JPG|200px]][[Файл:Flyer_rain_2.JPG]]<br />
<br />
===Парящие руны ===<br />
<br />
[[Файл:Flyer symbol propety.JPG|200px]][[Файл:Flyer_symbol.JPG]]<br />
<br />
===Летающий текст ===<br />
<br />
[[Файл:Flyer_text_propety.JPG|200px]][[Файл:Flyer_text.JPG]]<br />
<br />
Если текст разделить символом переноса строки "'''|'''", то летуны создадутся из указанных слов("слово1|слово2|слово3") или букв ("б|у|к|в|ы").<br />
<br />
===Использование модификатора ''"blending"'' ===<br />
<br />
В данном примере использовались первые три значения этого модификатора: blend, half, add. <br />
<br />
[[Файл:Flyer fire 3 property.JPG|200px]][[Файл:Flyer fire 3.JPG]]<br />
<br />
== Пример ==<br />
<br />
[http://fs5.absolutist.com/files/wikisample/flyer.rar Download]<br />
<br />
<br />
[[Category:Main objects]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9499Economics2018-04-10T10:06:37Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях (в случае с календарём - влияет параметр "подзадача предмет" -> "сгенерировать предмет" - если указано неделя - будет давать локацию в диапазоне текущей недели; день - локацию текущего дня).<br />
<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9489Economics2018-03-30T10:25:36Z<p>Sadovoy: /* Календарь и всё про него */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях (в случае с календарём - влияет параметр "подзадача предмет" -> "сгенерировать предмет" - если указано неделя - будет давать локацию в диапазоне текущей недели; день - локацию текущего дня).<br />
<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
*'''удалять паки не используемые (дней)''' ('''packDeleteDays''') - количество дней,спустя которое пак считается устаревшим, при превышении - пак удалится с устройства при вызове состояния '''clear_packs'''. По сути это разница между текущей датой и датой последнего использования пака. Дата последнего использования пака обновляется после игры в локацию (через сост. "play") или при успешной распаковке пака.<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9488Economics2018-03-30T10:20:34Z<p>Sadovoy: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
*'''disable''' - выключена ли экономика, если 1 - то экономика не реагирует на состояния и не сейвится в опции. Чтобы изменить параметр, меняем его и вызываем сост. "init"<br />
*'''Сдвиг уровней''' ( ''levels_shift'' ) - число на которое сдвинется анлок уровней в economics setup; после задания параметра нужно проинитить экономику;<br />
*'''Уровни''' - опыт, необходимый для перехода на следующий уровень. Последовательность чисел через запятую.<br />
*'''Уровни парабола''' - Три числа через запятую, задающие коэффициенты параболы, которые определяют необходимый опыт после уже перечисленных уровней.<br />
*'''Энергия''' - максимум энергии на каждом из уровней. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Энергия прибавка''' - Число определяющее прибавку к максимуму энергии после уже перечисленных уровней.<br />
*'''Ресурс 1''' - количество ресурса 1 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Ресурс 2''' - количество ресурса 2 добавляемое за уровень. Последовательность чисел через запятую. Последнее значение будет зациклено для всех последующих уровней.<br />
*'''Перезарядка''' - время за которое восстанавливается единица энергии в ms.<br />
*'''нач. ресурс 1''' - Начальное значение ресурса 1.<br />
*'''нач. ресурс 2''' - Начальное значение ресурса 2.<br />
*'''время напоминания''' - время напоминания о задачах на каждом из уровней. Записывается в виде последовательности чисел через запятую. Последнее значение будет зациклено для всех последующих уровней. Время изменяется в часах.<br />
*'''напоминание об энергии''' - уведомление перетаскивается с текстового редактора, представляет собой напоминание о том что энергия восстановилась. Например, "Ваше энергия полностью восстановлена".<br />
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32 битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние<br />
*'''перегрузить очки из опций''' - если поле не пустое - будут взяты очки из поля опций текущего пользователя, указаного в этой строке.<br />
*'''во временные отправлять''' - какие очки будут отправлены во временные лидерборды esocial'ом. При выборе '''кастомное заполнение''' будут отправлены очки из поля temporary_lb_score в опциях текущего пользователя (p0.temporary_lb_score например). Кастомные очки нужно добавлять вручную, по окончанию периода они будут обнулены автоматически.<br />
<br />
===Основные счетчики===<br />
Этот раздел содержит необходимые объекты для подсчета (counter, timer, progressbar).<br />
<br />
*'''Уровень''' - счетчик текущего уровня игрока.<br />
*'''Прогресс в уровне (счетчик)''' - Набранный на этом уровне опыт и остаток до следующего уровня (счетчик).<br />
*'''Прогресс в уровне (бар)''' - Набранный на этом уровне опыт и остаток до следующего уровня (прогрессбар).<br />
*'''Опыта до уровня''' - счетчик показывающий сколько опыта необходимо для перехода с текущего уровня на следующий.<br />
*'''Текущая энергия''' - прогрессбар текущей энергии.<br />
*'''Максимальная энергия''' - счетчик, который отображает значение максимальной энергии.<br />
*'''Таймер энергии''' - таймер отображающий время до восстановления единицы энергии.<br />
*'''Таймер всей энергии''' - таймер, который отображает время до восстановления всей энергии.<br />
*'''Ресурс 1''' - счетчик первого ресурса (денег).<br />
*'''Ресурс 2''' - счетчик второго ресурса (кристаллов).<br />
*'''анимация рес.1''' - Анимационный объект награды в ресурсе 1. Должен иметь состояние show.<br />
*'''анимация рес.2''' - Анимационный объект награды в ресурсе 2. Должен иметь состояние show.<br />
*'''анимация опыт''' - Анимационный объект награды в опыте. Должен иметь состояние show.<br />
<br />
===Окно перед локацией===<br />
Настройка окна, которое всплывает перед посещением локации. В этом окне отображается информация о локации которую мы хотим посетить.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояния ''open'' - открыта, ''open_lvl'' - не хватает лвл, ''open_buy'' - разница в уровнях позволяет нам купить анлок, ''open_item'' - не хватает предмета для анлока, ''open_unlock'' - состояние вызываемое окну перед локацией после успешной покупки предмета для анлока, ''open_energy'' - состояние вызываемое окну перед локацией в случае нехватки энергии.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации. В это поле можно поставить любую картинку для того, чтобы корректно разместить ее в "окне перед локацией". Далее экономикс сам будет подставлять нужные превью.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар уровня мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Необходимая энергия''' - счетчик необходимой энергии.<br />
*'''Аномальная энергия''' - счетчик, который отображает дополнительную энергию при наличии аномалии в локации.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных призовых денег, которые даются за игру в локацию с наличием аномалии.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, который отображает значение дополнительного опыта, который дается за игру в локацию с наличием аномалии.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
<br />
''для закрытой по уровню локации''<br />
*'''Режим игры''' - машина, которой будут устанавливаться состояния в зависимости от режима игры (может быть смешанный, текст или силуэт). TODO пока обладает только режимом text и icon. Эта машина будет передавать настройки таблице, в которую помещаются поисковые объекты, поэтому важно, чтобы к этой таблице был доступ (например она может находится на глобальном экране).<br />
<br />
*'''индикатор уровня''' - счетчик с необходимым для локации уровнем.<br />
<br />
''для локации c ценой''<br />
<br />
*'''цена ресурс 1''' - Стоимость анлока локации в ресурсе 1.<br />
*'''цена ресурс 2''' - Стоимость анлока локации в ресурсе 2.<br />
<br />
''для локации c требуемым предметом''<br />
<br />
*'''предмет''' - иконка необходимого для локации предмета.<br />
*'''название предмета''' - в этом поле указывается название, необходимого для локации предмета.<br />
*'''счетчик цены''' - счетчик, который отображает стоимость предмета.<br />
*'''иконка цены''' - иконка цены предмета, представляет собой картинку, которая перетаскивается из базы ресурсов.<br />
*'''кнопка купить''' - Будет видна, если предмет нужно купить. Передает экономиксу состояние unlock_item.<br />
*'''кнопка искать''' - Будет видна, если предмет поисковый.<br />
*'''блок аномалии''' - контейнер, представляющий собой машину, которая содержит всю информацию про аномалию. Должна содержать в себе состояния hide, show и remov (состояние после прогона аномалии, чтобы сделать красивые эффекты, после которого машина попадет в состояние hide).<br />
*'''иконка аномалии''' - иконка аномалии.<br />
*'''название аномалии''' - текстовый объект, который будет отображать название аномалии.<br />
*'''описание аномалии''' - текстовый объект, который будет отображать описание аномалии.<br />
*'''иконка предмета''' - иконка предмета, необходимого для того что бы прогнать аномалию.<br />
*'''кнопка прогнать предметом''' - кнопка по нажатию которой, можно прогнать аномалию используя предмет.<br />
*'''кнопка купить предмет''' - кнопка по нажатию которой, можно купить предмет для прогона аномалии.<br />
*'''кнопка прогнать миниигрой''' - кнопка по нажатию которой, можно прогнать аномалию мини игрой.<br />
*'''корневой объект''' - некая машина, олицетворяющая собой блок перехода в связанную локацию. Должно иметь состояния enable и disable.<br />
*'''таблица артефактов''' - в таблицу будут сложены предметы, необходимы для переключения локации.<br />
*'''галочка в таблице''' - графический ресурс поверх найденных предметов.<br />
*'''иконка ключа''' - сюда сложим иконку предмета необходимого для переключения на альтернативную локацию.<br />
<br />
===Окно после локации===<br />
<br />
Настройка окна, которое всплывает после посещения локации. В этом окне отображается информация о полученных очках и предметах за исследование локации.<br />
<br />
*'''Окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние ''open''.<br />
*'''Название локации''' - текстовый объект, в который будет подставляться название локации.<br />
*'''Описание локации''' - текстовый объект, в который будет подставляться описание локации.<br />
*'''Уровень мастерства''' - счетчик уровня мастерства.<br />
*'''Прогрессбар мастерства''' - прогрессбар, который отображает уровень мастерства.<br />
*'''Текущий уровень''' - счетчик текущего уровня мастерства.<br />
*'''Призовой ресурс 1''' - счетчик призовых денег.<br />
*'''Аномальный ресурс 1''' - счетчик, который отображает количество дополнительных денег за прохождение локации с аномалией.<br />
*'''Призовой ресурс 2''' - счетчик призовых кристаллов.<br />
*'''Призовой опыт''' - счетчик призового опыта.<br />
*'''Аномальный опыт''' - счетчик, отображающий дополнительный призовой опыт, который дается за прохождение локации с аномалией.<br />
*'''Таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно найти в данной локации.<br />
*'''ничего не найдено''' - Любой объект, так или иначе сообщающий игроку, что он не нашел ничего ценного.<br />
<br />
===Окно перед монстром===<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open - все условия выполнены, open_energy - не хватает энергии для игры, но предмет для прогона есть, open_item - есть энергия, но не хватает предмета для прогона, open_item_energy - не хватает энергии для игры и нет предмета для прогона.<br />
*'''превью монстра ''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''необходимая энергия''' - счетчик, отображающий количество необходимой энергии.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''иконка предмета''' - картинка, которая отображает предмет необходимый для игры с монстром.<br />
*'''нужно предметов''' - счетчик, который отображает необходимое количество предметов.<br />
*'''есть предметов''' - счетчик, который отображает текущее количество предметов, находящееся в наличии.<br />
*'''суммарная стоимость''' - счетчик, который отображает суммарную стоимость недостающих предметов.<br />
*'''кнопка купить''' - кнопка, по нажатию которой, происходит покупка недостающих предметов.<br />
*'''кнопка прогнать''' - кнопка, по нажатию которой, можно прогнать монстра не играя в игру, эту кнопку можно не задавать.<br />
<br />
===Окно после монстра===<br />
<br />
*'''окно''' - некая машина, олицетворяющая собой само окно превью. Должна иметь состояние open.<br />
*'''превью монстра''' - картинка, отображающая превью монстра.<br />
*'''название монстра''' - текстовый объект, показывающий название монстра.<br />
*'''описание монстра''' - текстовый объект, показывающий описание монстра.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призового опыта.<br />
*'''таблица коллекции''' - таблица, в которой будут отображаться предметы, которые можно отжать у данного монстра.<br />
*'''ничего не найдено''' - любой объект, сообщающий игроку, так или иначе, что он не нашел ничего ценного на данной локации.<br />
<br />
===Окно коллекций===<br />
<br />
*'''Шаблон коллекции''' - ссылка на объект типа ecollection который будет использоваться в качестве исходного для всех коллекций.<br />
*'''Таблица''' - таблица, куда по ссылке будут добавлены шаблоны коллекции.<br />
*'''алерт''' - некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окно с информацией о предмете всплывает в окне с коллекциями.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
*'''цифры''' - фреймовая анимация содержащая в себе цифры. Последний фрейм анимации - отметка много.<br />
<br />
===Окошко коллекционного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
*'''имя коллекции (объект)''' - В это поле будет записано имя коллекции, к которой относится предмет.<br />
<br />
===Окошко поздравления со сдачей коллекции===<br />
<br />
*'''окно''' - некая машина,содержащая необходимую информацию, олицетворяющая само окно предмета. Должна иметь в себе состояние open.<br />
*'''иконка''' - картинка отображающая иконку предмета-награды ( в параметр reward_text_id - запишется текстовый ID итогового предмета из текстовой базы);<br />
*'''текст(объект)''' - текстовый объект, отображающий название коллекции.<br />
*'''призовой ресурс 1''' - счетчик, отображающий количество призовых денег.<br />
*'''призовой опыт''' - счетчик, отображающий количество призовых денег.<br />
<br />
===Окошко инвентарного предмета===<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окно предмета. Должна иметь состояние open. Окошко всплывает при клике на предмет в таблице окна перед/после локации.<br />
*'''иконка''' - Иконка предмета.<br />
*'''текст (объект)''' - Текстовый объект в окошке.<br />
*'''описание (объект)''' - Текстовый объект в окошке, в который сложим описание предмета.<br />
<br />
===Окошко поздравления с получением уровня===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само окно предмета. Должна иметь состояние open.<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
===Окошко поздравления с получением уровня и открытием локации===<br />
<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
<br />
*'''уровень''' - счетчик, отображающий номер полученного уровня.<br />
<br />
*'''энергия''' - счетчик, отображающий количество энергии, которая прибавляется к максимуму.<br />
<br />
*'''ресурс 1''' - счетчик, отображающий количество денег.<br />
<br />
*'''ресурс 2''' - счетчик, отображающий количество кристаллов.<br />
<br />
*'''иконка локации''' - картинка, отображающая иконку локации, которая стала доступна<br />
<br />
*'''описание локации''' - текстовый объект, который отображает описание локации, которая стала доступна.<br />
<br />
===Окошко получения уровня на локации===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само поздравительное окошко. Должна иметь состояние open.<br />
*'''спецпредмет''' - объект, в который положится иконка коллекционного предмета, полученного за достижение очередного уровня мастерства на локации (настройки предмета в уровнях мастерства).<br />
*'''опции''' - поле в опциях, в которое записывается уровень по локации.<br />
<br />
===Окошко, когда не хватает чарджера (общее) ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяющая собой само уведомительное окошко. Должна иметь состояние open.<br />
*'''иконка''' - картинка, отображающая иконку предмета, который игрок получит за сдачу коллекции.<br />
*'''текст''' - текстовый объект, который будет отображать описание коллекции.<br />
*'''суммарная цена ресурса 1''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 1 (деньги).<br />
*'''суммарная цена ресурса 2''' - счетчик, отображающий суммарную цену всех необходимых чарджеров, представлена в виде ресурса 2 (кристаллы).<br />
*'''кнопка купить все''' - кнопка, по нажатию которой, происходит покупка необходимых предметов. Если в кнопке есть необходимость она будет появляться, в противном случае - сама исчезать.<br />
<br />
===Окошко, которое выезжает когда найден коллекционный предмет ===<br />
<br />
*'''окно''' - некая машина, содержащая необходимую информацию, олицетворяет собой само поздравительное окошко. Должна иметь состояние show.<br />
*'''текст''' - текстовый объект, который используется для отображения названия коллекции.<br />
*'''таблица''' - таблица, в которую складываются объекты коллекции.<br />
<br />
===Окошко покупки артефакта===<br />
<br />
Кратко об артефактах. Артефакты это инвентарные предметы, которые можно найти либо купить. Они необходимы для того, чтобы была возможность играть в связанную локацию. Связанная локация - локация, которая имеет свой уникальный порядковый номер в списке локаций, но тем не менее логически привязана к локации с другим порядковым номером. Когда все артефакты, необходимые для игры в связанную локацию собраны, то при вызове состояния ''location'' объекту economics локация выбирается случайным образом между оригинальной и связанной. При этом есть возможность сменить локацию (ротация между оригинальной и связанной локацией) вызвав состояние ''location_switch''. Чтобы сменить локацию нужен предмет, который перетаскивается в поле "предмет переключения" настроек локации.<br />
<br />
*'''окно''' - Некая машина, олицетворяющая собой само окошко покупки. Должна иметь состояние show<br />
*'''таблица''' - Таблица должна иметь две строки и заполнение по столбцам. В верхнюю попадут иконки артефактов, в нижнюю - кнопки купить<br />
*'''кнопка 1''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 2''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 3''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
*'''кнопка 4''' - Купить артефакт. Должна в param2 - номер артефекта и вызывать состояние экономике buy_artefact<br />
<br />
===Дополнительные достижения ===<br />
<br />
В этом разделе указаны некоторые достижение, которые отправляются объектом economics в gamecenter.<br />
<br />
*'''достижение на трату ресурса 1''' - id достижения, отправляемого за трату ресурса 1 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 1''' - сумма ресурса 1, которую необходимо потратить для получения достижения.<br />
*'''достижение на трату ресурса 2''' - id достижения, отправляемого за трату ресурса 2 (когда игрок потратит сумму ресурса из следующего поля отправляется достижение 100%).<br />
*'''количество ресурса 2''' - сумма ресурса 2, которую необходимо потратить для получения достижения.<br />
*'''достижение на число открытых локаций''' - id достижения, отправляемого за открытия количества локаций из следующего поля (при открытии нужного количества локаций отправляется 100% достижения).<br />
*'''количество локаций''' - кол-во локаций, которое необходимо открыть для получения достижения.<br />
*'''достижение за покупки чего-либо''' - id достижения, отправляемого за совершенное количество покупок из следующего поля (при покупке нужного количества отправляется 100% достижения).<br />
*'''количество покупок''' - количество покупок, которое необходимо свершить для получения достижения.<br />
<br />
===Покупка рандомного предмета===<br />
<br />
При вызове объекту economics состояния ''buy_random_col'' покупается случайный коллекционный предмет. Визуализацией покупки служит выпадающий на сцену объект из вкладки настроек "Летающий объект"<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
*'''исключения''' - id предметов, которые не попадут в случайный выбор. Перетаскиваются из текстовой базы.<br />
*'''каунтер''' - объект типа counter в который сложится цена предмета.<br />
<br />
=== Статус ===<br />
Статус - дополнительный экономический параметр игрока, который зависит от внутриигровых действий. Статус определяется кол-вом статусных очков, которые начисляются за совершение in-app покупки и при достижении нового уровня (exp).<br />
<br />
Тесно связан с [[Wallet|Wallet]].<br />
<br />
*'''очки для повышения''' - массив чисел, указываем через запятую. Обозначает нужное кол-во очков статуса для перехода на следующий уровень. Пример: 0, 150, 3850. Изначальный уровень уже получен при инициализации экономики. Для перехода на следующий (2-й) нужно получить 150 очков. На 3-й - 3850 и т.д.<br />
*'''множитель статуса при покупке''' - массив чисел, указываем через запятую. Обозначает коэф., на который домножим базовое значение статусных очков при покупке. Зависит от текущего статуса. Пример: 1,2,3. Базовое значение за покупку - 18 очков статуса. При совершении покупки, имея 1-й статус - получаем 18 очков. Имея второй статус - 36, третий - 54.<br />
*'''множитель монет при покупке''' - Аналогично предыдущему пункту.<br />
*'''прибавка за уровень''' - массив чисел, указываем через запятую. Показывает сколько статусных очков будет получено при достижении уровня exp, учитывая текущий статус.<br />
*'''множитель дейли-бонуса''' - массив чисел, указываем через запятую. Множитель, который можно использовать при начислении ежедневного бонуса. Зависит только от текущего статуса.<br />
<br />
'''Поля в опциях'''<br />
* ecomics%d.stlev - текущий уровень статуса (начиная с 0!)<br />
* ecomics%d.stpoints - поинты внутри текущего уровня<br />
* comics%d.stdaily - множитель для дейли бонуса<br />
* ecomics%d.stmult - множитель для монеток<br />
<br />
=== Настройки симуляции ===<br />
<br />
*'''время''' - время симуляции, измеряется в секундах.<br />
<br />
*'''минимум в локации''' - нижняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
<br />
*'''максимум в локации''' - верхняя граница диапазона времени проводимого игроком в хиддене. Отображается в виде доли от времени из настроек локации.<br />
*'''порог покупки''' - число, указывающее какую долю, от ресурсов игрока, должна составлять цена локации, что бы он решился её купить.<br />
*'''порог покупки предмета''' - число, указывающее какую долю,от ресурсов игрока, должна составлять цена предмета, что бы он решился его купить.<br />
*'''вероятность задачи''' - число, отображающее вероятность того, что симуляция будет выбирать не из всех доступных локаций, а из связанных с заданиями.<br />
*'''вероятность матча''' - число, отображающее вероятность того, что симуляция будет играть в матч.<br />
*'''изначально хинтов''' - изначальное количество хинтов.<br />
*'''предметов на хинт''' - на сколько найденных предметов игрок израсходует хинт.<br />
*'''цена хинта монеты''' - сколько монет (ресурс 1), стоит некий усредненный хинт.<br />
*'''цена хинта кристаллы''' - сколько кристаллов (ресурс 2), стоит некий усредненный хинт.<br />
*'''хидденов подряд''' - игрок будет пытаться пройти не менее данного числа хидденов подряд.<br />
*'''восстановить энергии''' - некое усредненное количество энергии для восстановления.<br />
*'''цена энергии монеты''' - сколько монет стоит энергия (цена в ресурсе 1).<br />
*'''цена энергии кристаллы''' - сколько кристаллов стоит энергия (цена в ресурсе 2).<br />
*'''вероятность победы в матче'' - число, отображающее вероятность победы в матче.<br />
*'''время в матче''' - условное время пребывания в матче.<br />
*'''вероятность покупки за реал''' - каждый раз когда игроку не хватает денег или кристаллов - проверяем эту вероятность.<br />
*'''цена монеты в деньгах''' - цена монеты в деньгах.<br />
*'''количество монет в покупке''' - количество монет в покупке.<br />
*'''цена кристаллов в деньгах''' - цена кристаллов деньгах.<br />
*'''количество кристаллов в покупке''' - количество кристаллов в покупке.<br />
<br />
<br />
=== Настройки равномерной экономики ===<br />
<br />
Нужно в случае, если мы хотим давать за локации и монстров одинаковую награду (опыт, затрата энергии, вне зависимости от настроек в economics_setup). Награда может отличаться только для монстров (если в economics_setup мы укажем монстру в поле награда опыт - 0, то экономика начислять опыт не будет).<br />
<br />
*'''локация энергия''' - стоимость энергии на игру хидн или монстр;<br />
*'''локация опыт''' - награда за успешное прохождение локации/монстра ( при условии что для монстра в поле награды не стоит 0 );<br />
*'''коллекция опыт min''' - минимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция опыт max''' - максимальный опыт за успешную сдачу коллекции;<br />
*'''коллекция монеты min''' - минимальная награда за успешную сдачу коллекции;<br />
*'''коллекция монеты max''' - максимальная награда за успешную сдачу коллекции;<br />
<br />
==Поле economics setup==<br />
По клику на "..." открывается редактор экономикса. В этом редакторе можно задать все настройки локациям и коллекциям, которые используются в игре.<br />
<br />
[[Файл:Economics 1.jpg|500px]]<br />
<br />
Economics setup содержит 11 вкладок : локация хидден, коллекция, предметы, окошко когда не хватает чарджера (чарджер), нехватка ресурсов на чарджер, монстр, летающий объект, аномалия, сдача коллекции, временный эффект, достижение.<br />
Вверху можно увидеть ряд кнопок для добавления и удаления: справа для локаций, слева для уровней мастерства.<br />
<br />
===Локация хидден===<br />
<br />
Форма редактора экономикса разделена на 4 колонки. В первой колонке мы видим список локаций, используемых в игре. Имена локаций можно изменять. Добавляются новые локации по нажатию на кнопку ''Добавить локацию'', удаляются кнопкой ''Удалить локацию''. Во второй колонке отображаются свойства выделенной локации.<br />
<br />
[[Файл:Economics 2.jpg|right]]<br />
*'''Объект на карте''' - это объект ведущий в локацию с карты. Должен иметь как минимум состояния open и closed, которые ему будет вызывать экономикс.<br />
*'''индиктор уровня''' - каунтер, который будет отображать номер уровня, начиная с которого локация доступна.<br />
*'''Экран''' - экран, в котором расположен локация.<br />
*'''Превью локации''' - графический ресурс для отображения превью локации из базы ресурсов.<br />
*'''Имя локации''' - название локации, перетаскивается из текстовой базы.<br />
*'''Описание локации''' - описание, перетаскивается из текстовой базы.<br />
*'''Уровень''' - уровень требуемый для того, чтобы играть в локацию.<br />
*'''Результат''' - имя поля в опциях, куда локацией будет занесен результат. Расчитываем найти там число.<br />
*'''Связанный хидден лист''' - хидден-лист, связанный с локацией.<br />
*'''необходимый предмет''' - предмет необходимый для входа в локацию. Может быть как коллекционным, так и инвентарным.<br />
*'''разница в уровнях''' - разница в уровнях, при которой можно купить доступ в локацию.<br />
*'''цена ресурс 1''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за деньги.<br />
*'''цена ресурс 2''' - если наш уровень ниже необходимого на разницу из верхнего поля, мы можем разлочить локацию за кристаллы.<br />
*'''достижение''' - достижение, которое будет открываться по мере игры в эту локацию.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''объект для музыки''' ('''musObj''') - объект которому в поле "location_music" будет записан id музыки из поля "музыка", при запуске локации;<br />
*'''музыка''' ('''musId''') - id музыки локации;<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает, если 3 - предмет покупается один раз, остальные разы только применяется<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах. Если поставить "-1", то действие предмета будет вечным, отображаться в таблице амулетов он не будет.<br />
<br />
*'''dTm''' - уменьшение времени восстановления энергии в %.<br />
<br />
*'''dFnd''' - увеличение вероятности нахождения предмета в %.<br />
<br />
*'''dExp''' - увеличение начисляемого опыта в %.<br />
<br />
*'''dRes1''' - увеличение полученного ресурса 1 в %.<br />
<br />
*'''dRes2''' - увеличение полученного ресурса 2 в %.<br />
<br />
*'''dOvP''' - увеличение перегруженной вероятности нахождения предметов в %.<br />
<br />
*'''dMaxEn''' - увеличение максимума энергии в %.<br />
<br />
*'''dBonus1''' - накопительный монетный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus1 экономикса. Автоматически не начисляется.<br />
<br />
*'''dBonus1''' - накопительный кристальный бонус (в случае, если предмет дает ежедневный денежный прирост). Суммируется (от всех предметов имеющих это поле отличное от 0) и записывается в поле total_amulet_bonus2 экономикса. Автоматически не начисляется.<br />
<br />
*'''dPurchase''' - к каждой покупке предмета добавляется еще столько таких же предметов. Актуально в тех случаях, когда приобретение предмета активирует акцию 1+1.<br />
<br />
*'''num''' - число предметов в сундуке. Выбираются случайно из следующего поля. При 0 - следующее поле не используется.<br />
<br />
*'''items''' - предметы, которые можно найти в сундуке. Перетаскиваются из текстовой базы.<br />
<br />
*'''use_id''' - задание этого поля говорит о том, что данный предмет является оптовым пучком для предмета указанного у этом поле. Num, в этом случае, - количество.<br />
<br />
*'''объект''' - связанный объект, будет добавляться в инвентарь.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобный предметов.<br />
<br />
*'''процент''' - процент достижения их предыдущего поля.<br />
<br />
*'''владелец''' - на данный момент - номер правильной кнопки в окне угадайки (если -1. то игнорируется).<br />
<br />
*'''монстр''' - номер монстра, в игре с которым нужно применить этот предмет. Актуально для задач на применение хинтов в мини играх.<br />
<br />
*'''обработчик конца действия''' - объект, обработчик конца действия амулета.<br />
<br />
*'''состояние обработчика''' - состояние обработчика конца действия амулета (объект из поля выше будет переведен в это состояние по окончанию действия амулета).<br />
<br />
*'''дарить с уровня''' - уровень с которого возможно дарить этот предмет<br />
<br />
*'''кнопка применить - поле в опциях''' ( '''btn_use_field''' ) - для применяемого предмета, указываем поле для проверки значения, если условие истинно - кнопка применить будет доступна; иначе - выключена ("disable");<br />
*'''кнопка применить - значение''' ( '''btn_use_val''' ) - значение для проверки условия, в поле '''кнопка применить - поле в опциях''';<br />
*'''кнопка применить - НЕ''' ( '''btn_use_not''' ) - от результата сравнения взять обратное;<br />
<br />
====Создание предметов (крафт)====<br />
<br />
В третьей колонке можно добавлять ингридиенты из которых состоит предмет. Ингридиенты сами по себе являются также инвентарными предметами. В четвертой колонке указывается текстовый id ингридиента и необходимое количество данного ингридиента.<br />
<br />
===Окошко когда не хватает чарджера===<br />
Позволяет добавлять окна. Окно добавляется кнопкой "Добавить локацию", окно можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
*'''название''' - текстовый объект в который вкладывается название чарджера.<br />
*'''иконка''' - иконка чарджера.<br />
*'''описание''' - текстовый объект в который вкладывается название чарджера.<br />
*'''купить''' - кнопка покупка чарджера, передает economics состояние buy_charger.<br />
*'''искать''' - кнопка поиска чарджера, передает economics состояние search_charger.<br />
*'''есть''' - счетчик, который показывает сколько чарджеров есть сейчас.<br />
*'''нужно''' - счетчик, который показывает сколько чарджерова необходимо для сдачи коллекции.<br />
*'''цена ресурса 1''' - счетчик, который показывает цену чарджера в ресурсе 1.<br />
*'''цена ресурса 2''' - счетчик, который показывает цену чарджера в ресурсе 2.<br />
*'''достаточно''' - объект, который отображается вместо кнопки, в тот момент, когда чарджеров достаточное количество.<br />
<br />
===Нехватка ресурсов на чарджер===<br />
Позволяет изменить состояние выбранному объекту при нехватке ресурсов на чарджер. Добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
<br />
===Монстр===<br />
В первой колонке добавляется монстр, добавляется кнопкой "Добавить локацию", если возможность переименовать, удаляется кнопкой "Удалить локацию"<br />
Во второй колонке отображаются свойства выделенной колонки.<br />
<br />
*'''Объект на карте''' - объект, который представляет монстра на карте. Как правило окно, которое должно иметь состояние hide (скрыт),show и disappear (прогнали).<br />
*'''Имя монстра''' - текстовый id из которого берется иконка, имя и описание монстра.<br />
*'''Экран''' - экран в котором расположена локация.<br />
*'''min уровень''' - уровень, при достижении которого, появляется монстр.<br />
*'''max уровень''' - уровень, при достижении которого, монстр исчезает.<br />
*'''необходимый предмет''' - предмет необходимый для игры с духом.<br />
*'''количество''' - количество предметов из поля "необходимый предмет". <br />
*'''связанный баттл''' - поле в котором указывается связанный объект типа matchbattle.<br />
*'''связанный матч''' - поле в котором указывается связанный матч.<br />
*'''окно внутри монстра''' - объект, который покажем в экране с мини игрой в случае победы. Должен иметь состояния open - в случае обычной победы, open_win - если перешли на следующий уровень мастерства. Чтобы это окно перешло в одно из этих состояний передаем экономике состояние ''monster_win_wnd''.<br />
*'''текст внутри монстра''' - текстовый объект, в который сложим поздравительный текст о переходе на следующий уровень мастерства.<br />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовывать. Добавляются уровни кнопкой "Добавить уровень мастерства", удаляются кнопкой "Удалить уровень мастерства".<br />
В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
*'''энергия''' - энергия необходимая для того, что бы можно было начать играть в локацию.<br />
*'''ресурс1''' - деньги даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''постоянный прирост''' - постоянный прирост.<br />
*'''штраф за поражение''' - кол-во очков, которые отнимаются за проигрыш.<br />
*'''очки''' - количество очков, которое необходимо набрать для перехода на следующий уровень мастерства.<br />
*'''предметы''' - id коллекционных предметов, которые можно найти на локации. Предметы не обязательно должны быть из одной коллекции. Необходимые предметы перетаскиваются из текстового редактора, при этом будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из поля "предметы".<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из поля "инвентарь".<br />
*'''текст при разлочке уровня''' - текстовый id из которого возьмем поздравительный текст о разлочке нового уровня.<br />
*'''жизни врага''' - записываются значения вражеских жизней.<br />
*'''начальные жизни врага''' - начальное значение вражеских жизней.<br />
*'''регенерация врага''' - время (в ms), за которое у противника отрастает жизнь. Если установлено -1, то отрастания жизни противника на происходит.<br />
*'''число цветов''' - это число будет записываться в параметр numTokenNums матча.<br />
<br />
Автоматические уровни мастерства отличаются всего несколькими дополнительными полями.<br />
<br />
*'''количество''' - количество автоматических уровней.<br />
*'''энергия''' - начальное значение энергии за игру.<br />
*'''энергия прирост''' - прирост энергии за каждый уровень мастерства.<br />
*'''ресурс 1''' - начальное значение ресурса1, который мы получаем за прохождение.<br />
*'''ресурс 1 прирост''' - прирост ресурса1 за каждый уровень мастерства.<br />
*'''опыт''' - начальное значение опыта, который мы получаем за прохождение.<br />
*'''опыт прирост''' - прирост опыта за каждый уровень мастерства.<br />
*'''нулевой штраф каждые n уровней''' - раз в столько уровней штраф за поражение будет нулевым (-1 - не использовать).<br />
<br />
Также есть возможность перегружать некоторые параметры уровней мастерства. Для этого нужно выбрать монстра и в выпадающем списке вверху выбрать пункт "перегрузка параметров".Перегрузок может быть несколько. <br />
<br />
Для настройки перегрузки нужно выбрать ее в 3 колонке, при этом в 4 колонке отобразятся параметры перегрузки. <br />
Сейчас перегрузку можно привязать к уровням XP игрока и к уровню монстра. Под уровнем монстра имеется ввиду уровень мастерства, отсчет начинается с 0. Перегружать можно энергию, затрачиваемую на монстра, награду (золото и опыт), а также инвентарные и коллекционные предметы.<br />
<br />
''Важно!'' Если поля инвентарных и коллекционных предметов оставить пустыми - то предметы выпадать не будут.<br />
<br />
===Летающий объект===<br />
Впервой колонке кнопкой "Добавить локацию" добавляется летающий объект - объекты которые вылетают после прохождения локации или после покупки сундуков. Удаляется кнопкой "Удалить локацию". Во второй колонке добавляется объект выделенного летающего объекта. Состояния hide, wait, inventory и collection - обязательны для этого предмета.<br />
<br />
''hide'' - состояние, когда объект не видно на экране. В этом состоянии можно указать свойство alpha=0.<br />
<br />
''wait'' - состояние, в которое попадают летающие объекты, которые отображают коллекционные предметы до того, как объекту economics будет вызвано состояние col_item_found.<br />
<br />
''collection'' - состояние, которое будет вызвано летающему объекту, который отображает коллекционный предмет после того как объекту economics будет вызвано состояние col_item_found (он может лететь в таблицу с нужной коллекцией).<br />
<br />
''inventory'' - состояние, которое вызывается летающему объекту в случае, если он отображает инвентарный объект (в этом состоянии предмет становится видимым и в дальнейшем может перемещаться).<br />
<br />
===Аномалия===<br />
<br />
В хидден-локации могут присутствовать аномалии, затрудняющие ее прохождение.<br />
Впервой колонке добавляется аномалия, добавляется кнопкой "Добавить локацию", можно переименовывать, удаляется кнопкой "Удалить локацию".<br />
Во второй колонке отображаются свойства выделенной аномалии.<br />
*'''id''' - поле в которое перетаскивается текстовый id, из которого используется название, описание и иконка аномалии.<br />
*'''предмет''' - предмет необходимый для того, что бы изгнать аномалию.<br />
*'''экран''' - в этом поле указывается экран, в котором расположена мини игра.<br />
*'''прибавка к энергии''' - указывается прибавка к энергии, поскольку для игры в аномалию будет нужно больше энергии. Например, при значении 0,5 - энергии потребуется больше в полтора раза.<br />
*'''прибавка к опыту''' - указывается прибавка к опыту, поскольку игра в локацию с аномалией будет давать больше опыта. Например, при значении 0,5 - опыта приобретается больше в полтора раза.<br />
*'''прибавка к ресурсу 1''' - указывается прибавка к ресурсу 1. поскольку игра в локацию с аномалией будет давать больше ресурса 1. Например, при значении 0,5 - ресурса 1 приобретается больше в полтора раза.<br />
<br />
===Сдача коллекции===<br />
<br />
В первой колонке добавляется событие на сдачу коллекции кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливается состояние объекту сдачи коллекции.<br />
<br />
===Временный эффект===<br />
<br />
Временный эффект - визуализация действия различных инвентарных объектов, которые применил игрок.<br />
В первой колонке создается временный эффект, добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию".<br />
Во второй колонке устанавливаются свойства выделенного временного эффекта.<br />
<br />
*'''иконка''' - из редактора ресурсов, перетаскивается иконка временного эффекта<br />
*'''таймер''' - указывается объект типа timer, который соответствует выбранному временному эффекту.<br />
*'''подложка''' - из редактора ресурсов, перетаскивается картинка подложки для таймера указанного в поле "таймер".<br />
<br />
===Достижение===<br />
В первой колонке записываются достижения. Добавляются кнопкой "Добавить локацию", удаляются кнопкой "Удалить локацию". <br />
Во второй колонке отображаются свойства выбранного достижения.<br />
<br />
*'''достижение''' - достижение, которое будет открываться по мере применения подобных предметов.<br />
<br />
*'''процент''' - в виде числа, указывается процент достижения из поля "достижение".<br />
<br />
*'''режим игры''' - указывается режим игры, ели 0 - режим игры не важен для достижения, 1 - режим игры слова, 2 - режим игры силуэты.<br />
<br />
*'''аномалия''' - указывается аномалия необходимая для достижения, если указывается -2 - то аномалия не важна для достижения, если указывается -1 - то для достижения может использоваться любая аномалия.<br />
<br />
==Состояния==<br />
<br />
[[Файл:Economics 5.jpg|right]]<br />
Перед вызовом некоторых состояний объекту economics необходимо передать параметр '''param''' и его значение. Например когда нам нужно открыть окно перед локацией мы передаем параметр номера этой локации в списке локаций (начиная с 0).<br />
<br />
<br clear /br><br />
*'''idle''' - состояние по умолчанию.<br />
*'''completed''' - передает состояние окончания исследования локации (необходим параметр номера локации), перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''exp''' - передает состояние начисления опыта (необходим параметр количества опыта). Нужен больше для тестирования, чем для самой игры.<br />
*'''play''' - передает состояния перехода на локацию для исследования(при условии что хватит энергии и выполнены прочие условия).<br />
*'''location''' - открывает окно перед локацией (необходим параметр номера локации).<br />
*'''collection''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия. Для применения фильтрации коллекций перед вызовом состояния задать параметр ''collectionFilter'' (0 - все, 1 - все предметы, 2 - не хватает одного, 3 - новые). Для определения коллекции в категорию "новые" указать в настройках коллекции ''cnew'' (''новая'' - признак новизны для фильтра. >0 - новая).<br />
*'''collections_scroll''' - заполняет таблицу коллекций и проматывает на коллекцию содержащую последний предмет для которого было показано окошко с информацией о предмете.<br />
*'''collections_custom''' - перематывает таблицу к нужной коллекции. id коллекции записывается предварительно в param.<br />
*'''item_collections''' - заставляет экономикс показать окошко с информацией о коллекционном предмете. Вызывается при тапе на таблицу в темплейте коллекций (объект ecollection).<br />
*'''item_effect''' - сообщает economics, что необходимо показать окошко предмета от таймэфекта (необходим параметр номера эффекта)<br />
*'''item_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при обыске локации. Вызывается при тапе на таблицу с предметами в окне перед локацией.<br />
*'''item_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после обыска локации. Вызывается при тапе на таблицу с предметами в окне после локации.<br />
*'''item_monster_preview''' - заставляет экономикс показать окошко с информацией о предмете, который можно найти при игре с монстром. Вызывается при тапе на таблицу с предметами в окне перед монстром.<br />
*'''item_monster_review''' - заставляет экономикс показать окошко с информацией о предмете, который нашли после игры с монстром. Вызывается при тапе на таблицу с предметами в окне после монстра.<br />
*'''completed_animation''' - состояние запускает анимацию полученной награды за прохождение локации после "окна после локации". Можно запускать из состояния закрытия окна после локации.<br />
*'''unlock_item''' - передает состояние покупки предмета, необходимого для открытия локации. Как правило, предмет находится в окне перед локацией.<br />
*'''unlock''' - передает состояние при котором происходит разлочка локации если текущий уровень на один ниже, чем необходимый для открытии локации или значение ''разница в уровнях'', позволяет разлочить локацию. Как правило кнопка для разблокирования локации размещается в окне перед локацией. Когда разница уровней достаточна, чтобы разлочить локацию машина локации переводится в состояние '''can_buy'''.<br />
*'''completed_reward''' - вызывается объектом анимации награды после прохождения локации. Если объектов несколько (опыт, монеты, кристаллы), то вызывается только один раз одним из объектов.<br />
*'''search_charger''' - производит поиск недостающего чарджера. Пока только по монстрам. Номер чарджера 0 или 1 - в парам.<br />
*'''buy_charger''' - производит покупку недостающего чарджера (номер в параметре, -1 - купить все).<br />
*'''update''' - обновить все локации на карте.<br />
*'''level_up''' - проверяет получение нового уровня. Чтобы окно с получением нового уровня не открывалось самостоятельно, мы вызываем это состояние, когда нам удобно. Проверяется был ли получен новый уровень, если был, то вызывается окно с получением нового уровня.<br />
*'''res1''' - Добавить ресурс 1 (значение в параметре).<br />
*'''res2''' - Добавить ресурс 2 (значение в параметре).<br />
*'''res1s''' - скорректировать статистику по ресурсу 1 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''res2s''' - скорректировать статистику по ресурсу 2 (значение в параметре, когда, например, ресурс не заработан, а выигран в казино).<br />
*'''energy''' - Добавить энергию (значение в параметре).<br />
*'''energy_no_max''' - Добавить энергию перманентно - без ограничения перевала за максимум (значение в параметре).<br />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<br />
*'''item_effect_last''' - показать окошко предмета от последнего активированного таймэффекта. У машины окошка должно быть состояние "open_last".<br />
*'''search_collection''' - проскроллить карту на локацию где можно найти коллекционный предмет. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_task''' - проскроллить карту на локацию где можно найти предмет из задания. При этом машина локации (Объект на карте) будет переведена в состояние highlight, в котором локацию можно посветить или выделить ее каким-то образом.<br />
*'''search_charger''' - проскролить карту на монстр, в котором можно найти чарджер (необходимо значение чарджера в параметре 0 или 1).<br />
*'''monster''' - Открыть превью для монстра с номером указанном в поле параметр.<br />
*'''monster_play''' - Играть в мини игру выбранного монстра (при условии, что хватит энергии и выполнены прочие условия).<br />
*'''monster_removed''' - Монстра прогнали предметами. Вычесть предметы и успешно завершить.<br />
*'''monster_completed''' - Текущая мини игра так или иначе пройдена, перед вызовом состояния, можно экономике заполнить поле '''additional_inv''' - перечнем инвентарных предметов которые хотим добавить пользователю ( поместить в таблицу + чтобы экономика поместила их в летающие объекты), через запятую (к примеру additional_inv="12345,25841") .<br />
*'''monster_failed''' - Текущая мини игра провалена, отличается от предыдущего тем, что не дается бонусного опыта и прочих наград.<br />
*'''monster_buy''' - попытаться докупить предметы, необходимые для игры с монстром.<br />
*'''col_item_param''' - Добавить коллекционный предмет, взяв его айди из параметра.<br />
*'''anomaly_item''' - попытаться прогнать аномалию в текущей локации предметом. В зависимости от номера аномалии, машина локации (Объект на карте) переводится в состояние anomaly_N, где N - номер аномалии начиная с 0. (anomaly_0, anomaly_1 и т.д.). Таким образом можно визуализировать аномалию на карте.<br />
*'''anomaly_game''' - попытаться прогнать аномалию в текущей локации мини игрой.<br />
*'''anomaly_completed''' - мини игра по прогону аномалии успешно завершена.<br />
*'''anomaly_buy''' - показать окно покупки для предмета прогона аномалии (в текущей локации).<br />
*'''cheat_loc_level''' - "накачать" всем локациям скилл левел до максимума (для тестирования).<br />
*'''chest_animation''' - анимировать последний использованный сундук.<br />
*'''col_item_found''' - показать окошко с коллекцией для одного найденного коллекционного предмета из очереди.<br />
*'''cheat_one_level''' - просимулировать один уровень развития игрока.<br />
*'''purchase_ok''' - сообщает economocs что произошла покупка. Сформировать событие флури.<br />
*'''buy_random_col''' - купить случайный коллекционный предмет.<br />
*'''location_switch''' - переключить локацию на связанную (если есть предмет и собраны все артефакты, необходимые для перехода).<br />
*''' anomaly_set_everywhere''' - генерация аномалии. Если в объекте Economics в параметре param указан номер аномалии, то состояние добавляет аномалию всем локациям, а если -1, то убирает аномалию из всех локаций.<br />
*''' buy_artefact''' - осуществляет покупку артефакта для локации. Для этого у объекта economics в param должен быть записан номер локации, а в param2 номер артефакта (номер по порядку начиная с 0).<br />
*'''show_artefacts''' - Показать таблицу покупки артефактов в param - номер локации<br />
*'''location_buy_all_switchers''' - Купить все артефакты доступные для данной локации<br />
*'''search_ingridient''' - переход в локацию для поиска ингредиента, который указан в param.<br />
*'''search_needitem''' - поиск необходимого для исследования локации предмета из окна перед локацией. В param должен быть указан id необходимого предмета.<br />
*'''copy''' - скопировать основные параметры (опыт, уровень, энергия) и количество предметов из одной экономики в другую. Перед вызовом указать в поле "param" id экономики куда перенесём значение. Если экономика в кот. копируем выключена по disable="1" - нужно с начало установить disable="0", вызвать сост. "init", а уже после в неё копировать.<br />
*'''set_was_visited_flag''' - установить флаг посещаемости локации (loc%n%.wv="1") для календаря. В param должен быть указан id необходимого предмета.<br />
*'''clear_was_visited_flag''' - снять флаг посещаемости локации (loc%n%.wv="0") для календаря.В param должен быть указан id необходимого предмета.<br />
*'''srand_hidden''' - перетряхнуть связанный с хидденом генератор псевдослучайных чисел. Можно вызывать перед локацией, если возникает зацикливание хидденов. '''''КАТЕГОРИЧЕСКИ НЕЛЬЗЯ вызывать его при честном мультиплеере - в нем все определяется сидом от сервера'''''<br />
*'''download_pack''' - попросить экономику скачать пак для локации из поля param (используется при использовании динамических паков - конфигов, [https://docs.google.com/document/d/13UUOKf_iJNzFx0PjU4JQIfYDX7NhK7dyfJAR3I-SWlQ/edit детальнее]).<br />
*'''search_task_only_open''' - вызываем из окна таска, откроет превью локации в которой можно найти требуемый предмет. Аналог search_task, но ищет только в открытых локациях (в случае с календарём - влияет параметр "подзадача предмет" -> "сгенерировать предмет" - если указано неделя - будет давать локацию в диапазоне текущей недели; день - локацию текущего дня).<br />
<br />
<br />
Календарь (локации заполняем в таблицу как календарь):<br />
*'''unlock_for_today''' - попросить экономику разблокировать диапазон локации до конца текущего дня (диапазон указываем посредством полей "param" и "param2" - [param,param2]) .<br />
*'''today_table''' - промотать таблицу до текущего дня.<br />
*'''location_table_get_name''' - открыть превью локации, по нажатой ячейке таблицы календаря.<br />
*'''clear_packs''' - очистить паки которые не использовались n-н дней (где n - параметр '''packDeleteDays'''). <br />
<br />
При начислении экономикой res1 и res2 во флурри отправляются события coins_get, diams_get. Для того чтобы источники монет/кристаллов (параметр source) в событии приходили с адекватными значениями, перед вызовом состояния начисления экономике нужно записать параметр "res_source" в соответствии со значениями в списке:<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21 //!< сундуки на карте<br />
<br />
SOURCE_CONTEST_PRIZE = 23 //!< соревнования<br />
<br />
<br />
П.С. для мануального начисления (уникальный источник под каждый проект) <br />
31 // игровая награда №1 <br />
32 // игровая награда №2 <br />
33 // игровая награда №3 <br />
34 // игровая награда №4 <br />
35 // игровая награда №5<br />
36 // игровая награда №6<br />
37 // игровая награда №7<br />
38 // игровая награда №8<br />
39 // игровая награда №9<br />
40 // игровая награда №10<br />
<br />
=Сопутствующие объекты=<br />
<br />
Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря(магазина) и экономики. <br />
* [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина. <br />
* [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря.<br />
* [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета. <br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий.<br />
* [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания.<br />
* [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции.<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
<br />
=Вычитаемые параметры=<br />
Данные параметры можно вычесть с помощью команды "var" в машине состояний. Параметры нужно вычитать из профиля, если не сказано обратное.<br />
[id] - числовой id экономики в проекте, если не указана другая информация.<br />
<br />
*'''ecomics[id].res1sp''' - количество потраченного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2sp''' - количество потраченного ресурса_2 за все время игры;<br />
*'''ecomics[id].res1log''' - текущее значение ресурса_1 выраженное в логарифмической шкале;<br />
*'''ecomics[id].res1logfl''' - текущее значение ресурса_1 выраженное в логарифмической шкале с учётом депозитов и биржи;<br />
*'''ecomics[id].level''' - текущий уровень игрока;<br />
*'''ecomics[id].res1''' - текущее количество ресурса_1;<br />
*'''ecomics[id].res2''' - текущее количество ресурса_2;<br />
*'''ecomics[id].res1ea''' - количество заработанного ресурса_1 за все время игры;<br />
*'''ecomics[id].res2ea''' - количество заработанного ресурса_2 за все время игры;<br />
*'''economics[id].stat.energy_spent''' - количество потраченной энергии за все время игры;<br />
*'''ecomics[id].mplayed''' - количество сыгранных миниигр (монстр) за все время;<br />
*'''ecomics[id].lplayed''' - количество сыгранных хидденов за все время;<br />
*'''ecomics[id].total_score''' - количество заработанного опыта за все время игры;<br />
*'''ecomics[id].exp''' - текущий опыт на уровне;<br />
*'''ecomics[id].energy''' - текущий уровень энергии;<br />
*'''ecomics[id].loc[loc_id].an''' - номер аномалии, которая будет в локации loc_id;<br />
*'''amulets_bonus_res1''' - множитель монет за бонусы от амулетов, при начислении по сост. "res1";<br />
*'''amulets_bonus_res2''' - множитель кристаллов за бонусы от амулетов, при начислении по сост. "res2";<br />
*'''amulets_bonus_exp''' - множитель опыта за бонусы от амулетов, при начислении по сост. "exp";<br />
<br />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
=Календарь и всё про него=<br />
Данный режим позволяет создавать клонированные превью локаций и располагать локации по датам (одна локация - конкретная дата).<br />
Визуально выглядит вот так:<br />
<br />
[[Файл:Econom calendar viewer.png|400px|center]]<br />
<br />
Настраивается рядом параметров (режим работы, визуальное оформление - таблица настраивается отдельно - ) <br />
[[Файл:Econom calendart.jpg|400px|right]]<br />
*'''шаблон объекта на карте''' ('''tmplIco''') - превью локации - может быть как машинкой или "elocationpreview"(в этом случае, за превью локации берётся машинка из поля "иконка" - ей будут вызываться состояния и писаться параметры).<br />
Должны быть подключены все состояния для машинки превью локации ("highlight","level_0","level_1"...) и дополнительно:<br />
**'''apply''' - обновление имени локации (название дата) - в данном состоянии можно изменять параметры текста - выравнивание, размер шрифта и т.д.<br />
**'''not_played''' - игрок заходил в день локации, но не играл в HG;<br />
**'''not_visited''' - игрок не заходил в день локации;<br />
**'''future''' - локация закрыта и находится в будущем; <br />
Параметры которые пишутся в превью локации:<br />
**'''season''' - сезон локации (0 - зима; 1 - Весна; 2 - Лето; 3 - Осень);<br />
**'''in_past''' - находится локаций ранее текущей недели (0 - нет; 1 - да);<br />
**'''cellShift''' - смещении локации от центрального элемента таблицы (знак "-" - влево; знак "+" - вправо);<br />
<br />
<br />
*'''заглушка''' ('''tmplDummy''') - объект-заглушка, добавляется в начало и вконец таблицы - для правильной работы круговой таблицы;<br />
*'''количество заглушек''' ('''tmplDummyNum''') - количество добавляемых заглушек;<br />
*'''таблица''' ('''tableIco''') - таблица в которую будут складываться превью локации (должна иметь память - чтобы создались один раз);<br />
*'''разлочить дней от текущего влево''' ('''daysunlock''') - указываем крайнее левое значение диапазона локаций текущей недели ( относительно, текущего, календарного дня);<br />
*'''разлочить дней от текущего влево''' ('''daysunlockr''') - указываем крайнее правое значение диапазона локаций текущей недели( относительно, текущего, календарного дня);<br />
*'''очищать все коллекционные предметы при смене дня''' ('''clearcollections''') - при смене календарного дня - очистить все полученные коллекционные предметы;<br />
*'''прогресс загрузки''' ('''packProgress''') - прогресс загрузки пака, в окне перед локацией;<br />
<br />
Формат даты (можно использовать переменные в тексте _day - число, _weekDay - день недели, _mon - полное название месяца, _short - сокращенное название месяца):<br />
*'''формат даты центр''' ('''dateFormatCenter''') - текстовый ресурс, который будет помещён в имя локации (дата) центрального элемента таблицы;<br />
*'''формат даты лево''' ('''dateFormatLeft''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам левее центрального элемента таблицы;<br />
*'''формат даты право''' ('''dateFormatRight''') - текстовый ресурс, который будет помещён в имя локации (дата) всем элементам правее центрального элемента таблицы;<br />
*'''дни недели''' ('''dateWeekDays''') - перечень текстовых ресурсов, которые будут браться для каждого дня недели ( первый текст - понедельник, второй - вторник ...);<br />
*'''месяцы''' ('''dateMonthes''') - перечень текстовых ресурсов для месяцев ( начинаем с января; sense0 - полное название, sense1 - короткое);<br />
<br />
Фоновая прогрузка паков (при смене дня и при старте сессии):<br />
*'''автозакачка паков влево''' ('''packNLeft''') - указываем крайную левую локацию диапазона;<br />
*'''автозакачка паков вправо''' ('''packNRight''') - указываем крайную правую локацию диапазона;<br />
<br />
*'''поправка на 29 февраля''' ('''tableFeb29Adjust''') - обрабатываем 29 Февраля или нет;<br />
*'''начальная дата''' ('''startDate''') - Дата самой первой локации (unix time);<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Flurry&diff=9480Flurry2018-03-16T14:41:24Z<p>Sadovoy: /* Отправка объектом Economics Flurry событий и параметров */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] '''flurry''' используется для сбора статистики об использовании приложения. <br />
<br />
По умолчанию записывает такие параметры как время сессии, количество сессий, устройство, версия ОС, количество пользователей, и представляет эти данные в виде графиков и таблиц. Также можно записать какие кнопки нажимались, время между нажатиями определённых кнопок. Для сбора общих данных достаточно добавить в соответствующем виде flurry-id приложения в app.icf или в viewer.xml соответствующей платформы перед сборкой. Для сбора данных о нажатиях кнопок и др. необходимо кроме добавления flurry-id приложения в app.icf или в viewer.xml соответствующей платформы, также добавить в проект объект типа flurry и передавать ему интересующие события.<br />
<br />
Общая статистика на сервисе Flurry выглядит примерно так:<br />
<br />
[[Файл:Flurry sum stat.jpg]]<br />
<br />
==Параметры и состояния объекта flurry==<br />
<br />
===Параметры объекта flurry===<br />
<br />
Чтобы в игре установить сбор статистики нажатий определённых кнопок необходимо в редакторе сцен добавить объект Flurry (желательно на глобальный экран) и передать ему определённые параметры.<br />
У объекта flurry есть 3 параметра которые можно задавать. Это:<br />
* '''event''' - задаёт имя события<br />
* '''param_name''' - задаёт имя параметра<br />
* '''param_value''' - задаёт значение параметра<br />
Для корректной работы сбора статистики с нажатия кнопки все три поля должны быть обязательно заполнены.<br />
Рассмотрим принцип формирования названий событий на примере кнопки выбора пака в пазлах.<br />
<br />
Параметр '''''event''''' должен обозначить общее название группы событий, на пример ''Pack_select'';<br />
<br />
Параметр '''''param_name''''' должен указывать на конкретный параметр который будет записываться, в нашем случае его можно назвать ''pack_name'';<br />
<br />
Параметр '''''param_value''''' задаёт конкретное значение параметра, на пример ''pack_1''.<br />
<br />
=== Добавляемые параметры ===<br />
<br />
[[Файл:+.png]] '''обязательный параметр''' - для каждого эвента будем добавлять указанный параметр.<br />
*'''имя''' - имя параметра.<br />
*'''поле''' - поле в опциях (только из пользователя).<br />
<br />
===Состояния объекта flurry===<br />
<br />
* '''event''' - отправляет накопленные данные<br />
<br />
В самом объекте flurry можно задать начальные параметры, но при изменении его параметров те которые были - изменятся, а если до изменения параметров перевести объект flurry в состояние event, то на сервер статистики отправятся значения по-умолчанию, которые были записаны.<br />
<br />
* '''send_log''' - отправляет файл walkthrough.log на сервер<br />
<br />
В файл walkthrough.log флури пишет прохождение по игре: каждая строка лога содержит значения ключевых параметров (опыт, монеты, кристаллы, последний выполненный таск и т.д.) на момент записи, запись новой строки вызывается при наступлении различных событий (повышение уровня, начисление ресурса, выполнение задния и т.д.)<br />
<br />
Внимание!!! В проекте, собранном без дебага, лог не пишется. Для логирования прохождения без дебага нужно в app.icf в группе Flurry указать log_walkthrough = 1 (это касается файла walkthrough.log). С дебагом будет логироваться вне зависимости от этого.<br />
<br />
==Пример применения объекта flurry==<br />
<br />
Пример того как кнопка отправляет на сервер информацию о том, что она была нажата:<br />
<br />
[[Файл:Flurry button.jpg]]<br />
<br />
В данном случае кнопка записывает событие, название параметра, значение параметра, и сразу отправляет на сервер статистики.<br />
<br />
<br />
==Настройки приложения для отправки статистики==<br />
<br />
'''Для отправки статистики также необходимо добавить flurry-id в app.icf или в viewer.xml соответствующей платформы.'''<br />
Т.к. нагляднее выглядит статистика отдельно для платформы ios и отдельно для android, а также поскольку сервис предоставляет разные flurry-sdk для каждой из платформ, то flurry-id лучше всего вставлять в viewer.xml соответствующей платформы.<br />
<br />
В app.icf необходимо добавить строки:<br />
<br />
'''''[Flurry]'''''<br />
<br />
'''''game_id="здесь указывается flurry-id приложения"'''''<br />
<br />
или добавить в viewer.xml соответствующей платформы такую строку после globaltop, если таковой имеется, если его нет, то после настроек банеров (<banners platform_id="".../>):<br />
<br />
'''''<flurry game_id="здесь указывается flurry-id приложения"/>'''''<br />
<br />
==Реклама==<br />
<br />
Управление показом рекламы идёт через объект типа [[Advertisement]].<br />
<br />
В объекте [[Advertisement]] в качестве провайдера должен быть указан объект типа flurry и должны быть указаны '''тип''', '''space''', '''size'''.<br />
<br />
Также в [[app.icf]] или [[viewer.xml]] должен быть указан flurry id приложения, согласно ему идет работа банерной системы.<br />
<br />
Кроме этого в итоговый ''AndroidManifest.xml'' должны быть добавлены следующие строки:<br />
<br />
<pre><br />
<br />
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"<br />
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode" <br />
android:hardwareAccelerated="true" ><br />
</activity><br />
<br />
</pre><br />
<br />
Также должно быть следующее разрешение:<br />
<br />
<pre><br />
<br />
<uses-permission android:name="android.permission.INTERNET"/><br />
<br />
</pre><br />
<br />
<br />
<br />
==Примечания==<br />
<br />
Исходя из значений параметров будет строиться на сервисе Flurry диаграмма по параметру указанному в ''param_name''. К примеру, если для одной кнопки зададим в ''param_value'' значение ''pack_1'', второй кнопке зададим значение ''pack_2'', то в итоге, на странице сервиса в статистике приложения в раздеде Events получим список событий, которые были записаны, если выберем событие и выберем отобразить статистику по параметрам, для наглядности в круговой диаграмме, то увидим круговую диаграмму с долями которые занимает определённый параметр. Доли высчитываются исходя из количества пришедших значений параметров, то есть если 3 раза придёт значение ''pack_1'' и один раз придёт значение ''pack_2'', то доля ''pack_1'' будет 75%, а ''pack_2'' - 25% . <br />
<br />
Также можно выбрать из выпадающего списка по каким параметрам(которые указывались в '''''param_name''''' в рамках текущего имени события) необходимо отобразить статистику по значениям параметра.<br />
<br />
[[Файл:Flurry ev stat.jpg]]<br />
<br />
<br />
===Рекомендации Flurry к событиям===<br />
* Составьте цели и план действий вокруг приложения<br />
* Если Вы хотите изменять функционал - отслеживайте его<br />
* Убедитесь что Вы собираете события вокруг навигации и монетизации<br />
* Имена событий должны легко различаться и поддаваться категоризации<br />
* Используйте временные события. Flurry автоматически разобьёт их по группам и Вы получите наглядную информацию.<br />
* Не тратьте много времени на планирование. Вы можете добавить события позже.<br />
<br />
[http://support.flurry.com/index.php?title=Analytics/GettingStarted/Events Рекомендации Flurry к параметрам]<br />
<br />
=== Отправка объектом Economics Flurry событий и параметров ===<br />
<br />
Объект Economicsавтоматически оправляет следующие Flurry события и параметры:<br />
<br />
1) При достижении уровня - '''xplevel_ <i> _reached''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*xplevel - Уровень опыта<br />
*coins_spent_log - Сколько потрачено монет<br />
*coins_left_log - Сколько осталось монет<br />
*diams_spent - Сколько потрачено кристаллов<br />
*diams_left - Сколько осталось кристаллов<br />
*hints_used - Сколько хинтов использовано<br />
<br />
2) При покупке в банке - '''purchase_ok_<item>''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*price_usd - Цена в долларах<br />
*history - История покупок через запятую<br />
*total_usd - Сколько суммарно потрачено денег<br />
*last_location - Последняя локация<br />
*last_task - Последняя мода<br />
*was_discount - Была ли скидка<br />
*from_hidden - 1-из хиддена, 0 -из меню<br />
*last_anomaly - Последняя аномалия<br />
<br />
3) При первой покупке энергии - '''1st_run_buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
4) При первом использовании энергии - '''1st_run_use_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
5) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
6) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
7) При покупке хинтов - '''buy_hints''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*was_anomaly - 1 - да, 0 -нет<br />
<br />
8) При покупке амулетов - '''buy_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
9) При использовании амулетов - '''use_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
10) При покупке чарджеров - '''buy_chargers''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
11) При покупке доступов к локациям - '''buy_keys''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
12) При покупке ингридиентов для крафта - ''' buy_Ingridients''' (buy_parts):<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
13) При покупке ингридиентов для крафта - ''' buy_Ingridients''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
14) Периодически при изменении игрового времени - '''t_log_play_N''':<br />
*'''usd_spent''' - количество потраченных $(берётся из опций - '''total_usd''' (глобально));<br />
*'''hints_used_total''' - количество исспользованых хинтов (берётся из опций - '''hints_used_total''' (из пользователя));<br />
*'''num_loc''' - количество сыгранных локаций;<br />
*'''minigames_play_count''' - количество сыгранных монстров;<br />
*'''t_log_play''' - Время логарифмическое игровое<br />
*'''t_log_cal''' - Время логарифмическое календарное<br />
*'''diams_price''' - Цена в кристаллах<br />
*'''coins_price''' - Цена в монетках<br />
*'''xp_level''' - Уровень пользователя<br />
<br />
=== Перечень source для событий coins_get, energy_get, diams_get===<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21, //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23, //!< CONTEST_PRIZE<br />
SOURCE_HID356_1 = 31, //!< SOURCE_HID356_1 - специальный источник, под Ваш проект - награда №1 за механику, которую реализуется не встроенным объектом (движковым)<br />
SOURCE_HID356_2 = 32, //!< SOURCE_HID356_2<br />
SOURCE_HID356_3 = 33, //!< SOURCE_HID356_3<br />
SOURCE_HID356_4 = 34, //!< SOURCE_HID356_4<br />
SOURCE_HID356_5 = 35, //!< SOURCE_HID356_5<br />
SOURCE_HID356_6 = 36, //!< SOURCE_HID356_6<br />
SOURCE_HID356_7 = 37, //!< SOURCE_HID356_7<br />
SOURCE_HID356_8 = 38, //!< SOURCE_HID356_8<br />
SOURCE_HID356_9 = 39 //!< SOURCE_HID356_9<br />
<br />
<br />
== Ограничения для разных сервисов статистики ==<br />
* Flurry:<br />
** 300 уникальных имен событий,<br />
** 10 параметров,<br />
на данный момент отображаются топ-500 значений параметров для каждого события<br />
* FaceBook:<br />
** 1000 уникальных имен событий,<br />
** 25 параметров,<br />
** Максимальное кол-во символов в значении параметра - 100<br />
* Amazon:<br />
** 1500 уникальных пользовательских имен событий<br />
** 40 параметров,<br />
** Максимальное кол-во символов в названии параметра - 50,<br />
** Максимальное кол-во символов в значении параметра - 200<br />
<br />
<br />
[[Category:Options]]<br />
[[Category:Реклама]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Flurry&diff=9479Flurry2018-03-16T10:09:20Z<p>Sadovoy: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] '''flurry''' используется для сбора статистики об использовании приложения. <br />
<br />
По умолчанию записывает такие параметры как время сессии, количество сессий, устройство, версия ОС, количество пользователей, и представляет эти данные в виде графиков и таблиц. Также можно записать какие кнопки нажимались, время между нажатиями определённых кнопок. Для сбора общих данных достаточно добавить в соответствующем виде flurry-id приложения в app.icf или в viewer.xml соответствующей платформы перед сборкой. Для сбора данных о нажатиях кнопок и др. необходимо кроме добавления flurry-id приложения в app.icf или в viewer.xml соответствующей платформы, также добавить в проект объект типа flurry и передавать ему интересующие события.<br />
<br />
Общая статистика на сервисе Flurry выглядит примерно так:<br />
<br />
[[Файл:Flurry sum stat.jpg]]<br />
<br />
==Параметры и состояния объекта flurry==<br />
<br />
===Параметры объекта flurry===<br />
<br />
Чтобы в игре установить сбор статистики нажатий определённых кнопок необходимо в редакторе сцен добавить объект Flurry (желательно на глобальный экран) и передать ему определённые параметры.<br />
У объекта flurry есть 3 параметра которые можно задавать. Это:<br />
* '''event''' - задаёт имя события<br />
* '''param_name''' - задаёт имя параметра<br />
* '''param_value''' - задаёт значение параметра<br />
Для корректной работы сбора статистики с нажатия кнопки все три поля должны быть обязательно заполнены.<br />
Рассмотрим принцип формирования названий событий на примере кнопки выбора пака в пазлах.<br />
<br />
Параметр '''''event''''' должен обозначить общее название группы событий, на пример ''Pack_select'';<br />
<br />
Параметр '''''param_name''''' должен указывать на конкретный параметр который будет записываться, в нашем случае его можно назвать ''pack_name'';<br />
<br />
Параметр '''''param_value''''' задаёт конкретное значение параметра, на пример ''pack_1''.<br />
<br />
=== Добавляемые параметры ===<br />
<br />
[[Файл:+.png]] '''обязательный параметр''' - для каждого эвента будем добавлять указанный параметр.<br />
*'''имя''' - имя параметра.<br />
*'''поле''' - поле в опциях (только из пользователя).<br />
<br />
===Состояния объекта flurry===<br />
<br />
* '''event''' - отправляет накопленные данные<br />
<br />
В самом объекте flurry можно задать начальные параметры, но при изменении его параметров те которые были - изменятся, а если до изменения параметров перевести объект flurry в состояние event, то на сервер статистики отправятся значения по-умолчанию, которые были записаны.<br />
<br />
* '''send_log''' - отправляет файл walkthrough.log на сервер<br />
<br />
В файл walkthrough.log флури пишет прохождение по игре: каждая строка лога содержит значения ключевых параметров (опыт, монеты, кристаллы, последний выполненный таск и т.д.) на момент записи, запись новой строки вызывается при наступлении различных событий (повышение уровня, начисление ресурса, выполнение задния и т.д.)<br />
<br />
Внимание!!! В проекте, собранном без дебага, лог не пишется. Для логирования прохождения без дебага нужно в app.icf в группе Flurry указать log_walkthrough = 1 (это касается файла walkthrough.log). С дебагом будет логироваться вне зависимости от этого.<br />
<br />
==Пример применения объекта flurry==<br />
<br />
Пример того как кнопка отправляет на сервер информацию о том, что она была нажата:<br />
<br />
[[Файл:Flurry button.jpg]]<br />
<br />
В данном случае кнопка записывает событие, название параметра, значение параметра, и сразу отправляет на сервер статистики.<br />
<br />
<br />
==Настройки приложения для отправки статистики==<br />
<br />
'''Для отправки статистики также необходимо добавить flurry-id в app.icf или в viewer.xml соответствующей платформы.'''<br />
Т.к. нагляднее выглядит статистика отдельно для платформы ios и отдельно для android, а также поскольку сервис предоставляет разные flurry-sdk для каждой из платформ, то flurry-id лучше всего вставлять в viewer.xml соответствующей платформы.<br />
<br />
В app.icf необходимо добавить строки:<br />
<br />
'''''[Flurry]'''''<br />
<br />
'''''game_id="здесь указывается flurry-id приложения"'''''<br />
<br />
или добавить в viewer.xml соответствующей платформы такую строку после globaltop, если таковой имеется, если его нет, то после настроек банеров (<banners platform_id="".../>):<br />
<br />
'''''<flurry game_id="здесь указывается flurry-id приложения"/>'''''<br />
<br />
==Реклама==<br />
<br />
Управление показом рекламы идёт через объект типа [[Advertisement]].<br />
<br />
В объекте [[Advertisement]] в качестве провайдера должен быть указан объект типа flurry и должны быть указаны '''тип''', '''space''', '''size'''.<br />
<br />
Также в [[app.icf]] или [[viewer.xml]] должен быть указан flurry id приложения, согласно ему идет работа банерной системы.<br />
<br />
Кроме этого в итоговый ''AndroidManifest.xml'' должны быть добавлены следующие строки:<br />
<br />
<pre><br />
<br />
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"<br />
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode" <br />
android:hardwareAccelerated="true" ><br />
</activity><br />
<br />
</pre><br />
<br />
Также должно быть следующее разрешение:<br />
<br />
<pre><br />
<br />
<uses-permission android:name="android.permission.INTERNET"/><br />
<br />
</pre><br />
<br />
<br />
<br />
==Примечания==<br />
<br />
Исходя из значений параметров будет строиться на сервисе Flurry диаграмма по параметру указанному в ''param_name''. К примеру, если для одной кнопки зададим в ''param_value'' значение ''pack_1'', второй кнопке зададим значение ''pack_2'', то в итоге, на странице сервиса в статистике приложения в раздеде Events получим список событий, которые были записаны, если выберем событие и выберем отобразить статистику по параметрам, для наглядности в круговой диаграмме, то увидим круговую диаграмму с долями которые занимает определённый параметр. Доли высчитываются исходя из количества пришедших значений параметров, то есть если 3 раза придёт значение ''pack_1'' и один раз придёт значение ''pack_2'', то доля ''pack_1'' будет 75%, а ''pack_2'' - 25% . <br />
<br />
Также можно выбрать из выпадающего списка по каким параметрам(которые указывались в '''''param_name''''' в рамках текущего имени события) необходимо отобразить статистику по значениям параметра.<br />
<br />
[[Файл:Flurry ev stat.jpg]]<br />
<br />
<br />
===Рекомендации Flurry к событиям===<br />
* Составьте цели и план действий вокруг приложения<br />
* Если Вы хотите изменять функционал - отслеживайте его<br />
* Убедитесь что Вы собираете события вокруг навигации и монетизации<br />
* Имена событий должны легко различаться и поддаваться категоризации<br />
* Используйте временные события. Flurry автоматически разобьёт их по группам и Вы получите наглядную информацию.<br />
* Не тратьте много времени на планирование. Вы можете добавить события позже.<br />
<br />
[http://support.flurry.com/index.php?title=Analytics/GettingStarted/Events Рекомендации Flurry к параметрам]<br />
<br />
=== Отправка объектом Economics Flurry событий и параметров ===<br />
<br />
Объект Economicsавтоматически оправляет следующие Flurry события и параметры:<br />
<br />
1) При достижении уровня - '''xplevel_ <i> _reached''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*xplevel - Уровень опыта<br />
*coins_spent_log - Сколько потрачено монет<br />
*coins_left_log - Сколько осталось монет<br />
*diams_spent - Сколько потрачено кристаллов<br />
*diams_left - Сколько осталось кристаллов<br />
*hints_used - Сколько хинтов использовано<br />
<br />
2) При покупке в банке - '''purchase_ok_<item>''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*price_usd - Цена в долларах<br />
*history - История покупок через запятую<br />
*total_usd - Сколько суммарно потрачено денег<br />
*last_location - Последняя локация<br />
*last_task - Последняя мода<br />
*was_discount - Была ли скидка<br />
*from_hidden - 1-из хиддена, 0 -из меню<br />
*last_anomaly - Последняя аномалия<br />
<br />
3) При первой покупке энергии - '''1st_run_buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
4) При первом использовании энергии - '''1st_run_use_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
5) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
6) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
7) При покупке хинтов - '''buy_hints''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*was_anomaly - 1 - да, 0 -нет<br />
<br />
8) При покупке амулетов - '''buy_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
9) При использовании амулетов - '''use_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
10) При покупке чарджеров - '''buy_chargers''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
11) При покупке доступов к локациям - '''buy_keys''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
12) При покупке ингридиентов для крафта - ''' buy_Ingridients''' (buy_parts):<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
13) При покупке ингридиентов для крафта - ''' buy_Ingridients''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
14) Периодически при изменении игрового времени - '''t_log_play_N''':<br />
*'''usd_spent''' - количество потраченных $(берётся из опций - '''total_usd''');<br />
*'''hints_used_total''' - количество исспользованых хинтов (берётся из опций - '''hints_used_total''');<br />
*'''num_loc''' - количество сыгранных локаций;<br />
*'''minigames_play_count''' - количество сыгранных монстров;<br />
*'''t_log_play''' - Время логарифмическое игровое<br />
*'''t_log_cal''' - Время логарифмическое календарное<br />
*'''diams_price''' - Цена в кристаллах<br />
*'''coins_price''' - Цена в монетках<br />
*'''xp_level''' - Уровень пользователя<br />
<br />
=== Перечень source для событий coins_get, energy_get, diams_get===<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15, //!< использование предмета<br />
SOURCE_PET_GOLD_COLLECTED = 16, //!< собрали бонус животного у пэта<br />
SOURCE_PET_COLLECTION_GOT = 17, //!< сдача коллекции животных<br />
SOURCE_SLOTMACHINE = 18, //!< слотмашина<br />
SOURCE_RPGBATTLE = 19, //!< псевдоРПГ бой<br />
SOURCE_SLOTFALLING = 20, //!< вторая слотмашина<br />
SOURCE_MAP_CHEST = 21, //!< сундуки на карте<br />
SOURCE_ADVERTISEMENT = 22, //!< реклама<br />
SOURCE_CONTEST_PRIZE = 23, //!< CONTEST_PRIZE<br />
SOURCE_HID356_1 = 31, //!< SOURCE_HID356_1 - специальный источник, под Ваш проект - награда №1 за механику, которую реализуется не встроенным объектом (движковым)<br />
SOURCE_HID356_2 = 32, //!< SOURCE_HID356_2<br />
SOURCE_HID356_3 = 33, //!< SOURCE_HID356_3<br />
SOURCE_HID356_4 = 34, //!< SOURCE_HID356_4<br />
SOURCE_HID356_5 = 35, //!< SOURCE_HID356_5<br />
SOURCE_HID356_6 = 36, //!< SOURCE_HID356_6<br />
SOURCE_HID356_7 = 37, //!< SOURCE_HID356_7<br />
SOURCE_HID356_8 = 38, //!< SOURCE_HID356_8<br />
SOURCE_HID356_9 = 39 //!< SOURCE_HID356_9<br />
<br />
<br />
== Ограничения для разных сервисов статистики ==<br />
* Flurry:<br />
** 300 уникальных имен событий,<br />
** 10 параметров,<br />
на данный момент отображаются топ-500 значений параметров для каждого события<br />
* FaceBook:<br />
** 1000 уникальных имен событий,<br />
** 25 параметров,<br />
** Максимальное кол-во символов в значении параметра - 100<br />
* Amazon:<br />
** 1500 уникальных пользовательских имен событий<br />
** 40 параметров,<br />
** Максимальное кол-во символов в названии параметра - 50,<br />
** Максимальное кол-во символов в значении параметра - 200<br />
<br />
<br />
[[Category:Options]]<br />
[[Category:Реклама]]</div>Sadovoyhttps://wiki.appsalutecreator.com/index.php?title=Flurry&diff=9478Flurry2018-03-16T10:01:16Z<p>Sadovoy: /* Отправка объектом Economics Flurry событий и параметров */</p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] '''flurry''' используется для сбора статистики об использовании приложения. <br />
<br />
По умолчанию записывает такие параметры как время сессии, количество сессий, устройство, версия ОС, количество пользователей, и представляет эти данные в виде графиков и таблиц. Также можно записать какие кнопки нажимались, время между нажатиями определённых кнопок. Для сбора общих данных достаточно добавить в соответствующем виде flurry-id приложения в app.icf или в viewer.xml соответствующей платформы перед сборкой. Для сбора данных о нажатиях кнопок и др. необходимо кроме добавления flurry-id приложения в app.icf или в viewer.xml соответствующей платформы, также добавить в проект объект типа flurry и передавать ему интересующие события.<br />
<br />
Общая статистика на сервисе Flurry выглядит примерно так:<br />
<br />
[[Файл:Flurry sum stat.jpg]]<br />
<br />
==Параметры и состояния объекта flurry==<br />
<br />
===Параметры объекта flurry===<br />
<br />
Чтобы в игре установить сбор статистики нажатий определённых кнопок необходимо в редакторе сцен добавить объект Flurry (желательно на глобальный экран) и передать ему определённые параметры.<br />
У объекта flurry есть 3 параметра которые можно задавать. Это:<br />
* '''event''' - задаёт имя события<br />
* '''param_name''' - задаёт имя параметра<br />
* '''param_value''' - задаёт значение параметра<br />
Для корректной работы сбора статистики с нажатия кнопки все три поля должны быть обязательно заполнены.<br />
Рассмотрим принцип формирования названий событий на примере кнопки выбора пака в пазлах.<br />
<br />
Параметр '''''event''''' должен обозначить общее название группы событий, на пример ''Pack_select'';<br />
<br />
Параметр '''''param_name''''' должен указывать на конкретный параметр который будет записываться, в нашем случае его можно назвать ''pack_name'';<br />
<br />
Параметр '''''param_value''''' задаёт конкретное значение параметра, на пример ''pack_1''.<br />
<br />
=== Добавляемые параметры ===<br />
<br />
[[Файл:+.png]] '''обязательный параметр''' - для каждого эвента будем добавлять указанный параметр.<br />
*'''имя''' - имя параметра.<br />
*'''поле''' - поле в опциях (только из пользователя).<br />
<br />
===Состояния объекта flurry===<br />
<br />
* '''event''' - отправляет накопленные данные<br />
<br />
В самом объекте flurry можно задать начальные параметры, но при изменении его параметров те которые были - изменятся, а если до изменения параметров перевести объект flurry в состояние event, то на сервер статистики отправятся значения по-умолчанию, которые были записаны.<br />
<br />
* '''send_log''' - отправляет файл walkthrough.log на сервер<br />
<br />
В файл walkthrough.log флури пишет прохождение по игре: каждая строка лога содержит значения ключевых параметров (опыт, монеты, кристаллы, последний выполненный таск и т.д.) на момент записи, запись новой строки вызывается при наступлении различных событий (повышение уровня, начисление ресурса, выполнение задния и т.д.)<br />
<br />
Внимание!!! В проекте, собранном без дебага, лог не пишется. Для логирования прохождения без дебага нужно в app.icf в группе Flurry указать log_walkthrough = 1 (это касается файла walkthrough.log). С дебагом будет логироваться вне зависимости от этого.<br />
<br />
==Пример применения объекта flurry==<br />
<br />
Пример того как кнопка отправляет на сервер информацию о том, что она была нажата:<br />
<br />
[[Файл:Flurry button.jpg]]<br />
<br />
В данном случае кнопка записывает событие, название параметра, значение параметра, и сразу отправляет на сервер статистики.<br />
<br />
<br />
==Настройки приложения для отправки статистики==<br />
<br />
'''Для отправки статистики также необходимо добавить flurry-id в app.icf или в viewer.xml соответствующей платформы.'''<br />
Т.к. нагляднее выглядит статистика отдельно для платформы ios и отдельно для android, а также поскольку сервис предоставляет разные flurry-sdk для каждой из платформ, то flurry-id лучше всего вставлять в viewer.xml соответствующей платформы.<br />
<br />
В app.icf необходимо добавить строки:<br />
<br />
'''''[Flurry]'''''<br />
<br />
'''''game_id="здесь указывается flurry-id приложения"'''''<br />
<br />
или добавить в viewer.xml соответствующей платформы такую строку после globaltop, если таковой имеется, если его нет, то после настроек банеров (<banners platform_id="".../>):<br />
<br />
'''''<flurry game_id="здесь указывается flurry-id приложения"/>'''''<br />
<br />
==Реклама==<br />
<br />
Управление показом рекламы идёт через объект типа [[Advertisement]].<br />
<br />
В объекте [[Advertisement]] в качестве провайдера должен быть указан объект типа flurry и должны быть указаны '''тип''', '''space''', '''size'''.<br />
<br />
Также в [[app.icf]] или [[viewer.xml]] должен быть указан flurry id приложения, согласно ему идет работа банерной системы.<br />
<br />
Кроме этого в итоговый ''AndroidManifest.xml'' должны быть добавлены следующие строки:<br />
<br />
<pre><br />
<br />
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"<br />
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode" <br />
android:hardwareAccelerated="true" ><br />
</activity><br />
<br />
</pre><br />
<br />
Также должно быть следующее разрешение:<br />
<br />
<pre><br />
<br />
<uses-permission android:name="android.permission.INTERNET"/><br />
<br />
</pre><br />
<br />
<br />
<br />
==Примечания==<br />
<br />
Исходя из значений параметров будет строиться на сервисе Flurry диаграмма по параметру указанному в ''param_name''. К примеру, если для одной кнопки зададим в ''param_value'' значение ''pack_1'', второй кнопке зададим значение ''pack_2'', то в итоге, на странице сервиса в статистике приложения в раздеде Events получим список событий, которые были записаны, если выберем событие и выберем отобразить статистику по параметрам, для наглядности в круговой диаграмме, то увидим круговую диаграмму с долями которые занимает определённый параметр. Доли высчитываются исходя из количества пришедших значений параметров, то есть если 3 раза придёт значение ''pack_1'' и один раз придёт значение ''pack_2'', то доля ''pack_1'' будет 75%, а ''pack_2'' - 25% . <br />
<br />
Также можно выбрать из выпадающего списка по каким параметрам(которые указывались в '''''param_name''''' в рамках текущего имени события) необходимо отобразить статистику по значениям параметра.<br />
<br />
[[Файл:Flurry ev stat.jpg]]<br />
<br />
<br />
===Рекомендации Flurry к событиям===<br />
* Составьте цели и план действий вокруг приложения<br />
* Если Вы хотите изменять функционал - отслеживайте его<br />
* Убедитесь что Вы собираете события вокруг навигации и монетизации<br />
* Имена событий должны легко различаться и поддаваться категоризации<br />
* Используйте временные события. Flurry автоматически разобьёт их по группам и Вы получите наглядную информацию.<br />
* Не тратьте много времени на планирование. Вы можете добавить события позже.<br />
<br />
[http://support.flurry.com/index.php?title=Analytics/GettingStarted/Events Рекомендации Flurry к параметрам]<br />
<br />
=== Отправка объектом Economics Flurry событий и параметров ===<br />
<br />
Объект Economicsавтоматически оправляет следующие Flurry события и параметры:<br />
<br />
1) При достижении уровня - '''xplevel_ <i> _reached''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*xplevel - Уровень опыта<br />
*coins_spent_log - Сколько потрачено монет<br />
*coins_left_log - Сколько осталось монет<br />
*diams_spent - Сколько потрачено кристаллов<br />
*diams_left - Сколько осталось кристаллов<br />
*hints_used - Сколько хинтов использовано<br />
<br />
2) При покупке в банке - '''purchase_ok_<item>''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*price_usd - Цена в долларах<br />
*history - История покупок через запятую<br />
*total_usd - Сколько суммарно потрачено денег<br />
*last_location - Последняя локация<br />
*last_task - Последняя мода<br />
*was_discount - Была ли скидка<br />
*from_hidden - 1-из хиддена, 0 -из меню<br />
*last_anomaly - Последняя аномалия<br />
<br />
3) При первой покупке энергии - '''1st_run_buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
4) При первом использовании энергии - '''1st_run_use_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
5) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
6) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
7) При покупке хинтов - '''buy_hints''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*was_anomaly - 1 - да, 0 -нет<br />
<br />
8) При покупке амулетов - '''buy_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
9) При использовании амулетов - '''use_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
10) При покупке чарджеров - '''buy_chargers''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
11) При покупке доступов к локациям - '''buy_keys''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
12) При покупке ингридиентов для крафта - ''' buy_Ingridients''' (buy_parts):<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
13) При покупке ингридиентов для крафта - ''' buy_Ingridients''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
14) При изменении игрового времени () - '''t_log_play_N''':<br />
*'''usd_spent''' - количество потраченных $(берётся из опций - '''total_usd''');<br />
*'''hints_used_total''' - количество исспользованых хинтов (берётся из опций - '''hints_used_total''');<br />
*'''num_loc''' - количество сыгранных локаций;<br />
*'''minigames_play_count''' - количество сыгранных монстров;<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
=== Перечень source для событий coins_get, energy_get, diams_get===<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15 //!< использование предмета<br />
<br />
== Ограничения для разных сервисов статистики ==<br />
* Flurry:<br />
** 300 уникальных имен событий,<br />
** 10 параметров,<br />
на данный момент отображаются топ-500 значений параметров для каждого события<br />
* FaceBook:<br />
** 1000 уникальных имен событий,<br />
** 25 параметров,<br />
** Максимальное кол-во символов в значении параметра - 100<br />
* Amazon:<br />
** 1500 уникальных пользовательских имен событий<br />
** 40 параметров,<br />
** Максимальное кол-во символов в названии параметра - 50,<br />
** Максимальное кол-во символов в значении параметра - 200<br />
<br />
<br />
[[Category:Options]]<br />
[[Category:Реклама]]</div>Sadovoy