https://wiki.appsalutecreator.com/api.php?action=feedcontributions&user=Mlipa&feedformat=atomwiki.appsalutecreator.com - Вклад участника [ru]2024-03-29T08:36:48ZВклад участникаMediaWiki 1.31.15https://wiki.appsalutecreator.com/index.php?title=Economics&diff=9697Economics2018-08-08T11:44:10Z<p>Mlipa: </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 />
*'''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 />
<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B_%D1%88%D1%80%D0%B8%D1%84%D1%82%D0%BE%D0%B2&diff=9689Подготовка и форматы шрифтов2018-08-02T11:36:21Z<p>Mlipa: </p>
<hr />
<div>Шрифты позволяют использовать меньше памяти по сравнению с текстом на картинках. <br />
Viewer использует TTF шрифты. В состав редактора поставляются шрифты только с ознакомительными целями и не могут быть использованы в коммерческом продукте. <br />
<br />
Параметры шрифта<br />
<br />
['''GxFont''']<br />
<br />
'''CacheTextureMaxSize=1024''' - Резервирует кэш для текстуры размером 1024*1024 пикс. B памяти устройства будет отведено 2 mb для каждого шрифта используемого на экране. <br />
<br />
'''[Fonts]'''<br />
<br />
'''font_1="1_arial_16"''' - имя шрифта используемое в редакторе - font_1 - 1, font_2 - 2, font_3 - 3 и название файла который будет использоваться для выбранного имени. В данном случае в редакторе в качестве шрифта "1" будет использован ''1_arial_16.ttf''<br />
<br />
'''size_1=16''' - размер шрифта для формирования текстуры (чем больше значение, тем меньше знаков поместятся на текстуре. Необходимо будет увеличивать значение ''CacheTextureMaxSize=1024'' что приведет к излишнему использованию памяти). '''Значение по умолчанию - 16'''<br />
<br />
'''chars_1=256''' - Число знаков помещенных в кеш для отрисовки в единицу времени на экране. Иначе говоря - максимальное количество разных знаков, которое может отображаться на отдельных экранах. '''Значение по умолчанию - 100'''<br />
* Так как шрифт обычно содержит множество неиспользуемых символов желательно перед использованием шрифта удалить из него все неиспользуемые знаки. <br />
<br />
* Если в параметрах ''size'' и ''chars'' указаны большие значения, то некоторые символы могут не поместиться в текстуру и не будут отображаться, для решения этой проблемы надо или уменьшить значения параметров ''size'' и ''chars'', или увеличить размер текстуры.<br />
<br />
Пример:<br />
<br />
<pre><br />
[GxFont]<br />
CacheTextureMaxSize=1024<br />
<br />
[Fonts]<br />
font_1="1_arial_16"<br />
size_1=16<br />
chars_1=256<br />
font_2="2_ariblk_16"<br />
size_1=16<br />
chars_1=256<br />
font_3="3_artpuzzle_16"<br />
size_1=16<br />
chars_1=256<br />
font_4="4_comicbd_16"<br />
size_1=16<br />
chars_1=256<br />
font_5="5_gemelli_16"<br />
size_1=16<br />
chars_1=256<br />
</pre><br />
<br />
<br />
При работе с редактором используемые шрифты должны находиться в каталоге '''\res''' и быть указаны в файле '''[[app.icf]]''', который находится в папке с редактором, для сборки шрифты должны быть указаны в '''[[app.icf]]''' который находится в каталоге '''\system\temp\projects\Absolutist\project\common''', при сборке все указанные шрифты будут скопированы из каталога '''\res'''.<br />
<br />
<br />
[[Файл:Fonts.png|600px|thumb|left]]<br />
<br />
Также шрифты должны находиться в Базе Ресурсов. С помощью Редактора Ресурсов можно найти их там и настроить. Например, на скрине шрифт ARIALN_0 для немецкого языка будет уменьшен до 75% от натуральной величины, а для других языков до 80%. Тут же можно добавлять или удалять коэффициенты размера для определенных локализаций.<br />
<br />
[[Category:Projects]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Fonts.png&diff=9688Файл:Fonts.png2018-08-02T11:30:12Z<p>Mlipa: </p>
<hr />
<div></div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Counter&diff=9675Counter2018-08-01T12:30:50Z<p>Mlipa: </p>
<hr />
<div>[[Файл:Counte.jpg|right]]<br />
'''Counter''' - [[Object|объект]], который хранит значение целого положительного числа, значение которого могут изменять другие объекты. Используется для визуализации числа сделанных ходов или кликов в игре, количества оставшихся подсказок и т.п. Он может быть скрыт и использоваться для хранения целого числа, необходимого для работы других объектов, например, [[Machine|машинами состояний]].<br />
== Общие параметры ==<br />
Смотреть описание [[Object|Object]].<br />
== Основные параметры ==<br />
*'''res''' ('' res '') - Графический ресурс для отображения цифр ([[Интерфейс_ResourceEditor|анимированный клип]] из 10 фреймов: первый фрейм - 0, последний 9). Перетаскивается мышкой из редактора ресурсов.<br />
*'''res neg''' ('' resneg '') - Графический ресурс для отображения отрицательных чисел (анимированный клип из 10 фреймов: первый фрейм - 0, последний 9). Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). 11 фрейм - минус, если он есть.<br />
*'''отладка''' ('' trace '') - Отображать в окне состояний текущий объект<br />
*'''min''' ('' min '') - Минимальное значение счетчика.<br />
*'''max''' ('' max'') - Максимальное значение счетчика.<br />
*'''val''' ('' val '') - Начальное (текущее) значение счетчика.<br />
*'''val2''' ('' val2 '') - Дополнительное значение счетчика. Только для время == 2.<br />
*'''new_val''' ('' new_val '') - Новое значение. Будет записано в val при вызове состояния save.<br />
*'''шаг (inc, dec)''' ('' dval '') - Величина, на которую изменяется счетчик при inc и dec ( min=1) ( если меняем значение во вьювере, после задания значения - инитим счётчик).<br />
*'''dx между цифрами''' ('' digShift '') - Расстояние между цифрами.<br />
*'''выравнивание''' ('' left ''):<br />
:'''1''' - число будет выравниваться по левому краю (цифры числа сдвигаются слева направо); <br />
:'''2''' - будет выравниваться по центру;<br />
:'''0''' - выравнивание по правому краю.<br />
*'''время''' ('' time ''):<br />
:'''1''' - число будет считаться временем в секундах и отображаться в виде mm:ss. Двоеточие должно быть 11 кадром графического ресурса;<br />
:'''2''' - будет отображаться разделитель и второе значение из поля val2, разделитель также из 11 кадра графики;<br />
:'''3''' - "нет (улучш.)" - поставив параметр время в это значение, каунтер будет правильно выравниваться в соответствии с параметром "выравнивание". <br />
:'''0''' - будет отображенно число без форматирование во временную единицу.<br />
*'''отображать дробную часть''' ('' showfloat '') - Отображать дробную часть<br />
*'''разрядов не менее''' ('' digitsnum'') - отображает минимально фиксированное число разрядов(как на счётчиках) например при значении параметра 5 и значении счётчика 18 будет отображаться 00018.<br />
'''Группа - времена''':<br />
:'''невидимости''' ('' tmBeg '') - Время невидимости перед открытием;<br />
:'''открытия''' ('' tmOpn '') - Время проявления от полной прозрачности к прозрачности, заданной в модификаторах;<br />
:'''закрытия''' ('' tmCls '') - Время исчезания до полной прозрачности;<br />
:'''изменения''' ('' tmChg '') - Время, за которое счетчик изменяется (inc, dec);<br />
:'''шага изменения''' ('' tmChgIt '') - Скорость, с которой счетчик изменяется (inc, dec).<br />
:'''скорость изменения''' ('' velChg'') - Время промежутков, через которые происходит обновление счетчика при изменении (inc, dec).<br />
*'''сохранять в профиль''' ('' prof ''):<br />
:'''1''' - значение будет сохранено в текущий профиль;<br />
:'''0''' - сохранено глобально.<br />
*'''игра''' ('' game '') - Имя игры (раздела в опциях), который надо вычитать для получения начального значения счетчика (например, для отображения результатов).<br />
*'''уровень''' ('' level '') - Имя уровня (параметра в разделе игра - см.выше), который надо вычитать для получения начального значения счетчика (например, для отображения результатов). Раздел равен: game.level.<br />
<br />
*'''Группа - шрифт''':<br />
:'''имя''' ('' fn ''):<br />
::'''число, начиная с 0''' - порядковый номер шрифта (чтобы отобразился шрифт, нужно каунтеру задать ресурс (res), ресурс во вьювере отображён не будет);<br />
::'''-1''' - рисовать каунтер клипами.<br />
:'''размер''' ('' fs '') - Размер шрифта в пикселях;<br />
:'''цвет 1''' ('' fc '') - Цвет текста.<br />
<br />
<pre><br />
Счетчик может отображать отрицательные чиста.<br />
Если для отображения используется графика, то 11-ым кадром в анимации должен быть символ "минус".<br />
Если счетчик отображается шрифтом, то можно указать цвет отрицательных чисел.<br />
</pre><br />
<br />
== Добавляемые параметры ==<br />
<br />
<br />
[[Файл:Counte_1.png|right]]<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по нажатию правой кнопки мыши.<br />
<br />
<br />
[[Файл:+.png]] '''dec: при уменьшении изменить объект''' ('' decChg '') - При уменьшении значения счетчика, изменить объект:<br />
*'''объект''' ('' obj '') - При уменьшении значения счетчика, изменить этот объект;<br />
*'''состояние''' ('' obj '') - Состояние в которое переводится объект;<br />
*'''параметр''' ('' par '') - Параметр, который мы изменяем; <br />
*'''значение''' ('' st '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]] '''условие при котором происходят изменения из раздела dec''' ('' decIf '') - Условие при выполнении которого происходят изменения из раздела dec. Их может быть несколько (логический AND):<br />
*'''объект''' ('' obj '') - Объект, свойства которого мы проверяем;<br />
*'''состояние''' ('' st '') - Находится ли в этом состоянии объект;<br />
*'''параметр''' ('' par '') - Имеет ли объект параметр в значении следующего поля; <br />
*'''значение''' ('' val '') - Имеет ли объект параметр из следующего поля в этом значении;<br />
*'''куплено''' ('' val '') - Имя фичи для проверки её купленности;<br />
*'''нет''' ('' not '') : Это условие должно не выполняться:<br />
:'''1''' - если условие не выполняется, работает '''dec: при уменьшении изменить объект''';<br />
:'''0''' - если условие выполняется, работает '''dec: при уменьшении изменить объект'''.<br />
<br />
<br />
[[Файл:+.png]] '''при опускании под min изменить объект''' ('' minChg '') - При уменьшении значения счетчика ниже min, изменить объект:<br />
*'''объект''' ('' obj '') - При уменьшении значения счетчика ниже min, изменить этот объект;<br />
*'''состояние''' ('' st '') - Состояние в которое переводится объект;<br />
*'''параметр''' ('' par '') - Параметр, который мы изменяем; <br />
*'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]] '''условие при котором происходят изменения из раздела min''' ('' minIf '') - Условие при выполнении которого происходят изменения из раздела min. Их может быть несколько (логический AND):<br />
*'''объект''' ('' obj '') - Объект, свойства которого мы проверяем;<br />
*'''состояние''' ('' st '') - Находится ли в этом состоянии объект;<br />
*'''параметр''' ('' par '') - Имеет ли объект параметр в значении следующего поля; <br />
*'''значение''' ('' val '') - Имеет ли объект параметр из следующего поля в этом значении;<br />
*'''куплено''' ('' buy '') - Имя фичи для проверки её купленности;<br />
*'''нет''' ('' not '') : Это условие должно не выполняться:<br />
:'''1''' - если условие не выполняется, работает '''при опускании под min изменить объект''';<br />
:'''0''' - если условие выполняется, работает '''при опускании под min изменить объект'''.<br />
<br />
<br />
[[Файл:+.png]] '''inc: при увеличении изменить объект''' ('' incChg '') - При увеличении значения счетчика, изменить объект:<br />
*'''объект''' ('' obj '') - При уменьшении значения счетчика, изменить этот объект;<br />
*'''состояние''' ('' st '') - Состояние в которое переводится объект;<br />
*'''параметр''' ('' par '') - Параметр, который мы изменяем; <br />
*'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]] '''условие при котором происходят изменения из раздела inc''' ('' incIf '') - Условие при выполнении которого происходят изменения из раздела inc. Их может быть несколько (логический AND):<br />
*'''объект''' ('' obj '') - Объект, свойства которого мы проверяем;<br />
*'''состояние''' ('' st '') - Находится ли в этом состоянии объект;<br />
*'''параметр''' ('' par '') - Имеет ли объект параметр в значении следующего поля; <br />
*'''значение''' ('' val '') - Имеет ли объект параметр из следующего поля в этом значении;<br />
*'''куплено''' ('' buy '') - Имя фичи для проверки её купленности;<br />
*'''нет''' ('' not '') : Это условие должно не выполняться:<br />
:'''1''' - если условие не выполняется, работает '''inc: при увеличении изменить объект''';<br />
:'''0''' - если условие выполняется,работает '''inc: при увеличении изменить объект''';<br />
<br />
<br />
[[Файл:+.png]] '''при превышении max изменить объект''' ('' maxChg '') - При увеличении значения счетчика более max, изменить объект:<br />
*'''объект''' ('' obj '') - При увеличении значения счетчика более max, изменить этот объект;<br />
*'''состояние''' ('' st '') - Состояние в которое переводится объект;<br />
*'''параметр''' ('' par '') - Параметр, который мы изменяем; <br />
*'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]] '''условие при котором происходят изменения из раздела max''' ('' maxIf '') - Условие при выполнении которого происходят изменения из раздела max. Их может быть несколько (логический AND):<br />
*'''объект''' ('' obj '') - Объект, свойства которого мы проверяем;<br />
*'''состояние''' ('' st '') - Находится ли в этом состоянии объект;<br />
*'''параметр''' ('' par '') - Имеет ли объект параметр в значении следующего поля; <br />
*'''значение''' ('' val '') - Имеет ли объект параметр из следующего поля в этом значении;<br />
*'''куплено''' ('' buy '') - Имя фичи для проверки её купленности;<br />
*'''нет''' ('' not '') : Это условие должно не выполняться:<br />
:'''1''' - если условие не выполняется, работает '''при превышении max изменить объект''';<br />
:'''0''' - если условие выполняется,работает '''при превышении max изменить объект''';<br />
<br />
== Состояния ==<br />
<br />
Объект '''Counter''' обладает рядом состояний:<br />
*'''dec''' - Уменьшить значение счетчика на 1;<br />
*'''inc''' - Увеличить значение счетчика на 1;<br />
*'''min''' - Установить счетчик в минимальное значение;<br />
*'''max''' - Установить счетчик в максимальное значение;<br />
*'''init''' - Переинициализировать счетчик;<br />
*'''reset''' - Переустановить счетчик;<br />
*'''read''' - Прочитать значение счетчика из опций;<br />
*'''read_anim''' - Прочитать значение счетчика из поля в опциях; При этом: воспринимает параметры tmChg, tmChgIt, velChg. Это значит, что счетчик при передаче ему этого состояния, "прокручивает" графику до значения, считанного из опций. Это заменяет используемую связку последовательного изменения dval, передачи init и inc.<br />
*'''save''' - Сохранить значение счетчика в опции.<br />
<br />
== Пример ==<br />
<br />
<br />
В качестве графического ресурса в счетчик перетаскивается анимационный клип из 10 кадров<br />
с цифрами от 0 до 9 (кадров может быть больше, но первые 10 - это цифры). Диапазон изменения задается в полях '''min''', '''max'''. Начальное значение в поле '''val'''. Счетчик можно увеличивать или уменьшать, меняя ему состояния '''inc''' (увеличить на 1) и '''dec''' (уменьшить на 1).<br />
<br />
Рассмотрим пример использования. Пусть есть счетчик и четыре кнопки. При помощи клика правой кнопки мыши, добавим каждой кнопке раздел "изменить состояние объекта", в котором при нажатии на кнопку будет вызываться состояние счетчика '''dec''', '''inc''', '''min''', '''max''' соответственно.<br />
<center><br />
[[Файл:test_cnt_1.png]]<br />
</center><br />
В результате, при клике на кнопку '''inc''' будет происходить увеличение цифр 0 до 30 . После достижения максимальной границы, равной 30, счетчик перестанет увеличиваться. Аналогично, при клике на кнопку '''dec''', можно уменьшить значения счетчика. Клик на кнопку '''min''' и '''max''' переводят значение счетчика в минимальное и максимальное значение соответственно.<br />
<br />
По умолчанию, разряды числа счетчика сдвигаются справа налево от его положения в редакторе (неподвижен правый край числа). Если в свойствах счетчика поле "'''выравнивание'''" установить в 1, то неподвижным будет левый край. При значении этого параметра 2, неподвижным будет центр числа. Параметр "'''dx между цифрами'''" задает дополнительное расстояние между цифрами в числе (если он меньше нуля, цифры будут ближе).<br />
<br />
<br />
'''Прямое изменение значения.'''<br />
<br />
Значение счетчика можно изменить напрямую, например, их машины состояний:<br />
<pre><br />
st = "wait" <br />
{<br />
click { go="change" } // при клике - идем в состояние "change"<br />
}<br />
<br />
st = "change" <br />
{<br />
set { obj=counter par="val" val="5" } // меняем значение счетчика<br />
set { obj=counter st="reset" } // переустанавливаем его<br />
wait{ go="wait" }<br />
}<br />
</pre> <br />
При клике на машину, она переходит в состояние "change". <br />
В этом состоянии устанавливается параметр счетчика '''val''' в значение 5, после чего он перезапускается, переводясь в состояние "'''reset'''" (параметр '''val''' является строковым и счетчику его нужно перечитать, что и делается в состоянии "reset"). Аналогично счетчик можно было бы перевести в состояние "init", но тогда он бы полностью переинитился (обновились бы все его параметры из начальных настроек). В состоянии "reset" обновляется только поле "val".<br />
<br />
<br />
'''Достижение границ.'''<br />
<br />
Пусть после серии уменьшений счетчика (состояния "dec") он достиг минимального значения '''min''' и попытался снизиться ниже. Этого не произойдет (ограничения не дают выйти за них).<br />
При достижении границ счетчика можно изменить состояния или параметры других объектов.<br />
Для этого необходимо в свойствах при помощи правой кнопки мыши добавить раздел:<br />
<br />
[[Файл:+.png]] '''при опускании под min изменить объект''':<br />
:'''объект''' - При уменьшении значения счетчика ниже min, изменить этот объект;<br />
:'''состояние''' - Состояние в которое переводится объект;<br />
:'''параметр''' - Параметр, который мы изменяем;<br />
:'''значение''' - Новое значение параметра.<br />
<br />
При изменении параметра переинициализировать объект не надо (это произойдет автоматически).<br />
<br />
Подобных разделов может быть несколько. Если счетчик стал равным минимальному значению,<br />
а его продолжают пытаться уменьшить, каждый раз будет вызываться изменение состояний (параметров) из этих разделов.<br />
<br />
Пусть к примеру, разрешено 3 раза нажать на некоторую кнопку (например, хинт в игре). После 3-х изменений должно появляться окно с надписью "подсказки кончились" с кнопкой "close". При закрытии окна и повторной попытке нажать на кнопку, окно должно появляться снова.<br />
Это можно сделать при помощи счетчика, двух кнопок, и машины состояний в виде окна (верхняя таблица справа - это машина состояния окна, ниже - свойства кнопки и счетчика):<br />
<center><br />
[[Файл:counter3a.png]]<br />
</center><br />
<br />
<br />
'''Значение из options.'''<br />
<br />
Начальное значение счетчика можно задавать не только в редакторе (поле '''val'''), но и получать его сохраненное значение в [[Options|опциях игры]]. Пусть некоторая миниигра сохранила в опциях целое значение в переменной, например, с именем "scores". Тогда это значение будет присвоено счетчику, если в настройках счетчика в поле "уровень" написать "scores".<br />
<br />
Если помимо поля "уровень" задано поле "игра", то значение для счетчика будет искаться<br />
не в глобальных параметрах опций, а в разделе, определяемом полем "игра".<br />
Если строка в поле "игра" разделено точками, то они определяют подразделы.<br />
Так, если "уровень"="scores", а "игра"="puzzle.pack1", а xml файл options.xml <br />
будет выглядеть примерно так:<br />
<pre><br />
<obj nm="options" ><br />
<puzzle><br />
<pack1 scores="3" /><br />
</puzzle><br />
</obj><br />
</pre><br />
то начальное значение счетчика будет равно 3. Если такого раздела или поля не окажется,<br />
то счетчик будет невидимым.<br />
<br />
Напомним, что объект [[Options]] в игре существует в единственном экземпляре и должен находиться на экране, помеченном как глобальный.<br />
<br />
[[Category:Main objects]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Dressingtemplate&diff=9674Dressingtemplate2018-08-01T11:50:52Z<p>Mlipa: </p>
<hr />
<div>'''Dressingtemplate''' - [[Object|объект]] для реализации механики мини-игры "Гардероб", позволяющей переодеть персонажа.<br />
Является шаблоном для ячеек таблицы, содержащей надеваемые предметы.<br />
<br />
==Основные параметры==<br />
<br />
*'''alpha''' ''(al)'' - прозрачность<br />
*'''состояние''' ''(state)'' - начальное состояние<br />
*'''dressing''' ''(dressing)'' - объект-владелец, объект типа [[Dressing]]<br />
*'''иконка''' ''(icon)'' - иконка предмета (графический объект)<br />
*'''название''' ''(name)'' - название предмета (текстовый объект)<br />
*'''описание''' ''(dsc)'' - описание предмета (текстовый объект)<br />
*'''кнопка купить''' ''(btnBuy)'' - кнопка купить<br />
*'''кнопка надеть''' ''(btnWear)'' - кнопка надеть<br />
*'''кнопка продать''' ''(btnSell)'' - кнопка продать<br />
*'''кнопка ремонт''' ''(btnFix)'' - кнопка ремонт<br />
*'''кнопка ускорить''' ''(btnRush)'' - кнопка ускорить<br />
*'''цена покупки res1''' ''(cntBuyRes1)'' - цена покупки res1 (каунтер)<br />
*'''цена покупки res2''' ''(cntBuyRes1)'' - цена покупки res2 (каунтер)<br />
*'''цена продажи res1''' ''(cntSellRes2)'' - цена продажи res1 (каунтер)<br />
*'''цена продажи res2''' ''(cntSellRes1)'' - цена продажи res2 (каунтер)<br />
*'''цена ремонта res1''' ''(cntFixRes2)'' - цена ремонта res1 (каунтер)<br />
*'''цена ремонта res2''' ''(cntFixRes1)'' - цена ремонта res2 (каунтер)<br />
*'''надетый предмет''' ''(inUse)'' - картинка-галка для отображения на надетых предметах<br />
*'''замок по XP''' ''(lockXP)'' - картинка-замок для залоченного по XP<br />
*'''счетчик для XP''' ''(cntXP)'' - счетчик уровня ХР с которого предмет доступен (каунтер)<br />
*'''время ремонта''' ''(timeFix)'' - время ремонта (таймер)<br />
*'''прогресс износа''' ''(progWear)'' - прогресс износа<br />
*'''каунтер износа''' ''(cntWear)'' - счетчик износа (каунтер)<br />
*'''анимация покупки''' ''(animBuy)'' - анимация покупки<br />
*'''анимация ремонта''' ''(animFix)'' - анимация ремонта<br />
*'''таймер залочки''' ''(timerLock)'' - таймер залочки<br />
<br />
==Особенности==<br />
<br />
Dressingtemplate представляет собой шаблон того, как будут выглядеть ячейки таблицы [[Dressing]] (фон, кнопки, счетчики).<br />
<br />
Dressingtemplate не обязательно вкладывать внутрь [[Dressing]]. Однако сам Dressingtemplate должен быть контейнером для иконки, кнопок, счётчиков и прогресса, указанных в его полях. Дополнительно, также, можно вложить фоновую картинку. Все эти подобъекты будут раскопированы при заполнении ячеек таблицы по образцу (шаблону), которым и станет Dressingtemplate. Поэтому важна как очередность подобъектов, так и их координаты, с учетом размеров ячейки таблицы.<br />
<br />
Внизу указан скрин примера использования шаблона. Обратите внимание, что все объекты вложены в один объект, который, в свою очередь, вложен внутрь Dressingtemplate. Это сделано для удобства управления положением дочерних объектов и является необязательным.<br />
[[File:dressingtemplate_scr1.png|right]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Isomover&diff=9673Isomover2018-08-01T11:33:23Z<p>Mlipa: </p>
<hr />
<div>'''Isomover''' - [[Object|объект]] используется для осуществления движения и взаимодействия в изометрической карте. <br />
<br />
Isomover обязательно должен быть подобъектом [[isomap]]. <br />
<br />
В проекте с картой ([[isomap]]) и движущимися по ней объектами (isomover) часто используют [[economics]] и [[eitems]] потому, что для завершения процессов часто требуется применить предмет или ресурс.<br />
<br />
Начало движения множества изомуверов сильно нагружает систему, поэтому следует позаботиться, чтобы это происходило не в один момент времени. По возможности добавляйте небольшую и различную паузу каждому изомуверу перед стартом.<br><br><br />
==Основные параметры==<br />
*'''Положение''' (''x'',''y'') - рекомендуется выносить isomover-объекты за пределы карты. Иначе, если объект должен появляться не сразу, то он будет просто стоять без движения<br />
*'''Память''' - всегда должно быть значение 1, обязательное условие корректной работы. Это позволяет объекту двигаться последовательно, не инициализируясь после каждого движения в исходной точке<br />
*'''тип ребра min''' (''edge_t_min'') - перемещаться по ребрам не ниже заданного, -1 не проверять<br />
*'''тип ребра max''' (''edge_t_max'') - перемещаться по ребрам не выше заданного, -1 не проверять. Типы ребер задаются в isomap<br />
*'''Старт''' (''start'') - точка старта, выбирается из списка точек Isomap<br />
*'''Финиш''' (''finish'') - точка финиша, выбирается из списка точек Isomap<br />
*'''Скорость (макс)''' (''vel_max'') - максимальная скорость, с которой передвигается объект Isomover<br />
*'''Скорость''' (''vel'') - не использовать, вычисляется по формуле автоматически, позже будет скрыто. V = Vmax*(k+(1-k)*(P/Pmax))<br />
*'''Жизнь (макс)''' (''pow_max'') - максимальная жизнь<br />
*'''Жизнь''' (''pow'') - текущая жизнь, высчитывается по формуле автоматически<br />
*'''Сохранять жизнь в опции''' (''powsave'') - если да, то объекты сцены сохранят уровень жизни при выходе со сцены и возвращении на нее<br />
*'''Коэффициент скорости''' (''speed_k'') - коэффициент k в формуле расчета скорости. Чтобы скорость не зависела от значения жизни - указываем speed_k = 1<br />
*'''Менять угол''' (''fixangle'') - изменение угла для предания плавности смены графики при дугообразном перемещении объекта. С появлением 3D-объектов больше не используется<br />
*'''Тип''' (''mtype'') - объекты можно разделять на типы (люди, монстры, звери и т.д.). Взаимодействие происходит между объектами разных типов, настраивается в добавляемых параметрах<br />
*'''Радиус''' (''mradius'') - значения радиуса. Попадание изомувера другого типа в этот радиус позволит начать взаимодействие.<br />
*'''Цель при действии''' (''mtarget'') - мувер может быть целью взаимодействия пока сам действует<br />
*'''Запретить действие''' (''disact'') - мувер не сможет перейти из acting_wait в acting<br />
*'''Время появления''' (''appear_time'') - время в миллисекундах появления и исчезания изомувера (длительность перехода по alpha)<br />
*'''Время провала''' (''fail_time'') - длительность анимации смерти объекта, по его окончанию произойдет переход в состояние ''disappear''<br />
*'''Время паузы''' (''pause_time'') - длительность "заморозки" объекта<br />
*'''Предмет паузы''' (''pause_item'') - предмет для включения паузы<br />
*'''Прибавка паузы''' (''pause_add'') - если изомувер уже на паузе, по состоянию pause_add продлевает паузу на заданное значение ms<br />
*'''fail при 0 жизни''' (''zerofail'') - 1- при нулевом уровне жизни изомувер перейдет в fail, 0 - останется жив<br />
*'''Не пересчитывать маршрут''' (''softrecalc'') - 1- при отключении ребер графа не произойдет пересчета маршрута, 0 - маршрут будет пересчитан<br />
*'''Реагировать на''' (''tapreact'') - 1- на тап, 0- на клик<br />
*'''Дорожное движение''' (''trafficcheck'') - 1 - проверять столкновения, 0 - нет<br />
*'''использовать бонусы ко времени''' (''useTimeItems'') - флаг, будет ли изомувер использовать бонусы от амулетов на ускорение времени взаимодействия (настраивается в экономике). 1 - да, 0 - нет. <br />
<br><br />
<br />
==Дополнительные параметры==<br />
[[Файл:Isomover1.png|right|300px]]<br />
*'''Графический ресурс:'''<br />
**вверх (''res0'') - графический ресурс движения вверх<br />
**вверх/вправо (''res1'') - графический ресурс движения вверх/вправо<br />
**вправо (''res2'') - графический ресурс движения вправо <br />
**вниз/вправо (''res3'') - графический ресурс движения вниз/вправо<br />
**вниз (''res4'') - графический ресурс движения вниз <br />
**вниз/влево (''res5'') - графический ресурс движения вниз/влево<br />
**влево (''res6'') - графический ресурс движения влево <br />
**вверх/влево (''res7'') - графический ресурс движения вверх/влево. Достаточно указать первые пять ресурсов, а остальные редактор отобразит автоматически симметрично<br />
**деятельность (''resa'') - графический ресурс для состояния acting и acting_wait<br />
**рисовать действие поверх (''resaover'') - 1 - поверх, 0 - подменять ресурс. Применяем, если, например, анимацию нужно отобразить поверх изомувера.<br />
**иконка персонажа (''char_ico'') - иконка, которая будет находится сверху над персонажем. Изменение масштаба во время игры не влияет на масштаб иконки. Рекомендуется создавать ее с пивотом у нижней границы, тогда при масштабировании не будет образовываться зазор между иконкой и графикой объекта<br />
**смещение иконки персонажа (''char_ico_shift'') - смещение иконки по вертикали<br />
**рисовать при действии (''resad'') - 1- мувер рисуется при состоянии acting, 0- не рисуется<br />
**провал (''resf'') - графический ресурс состояния fail. Может быть картинкой или анимацией<br />
**пауза (''resp'') - графический ресурс состояния pause<br />
**рисовать паузу поверх (''respover'') - 1 - поверх, 0 - подменять ресурс.<br />
**восстановление жизни (''resheal'') - графический ресурс восстановления жизни<br />
**нашлепка при критическом уровне (''reslow'') - Графический ресурс нашлепки при критическом уровне здоровья<br />
*'''3D ресурс'''<br />
**модель (''mdl'') - трехмерный ресурс для отображения объекта<br />
**scale x (''mdlSx'') - масштаб по оси ''x''<br />
**scale y (''mdlSy'') - масштаб по оси ''y''<br />
**scale z (''mdlSz'') - масштаб по оси ''z''<br />
*'''Звуки'''<br />
**всплывание подложки (''snd_panel'') - звук показывающейся подложки<br />
**исчезание подложки (''snd_panel_hide'') - звук прячущейся подложки<br />
**переход в acting (''snd_to_acting'') - звук перехода в состояние acting<br />
**применение предмета (''snd_item_used'') - звук применение предмета при взаимодействии<br />
**предмет при паузе (''snd_item_pause'') - звук применение предмета при паузе<br />
**конец паузы (''snd_pause_end'') - звук при окончании паузы<br />
**фейл взаимодействия (''snd_fail'') - звук при переходе в fail<br />
**успех взаимодействия (''snd_success'') - звук при переходе в win<br />
**клик (''snd_click'') - звук при клике<br />
*'''Коэффициент скорости'''<br />
**вертикальное (''speed_0'') - на этот коэффициент умножается скорость при вертикальном движении<br />
**диагональное (''speed_1'') - на этот коэффициент умножается скорость при диагональном движении<br />
**горизонтальное (''speed_2'') - на этот коэффициент умножается скорость при горизонтальном движении<br />
Обычно горизонтальный коэффициент равен 1.00, чуть меньше диагональный и еще меньше вертикальный. Это необходимо для создания реалистичности движения относительно перспективы. То есть объекты, двигаясь вверх, как бы отдаляются от нас в глубь, поэтому по экрану они движутся медленней<br />
[[Файл:Isomover2.png|right]]<br />
*'''Таймер''':<br />
**подложка (''digBg'') - фон для цифр таймера<br />
**цифры (''digNorm'') - набор из 10-и цифр в виде ресурса анимации (клипа)<br />
**двоеточие (''colNorm'') - графический ресурс двоеточия<br />
**dx (''dx'') - смещение таймера по оси ''x'' относительно пивота изомувера<br />
**dy (''dy'') - смещение таймера по оси ''y'' относительно пивота изомувера<br />
**dx между цифрами (''digShift'') - расстояние между цифрами таймера<br />
**dx от (''colShift'') - отступы числовых разрядов влево и вправо от двоеточия<br />
**жизнь (''objlife'') - здесь выбирается объект типа прогресс_бар для отображения шкалы уровня жизни. Progress_bar создается отдельным объектом<br />
Таймер позволяет отобразить время до окончания взаимодействия объектов. Например "корабль" прибыл в "порт" и начал отгружать груз. С помощью числового таймера или progress_bar можно увидеть через сколько закончится отгрузка. На рисунке справа показано взаимодействие двух объектов с изображение шкалы жизни одного из объектов и времени до конца взаимодействия.<br />
*'''окно предмета''':<br />
**паспорт(''wndPassport'') - текстовый id, в котором в ''word'' лежит текст - название, в icon1 - графика изомувера для окна использования айтем<br />
Паспорт из этой группы используется в случаях открытия окна использования айтема для паузы или восстановления здоровья. <br />
**(текст) название айтема(''wndItemName'') - текстовый объект, в который вкладывается название айтема<br />
**(текст) текст айтема(''wndItemText'') - куда кладем описание айтема<br />
**иконка айтема(''wndItemIcon'') - иконка айтема<br />
**название взаимодействия(''wndActingName'') - куда кладем word и паспорта<br />
**превью взаимодействия(''wndActingPreview'') - паспорт или txtID из взаимодействия<br />
**(каунтер) есть предмета(''wndCntHave'') - сколько есть нужного айтема<br />
**(каунтер) нужно предмета(''wndCntNeed'') - нужно предмета <br />
**(каутер) цена res1(wndCntRes1) - цена предмета res1<br />
**(каутер) цена res2(wndCntRes2) - цена предмета res2<br />
**само окно(''wndWnd'') - должно иметь состояние show<br />
*'''Преследование'''<br />
**тип (''chasetype'') - тип объекта, который можно преследовать<br />
**радиус (''chaseradius'') - если объект указанного типа окажется в этом радиусе, то начнется преследование (например полицейская погоня)<br />
*'''Дорожное движение'''<br />
**радиус (''stopradius'') - объекты, которые двигались по одному ребру, останавливаются на расстоянии этого радиуса (необходимо для препятствия наслоений объектов на дороге, железнодорожных путях)<br />
*'''восстановление жизни''':<br />
**критический уровень (''pow_min'') - Критический уровень жизни<br />
**предмет (''pow_item'') - Предмет восстановления <br />
**время (''pow_time'') - Время восстановления жизни<br />
*'''ускорение взаимодействия''':<br />
**коэффициент (''boost_coef'') - Коэффициент ускорения взаимодействия. <br />
**время (''boost_time'') - Какое время (в миллисекундах) действует ускорение. <br />
<br />
*курсор (''curs'') - Графический ресурс курсора текущего и всех дочерних объектов<br />
*прокликиваемая (''passClk'') - Если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то картинка сама обрабатывает клик, но и пропускает его дальше" regexp="нет=0, да=1, обработать и пропустить=2<br />
*группа (''gr'') - Группа, в которую входит текущий объект<br />
*eitems (''eitems'') - Объект типа eitems<br />
<br><br />
<br />
==Добавляемые параметры==<br />
[[Файл:Isomover9.png|right|300px]]<br />
[[Файл:+.png]] '''Взаимодействие с другими объектами''':<br />
*тип (''mtype'') - тип объекта с которым по настроенному ниже сценарию будет происходить взаимодействие, -1 для любого типа<br />
*min жизнь (''minlife'') - минимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"<br />
*max жизнь (''maxlife'') - максимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"<br />
*тип актив (''mtype_a'') - тип мувера, который активирует взаимодействие, если данный в процессе подготовки<br />
*анимация (''res_a'') - анимация взаимодействия, например боя, разгрузки, разговора. Перетаскивается мышкой из редактора ресурсов<br />
*старт тип (''stype'') - тип старта взаимодействия<br />
**0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту<br />
**1 - автоматический переход в состояние acting<br />
**2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов<br />
**3 - переход по значению жизни<br />
*старт таймер (''stimer'') - время, за которое нужно активировать взаимодействие тапом<br />
*старт изм.жизни (''slife'') - скорость изменения жизни до активации взаимодействия тапом<br />
*старт изм.жизни другого (''slife_o'') - скорость изменения жизни враг до активации взаимодействия тапом<br />
*предмет (''item'') - предмет, необходимый для запуска активности. Актуально, когда имеется объект economics<br />
*иконка (''ico'') - иконка активности<br />
*смещение иконки (''ico_shift'') - смещение иконки активности по вертикали<br />
*актив тип (''atype'') - тип старта взаимодействия<br />
**0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту<br />
**1 - автоматический переход в состояние acting<br />
**2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов<br />
**3 - переход по значению жизни<br />
*актив таймер (''atime'') - время, которое длится взаимодействие<br />
*актив изменение жизни (''alife'') - скорость изменения жизни текущего объекта (ед/сек) в состоянии active<br />
*актив изменение жизни другого (''alife_o'') - скорость изменения жизни другого объекта (ед/сек) в состоянии active<br />
<br />
[[Файл:Isomover3.png|right|300px]]<br />
*объект инит (''obj'') - объект, состояние которого нужно изменить при переходе изомувера в acting_wait<br />
*состояние инит (''st'') - новое состояние другого объекта<br />
*объект старт (''obj_s'') - объект, состояние которого нужно изменить при переходе изомувера в acting<br />
*состояние старт (''st_s'') - новое состояние другого объекта<br />
*объект фейл (''obj_f'') - объект, состояние которого нужно изменить при переходе изомувера в состояние fail (проигрыш)<br />
*состояние фейл (''st_f'') - новое состояние другого объекта<br />
*объект успех (''obj_w'') - объект, состояние которого нужно изменить при переходе изомувера в состояние win (в случае победы)<br />
*состояние успех (''st_w'') - новое состояние другого объекта<br />
*дельта жизнь (''deltalife'') при успехе взаимодействия изменить значение жизни на эту величину<br />
*переводить другой в фейл (''o_fail'') - 1- переводить цель действия в fail, 0- в idle<br />
*переводить другой в мув (''o_move'') - при неудачном действии 1- переводить цель действия в move, 0- в idle<br />
*можно ускорить (''canspeed'') - 1- действие можно ускорить. От этого параметра зависит, какое событие будет вызываться по клику на объект в состоянии acting<br />
*звук ожидания (''snd_wait'') - звук, который будет воспроизводиться в состоянии acting_wait <br />
*звук действия (''snd_act'') - звук, который будет воспроизводиться в состоянии acting<br />
Для каждого типа объектов, с которыми взаимодействие возможно, необходимо добавить отдельный параметр "взаимодействие с другими объектами" и настроить его. Объекты инит, старт, фейл и успех вызываются при переходе текущего объекта в соответствующие состояния. Например, это может быть диалоговое окно, предлагающее продолжить взаимодействие, запуск дополнительных индикаторов, фейерверк в случае победы.<br />
*паспорт(''wndPassport'') - текстовый id, в котором в word лежит текст - название, в icon1 - графика изомувера для окна использования айтем<br />
Паспорт из этой группы используется в случаях открытия окна использования айтема для взаимодействия.<br />
<br />
[[Файл:+.png]] '''Клик при простое''' (''nst_idle''):<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии idel<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_move''), он же '''клик при движении''':<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии move<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Клик при паузе''' (''nst_pause''):<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии pause (заморозка)<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_aw_n'') он же '''клик при acting_wait, если другие действия не возможны'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting_wait<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_a_1'') он же '''клик при acting, ускорение возможно'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение возможно<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_a_2'') он же '''клик при acting, ускорение НЕвозможно'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение не возможно<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_beact'') он же '''клик при beeng_acting'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии beeng_acting, когда воздействие совершалось над ним другим объектом<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Конец движения''' (''nst_finish''):<br />
*объект - объект, состояние которого меняется, если изомувер закончил движение (достиг точки finish)<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Отправили в текущую ноду''' (''nst_place''):<br />
*объект - объект, состояние которого меняется, если изомувер направлен в ту же ноду, в которой и находится<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Перешел в fail''' (''nst_gopause''):<br />
*объект - объект, состояние которого меняется, если изомувер перешел в fail<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Перешел в pause''' (''nst_heal''):<br />
*объект - объект, состояние которого меняется, если изомувер Перешел в pause<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Восстановил здоровье''' (''nst_low_time''):<br />
*объект - объект, состояние которого меняется, если изомувер Восстановил здоровье<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Здоровье на 0''' (''nst_pow0'') - здоровье снизилось для нуля.<br />
*объект - объект, состояние которого меняется, если изомувер Восстановил здоровье<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Время истекло: изменить состояние объекта''' (''nst_low_time'') он же '''время на исходе: изменить состояние объекта''':<br />
*значение, при котором срабатывает обработчик<br />
*объект - объект, состояние которого меняется по истечению времени<br />
*состояние - новое состояние объекта<br />
<br><br />
<br />
==Состояния==<br />
[[Файл:isomover_box.png|right|350px]]<br />
*'''idle''' - дефолтное состояние, в которое isomover переходит после всех манипуляций. Недвижимым объектам следует передавать idle, чтобы они появились (нарисовались) на карте. Для движущихся объектов его практически не используют, объект сам рисуется с началом движения.<br><br />
*'''acting_wait''' - первое состояние взаимодействия (запускается первый таймер, анимация взаимодействия и ожидается старт).<br><br />
*'''acting''' - второе состояние взаимодействия (вызывается после применения предмета или клика, запускает второй таймер).<br><br />
*'''being_acted''' - в этом состоянии пребывает тот объект, над которым идет действие. Объект в этом состоянии невидим.<br><br />
*'''move''' - состояние движения от старта к финишу.<br><br />
*'''move_to_smooth''' - состояние движения от текущей ноды (или следующей, если объект идет) к финишу.<br><br />
*'''appear''' - показать по альфе за время появления.<br><br />
*'''disappear''' - скрыть по альфе за время появления.<br><br />
*'''prepare_acting''' - вызвать взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.<br><br />
*'''start_acting''' - продолжить взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.<br />
*'''pause''' - состояние "заморозки"<br />
*'''pause_add''' - продлить заморозку на время, указанное в одноименном параметре (см. выше), если изомувер уже заморожен. <br />
<br />
<br><br />
<br />
==Особенности работы==<br />
[[Файл:Isomover6.png|right|300px]][[Файл:Isomover8.png|left|200px]]<br />
Движение объекта типа ''isomover'' задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект '''woman''' типа ''isomover''. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Движение задается машиной состояний ''woman_machine''.<br><br />
Для управления циклическим ходом назначим дополнительный параметр ''ww''. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов.<br><br />
Для того, чтобы изомувер двигался каждый раз к новой точке, необходимо повторно инициализировать его точку финиша. Однако, если мы продолжим указывать ему состояние move для движения, то каждый раз он будет начинать движение с точки старта. Чтобы это исправить воспользуемся состоянием move_to_smooth, которое заставляет двигаться изомувер от текущей ноде к финишу, будто старт и финиш мы все время смещаем на шаг.<br />
<br>Основная логика будет находиться в состоянии ''circle_moving'' нашей машины. Надо сделать так, чтобы изомувер переходил в это состояние после движения по каждому из ребер. Для этого зайдем в свойства изомувера, нажмем правой кнопкой мыши и добавим параметр '''конец движения'''. У него есть поля ''объект'' и ''свойство''. Объект - машина состояний ''woman_machine'', состояние ''circle_moving'' этой машины. Таким образом, в конце каждого акта движения изомувер будет запускать состояние, в котором мы будем менять его точку финиша и запускать его движение.<br />
<br>Не забываем, что все операции с переменными должны отделяться скобками, как и сама переменная<br><br><br />
<br />
===Пример===<br />
Два изомувера (police_car и werewolf) совершают циклическое движение по определенному маршруту, заданному с помощью машин состояний (car_machine и werewolf_machine соответственно). Когда объекты оказываются в радиусе (достаточном для активации добавляемого параметра '''"Взаимодействие с другими объектами"'''), объект '''police_car''' начинает взаимодействовать с объектом '''werewolf'''. По истечению времени воздействия объект '''police_car''' переходит в состояние '''fail'''. Если кликнуть на процесс взаимодействия объектов, то объект '''police_car''' перейдет в состояние '''win'''.<br />
*'''Пример:<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Isomap.rar<br />
<br />
<br />
<br />
[[Category:Main objects]]<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Isomover&diff=9672Isomover2018-08-01T11:32:23Z<p>Mlipa: </p>
<hr />
<div>'''Isomover''' - [[Object|объект]] используется для осуществления движения и взаимодействия в изометрической карте. <br />
<br />
Isomover обязательно должен быть подобъектом [[isomap]]. <br />
<br />
В проекте с картой ([[isomap]]) и движущимися по ней объектами (isomover) часто используют [[economics]] и [[eitems]] потому, что для завершения процессов часто требуется применить предмет или ресурс.<br />
<br />
Начало движения множества изомуверов сильно нагружает систему, поэтому следует позаботиться, чтобы это происходило не в один момент времени. По возможности добавляйте небольшую и различную паузу каждому изомуверу перед стартом.<br><br><br />
==Основные параметры==<br />
*'''Положение''' (''x'',''y'') - рекомендуется выносить isomover-объекты за пределы карты. Иначе, если объект должен появляться не сразу, то он будет просто стоять без движения<br />
*'''Память''' - всегда должно быть значение 1, обязательное условие корректной работы. Это позволяет объекту двигаться последовательно, не инициализируясь после каждого движения в исходной точке<br />
*'''тип ребра min''' (''edge_t_min'') - перемещаться по ребрам не ниже заданного, -1 не проверять<br />
*'''тип ребра max''' (''edge_t_max'') - перемещаться по ребрам не выше заданного, -1 не проверять. Типы ребер задаются в isomap<br />
*'''Старт''' (''start'') - точка старта, выбирается из списка точек Isomap<br />
*'''Финиш''' (''finish'') - точка финиша, выбирается из списка точек Isomap<br />
*'''Скорость (макс)''' (''vel_max'') - максимальная скорость, с которой передвигается объект Isomover<br />
*'''Скорость''' (''vel'') - не использовать, вычисляется по формуле автоматически, позже будет скрыто. V = Vmax*(k+(1-k)*(P/Pmax))<br />
*'''Жизнь (макс)''' (''pow_max'') - максимальная жизнь<br />
*'''Жизнь''' (''pow'') - текущая жизнь, высчитывается по формуле автоматически<br />
*'''Сохранять жизнь в опции''' (''powsave'') - если да, то объекты сцены сохранят уровень жизни при выходе со сцены и возвращении на нее<br />
*'''Коэффициент скорости''' (''speed_k'') - коэффициент k в формуле расчета скорости. Чтобы скорость не зависела от значения жизни - указываем speed_k = 1<br />
*'''Менять угол''' (''fixangle'') - изменение угла для предания плавности смены графики при дугообразном перемещении объекта. С появлением 3D-объектов больше не используется<br />
*'''Тип''' (''mtype'') - объекты можно разделять на типы (люди, монстры, звери и т.д.). Взаимодействие происходит между объектами разных типов, настраивается в добавляемых параметрах<br />
*'''Радиус''' (''mradius'') - значения радиуса. Попадание изомувера другого типа в этот радиус позволит начать взаимодействие.<br />
*'''Цель при действии''' (''mtarget'') - мувер может быть целью взаимодействия пока сам действует<br />
*'''Запретить действие''' (''disact'') - мувер не сможет перейти из acting_wait в acting<br />
*'''Время появления''' (''appear_time'') - время в миллисекундах появления и исчезания изомувера (длительность перехода по alpha)<br />
*'''Время провала''' (''fail_time'') - длительность анимации смерти объекта, по его окончанию произойдет переход в состояние ''disappear''<br />
*'''Время паузы''' (''pause_time'') - длительность "заморозки" объекта<br />
*'''Предмет паузы''' (''pause_item'') - предмет для включения паузы<br />
*'''Прибавка паузы''' (''pause_add'') - если изомувер уже на паузе, по состоянию pause_add продлевает паузу на заданное значение ms<br />
*'''fail при 0 жизни''' (''zerofail'') - 1- при нулевом уровне жизни изомувер перейдет в fail, 0 - останется жив<br />
*'''Не пересчитывать маршрут''' (''softrecalc'') - 1- при отключении ребер графа не произойдет пересчета маршрута, 0 - маршрут будет пересчитан<br />
*'''Реагировать на''' (''tapreact'') - 1- на тап, 0- на клик<br />
*'''Дорожное движение''' (''trafficcheck'') - 1 - проверять столкновения, 0 - нет<br />
*'''использовать бонусы ко времени''' (''useTimeItems'') - флаг, будет ли изомувер использовать бонусы от амулетов на ускорение времени взаимодействия (настраивается в экономике). 1 - да, 0 - нет. <br />
<br><br />
<br />
==Дополнительные параметры==<br />
[[Файл:Isomover1.png|right|300px]]<br />
*'''Графический ресурс:'''<br />
**вверх (''res0'') - графический ресурс движения вверх<br />
**вверх/вправо (''res1'') - графический ресурс движения вверх/вправо<br />
**вправо (''res2'') - графический ресурс движения вправо <br />
**вниз/вправо (''res3'') - графический ресурс движения вниз/вправо<br />
**вниз (''res4'') - графический ресурс движения вниз <br />
**вниз/влево (''res5'') - графический ресурс движения вниз/влево<br />
**влево (''res6'') - графический ресурс движения влево <br />
**вверх/влево (''res7'') - графический ресурс движения вверх/влево. Достаточно указать первые пять ресурсов, а остальные редактор отобразит автоматически симметрично<br />
**деятельность (''resa'') - графический ресурс для состояния acting и acting_wait<br />
**рисовать действие поверх (''resaover'') - 1 - поверх, 0 - подменять ресурс. Применяем, если, например, анимацию нужно отобразить поверх изомувера.<br />
**иконка персонажа (''char_ico'') - иконка, которая будет находится сверху над персонажем. Изменение масштаба во время игры не влияет на масштаб иконки. Рекомендуется создавать ее с пивотом у нижней границы, тогда при масштабировании не будет образовываться зазор между иконкой и графикой объекта<br />
**смещение иконки персонажа (''char_ico_shift'') - смещение иконки по вертикали<br />
**рисовать при действии (''resad'') - 1- мувер рисуется при состоянии acting, 0- не рисуется<br />
**провал (''resf'') - графический ресурс состояния fail. Может быть картинкой или анимацией<br />
**пауза (''resp'') - графический ресурс состояния pause<br />
**рисовать паузу поверх (''respover'') - 1 - поверх, 0 - подменять ресурс.<br />
**восстановление жизни (''resheal'') - графический ресурс восстановления жизни<br />
**нашлепка при критическом уровне (''reslow'') - Графический ресурс нашлепки при критическом уровне здоровья<br />
*'''3D ресурс'''<br />
**пауза (''resp'') -<br />
**модель (''mdl'') - трехмерный ресурс для отображения объекта<br />
**scale x (''mdlSx'') - масштаб по оси ''x''<br />
**scale y (''mdlSy'') - масштаб по оси ''y''<br />
**scale z (''mdlSz'') - масштаб по оси ''z''<br />
*'''Звуки'''<br />
**всплывание подложки (''snd_panel'') - звук показывающейся подложки<br />
**исчезание подложки (''snd_panel_hide'') - звук прячущейся подложки<br />
**переход в acting (''snd_to_acting'') - звук перехода в состояние acting<br />
**применение предмета (''snd_item_used'') - звук применение предмета при взаимодействии<br />
**предмет при паузе (''snd_item_pause'') - звук применение предмета при паузе<br />
**конец паузы (''snd_pause_end'') - звук при окончании паузы<br />
**фейл взаимодействия (''snd_fail'') - звук при переходе в fail<br />
**успех взаимодействия (''snd_success'') - звук при переходе в win<br />
**клик (''snd_click'') - звук при клике<br />
*'''Коэффициент скорости'''<br />
**вертикальное (''speed_0'') - на этот коэффициент умножается скорость при вертикальном движении<br />
**диагональное (''speed_1'') - на этот коэффициент умножается скорость при диагональном движении<br />
**горизонтальное (''speed_2'') - на этот коэффициент умножается скорость при горизонтальном движении<br />
Обычно горизонтальный коэффициент равен 1.00, чуть меньше диагональный и еще меньше вертикальный. Это необходимо для создания реалистичности движения относительно перспективы. То есть объекты, двигаясь вверх, как бы отдаляются от нас в глубь, поэтому по экрану они движутся медленней<br />
[[Файл:Isomover2.png|right]]<br />
*'''Таймер''':<br />
**подложка (''digBg'') - фон для цифр таймера<br />
**цифры (''digNorm'') - набор из 10-и цифр в виде ресурса анимации (клипа)<br />
**двоеточие (''colNorm'') - графический ресурс двоеточия<br />
**dx (''dx'') - смещение таймера по оси ''x'' относительно пивота изомувера<br />
**dy (''dy'') - смещение таймера по оси ''y'' относительно пивота изомувера<br />
**dx между цифрами (''digShift'') - расстояние между цифрами таймера<br />
**dx от (''colShift'') - отступы числовых разрядов влево и вправо от двоеточия<br />
**жизнь (''objlife'') - здесь выбирается объект типа прогресс_бар для отображения шкалы уровня жизни. Progress_bar создается отдельным объектом<br />
Таймер позволяет отобразить время до окончания взаимодействия объектов. Например "корабль" прибыл в "порт" и начал отгружать груз. С помощью числового таймера или progress_bar можно увидеть через сколько закончится отгрузка. На рисунке справа показано взаимодействие двух объектов с изображение шкалы жизни одного из объектов и времени до конца взаимодействия.<br />
*'''окно предмета''':<br />
**паспорт(''wndPassport'') - текстовый id, в котором в ''word'' лежит текст - название, в icon1 - графика изомувера для окна использования айтем<br />
Паспорт из этой группы используется в случаях открытия окна использования айтема для паузы или восстановления здоровья. <br />
**(текст) название айтема(''wndItemName'') - текстовый объект, в который вкладывается название айтема<br />
**(текст) текст айтема(''wndItemText'') - куда кладем описание айтема<br />
**иконка айтема(''wndItemIcon'') - иконка айтема<br />
**название взаимодействия(''wndActingName'') - куда кладем word и паспорта<br />
**превью взаимодействия(''wndActingPreview'') - паспорт или txtID из взаимодействия<br />
**(каунтер) есть предмета(''wndCntHave'') - сколько есть нужного айтема<br />
**(каунтер) нужно предмета(''wndCntNeed'') - нужно предмета <br />
**(каутер) цена res1(wndCntRes1) - цена предмета res1<br />
**(каутер) цена res2(wndCntRes2) - цена предмета res2<br />
**само окно(''wndWnd'') - должно иметь состояние show<br />
*'''Преследование'''<br />
**тип (''chasetype'') - тип объекта, который можно преследовать<br />
**радиус (''chaseradius'') - если объект указанного типа окажется в этом радиусе, то начнется преследование (например полицейская погоня)<br />
*'''Дорожное движение'''<br />
**радиус (''stopradius'') - объекты, которые двигались по одному ребру, останавливаются на расстоянии этого радиуса (необходимо для препятствия наслоений объектов на дороге, железнодорожных путях)<br />
*'''восстановление жизни''':<br />
**критический уровень (''pow_min'') - Критический уровень жизни<br />
**предмет (''pow_item'') - Предмет восстановления <br />
**время (''pow_time'') - Время восстановления жизни<br />
*'''ускорение взаимодействия''':<br />
**коэффициент (''boost_coef'') - Коэффициент ускорения взаимодействия. <br />
**время (''boost_time'') - Какое время (в миллисекундах) действует ускорение. <br />
<br />
*курсор (''curs'') - Графический ресурс курсора текущего и всех дочерних объектов<br />
*прокликиваемая (''passClk'') - Если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то картинка сама обрабатывает клик, но и пропускает его дальше" regexp="нет=0, да=1, обработать и пропустить=2<br />
*группа (''gr'') - Группа, в которую входит текущий объект<br />
*eitems (''eitems'') - Объект типа eitems<br />
<br><br />
<br />
==Добавляемые параметры==<br />
[[Файл:Isomover9.png|right|300px]]<br />
[[Файл:+.png]] '''Взаимодействие с другими объектами''':<br />
*тип (''mtype'') - тип объекта с которым по настроенному ниже сценарию будет происходить взаимодействие, -1 для любого типа<br />
*min жизнь (''minlife'') - минимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"<br />
*max жизнь (''maxlife'') - максимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"<br />
*тип актив (''mtype_a'') - тип мувера, который активирует взаимодействие, если данный в процессе подготовки<br />
*анимация (''res_a'') - анимация взаимодействия, например боя, разгрузки, разговора. Перетаскивается мышкой из редактора ресурсов<br />
*старт тип (''stype'') - тип старта взаимодействия<br />
**0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту<br />
**1 - автоматический переход в состояние acting<br />
**2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов<br />
**3 - переход по значению жизни<br />
*старт таймер (''stimer'') - время, за которое нужно активировать взаимодействие тапом<br />
*старт изм.жизни (''slife'') - скорость изменения жизни до активации взаимодействия тапом<br />
*старт изм.жизни другого (''slife_o'') - скорость изменения жизни враг до активации взаимодействия тапом<br />
*предмет (''item'') - предмет, необходимый для запуска активности. Актуально, когда имеется объект economics<br />
*иконка (''ico'') - иконка активности<br />
*смещение иконки (''ico_shift'') - смещение иконки активности по вертикали<br />
*актив тип (''atype'') - тип старта взаимодействия<br />
**0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту<br />
**1 - автоматический переход в состояние acting<br />
**2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов<br />
**3 - переход по значению жизни<br />
*актив таймер (''atime'') - время, которое длится взаимодействие<br />
*актив изменение жизни (''alife'') - скорость изменения жизни текущего объекта (ед/сек) в состоянии active<br />
*актив изменение жизни другого (''alife_o'') - скорость изменения жизни другого объекта (ед/сек) в состоянии active<br />
<br />
[[Файл:Isomover3.png|right|300px]]<br />
*объект инит (''obj'') - объект, состояние которого нужно изменить при переходе изомувера в acting_wait<br />
*состояние инит (''st'') - новое состояние другого объекта<br />
*объект старт (''obj_s'') - объект, состояние которого нужно изменить при переходе изомувера в acting<br />
*состояние старт (''st_s'') - новое состояние другого объекта<br />
*объект фейл (''obj_f'') - объект, состояние которого нужно изменить при переходе изомувера в состояние fail (проигрыш)<br />
*состояние фейл (''st_f'') - новое состояние другого объекта<br />
*объект успех (''obj_w'') - объект, состояние которого нужно изменить при переходе изомувера в состояние win (в случае победы)<br />
*состояние успех (''st_w'') - новое состояние другого объекта<br />
*дельта жизнь (''deltalife'') при успехе взаимодействия изменить значение жизни на эту величину<br />
*переводить другой в фейл (''o_fail'') - 1- переводить цель действия в fail, 0- в idle<br />
*переводить другой в мув (''o_move'') - при неудачном действии 1- переводить цель действия в move, 0- в idle<br />
*можно ускорить (''canspeed'') - 1- действие можно ускорить. От этого параметра зависит, какое событие будет вызываться по клику на объект в состоянии acting<br />
*звук ожидания (''snd_wait'') - звук, который будет воспроизводиться в состоянии acting_wait <br />
*звук действия (''snd_act'') - звук, который будет воспроизводиться в состоянии acting<br />
Для каждого типа объектов, с которыми взаимодействие возможно, необходимо добавить отдельный параметр "взаимодействие с другими объектами" и настроить его. Объекты инит, старт, фейл и успех вызываются при переходе текущего объекта в соответствующие состояния. Например, это может быть диалоговое окно, предлагающее продолжить взаимодействие, запуск дополнительных индикаторов, фейерверк в случае победы.<br />
*паспорт(''wndPassport'') - текстовый id, в котором в word лежит текст - название, в icon1 - графика изомувера для окна использования айтем<br />
Паспорт из этой группы используется в случаях открытия окна использования айтема для взаимодействия.<br />
<br />
[[Файл:+.png]] '''Клик при простое''' (''nst_idle''):<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии idel<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_move''), он же '''клик при движении''':<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии move<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Клик при паузе''' (''nst_pause''):<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии pause (заморозка)<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_aw_n'') он же '''клик при acting_wait, если другие действия не возможны'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting_wait<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_a_1'') он же '''клик при acting, ускорение возможно'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение возможно<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_a_2'') он же '''клик при acting, ускорение НЕвозможно'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение не возможно<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Изменить состояние объекта''' (''nst_beact'') он же '''клик при beeng_acting'''<br />
*объект - объект, состояние которого меняется, если изомувер был нажат в состоянии beeng_acting, когда воздействие совершалось над ним другим объектом<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Конец движения''' (''nst_finish''):<br />
*объект - объект, состояние которого меняется, если изомувер закончил движение (достиг точки finish)<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Отправили в текущую ноду''' (''nst_place''):<br />
*объект - объект, состояние которого меняется, если изомувер направлен в ту же ноду, в которой и находится<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Перешел в fail''' (''nst_gopause''):<br />
*объект - объект, состояние которого меняется, если изомувер перешел в fail<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Перешел в pause''' (''nst_heal''):<br />
*объект - объект, состояние которого меняется, если изомувер Перешел в pause<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Восстановил здоровье''' (''nst_low_time''):<br />
*объект - объект, состояние которого меняется, если изомувер Восстановил здоровье<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Здоровье на 0''' (''nst_pow0'') - здоровье снизилось для нуля.<br />
*объект - объект, состояние которого меняется, если изомувер Восстановил здоровье<br />
*состояние - новое состояние объекта<br />
[[Файл:+.png]] '''Время истекло: изменить состояние объекта''' (''nst_low_time'') он же '''время на исходе: изменить состояние объекта''':<br />
*значение, при котором срабатывает обработчик<br />
*объект - объект, состояние которого меняется по истечению времени<br />
*состояние - новое состояние объекта<br />
<br><br />
<br />
==Состояния==<br />
[[Файл:isomover_box.png|right|350px]]<br />
*'''idle''' - дефолтное состояние, в которое isomover переходит после всех манипуляций. Недвижимым объектам следует передавать idle, чтобы они появились (нарисовались) на карте. Для движущихся объектов его практически не используют, объект сам рисуется с началом движения.<br><br />
*'''acting_wait''' - первое состояние взаимодействия (запускается первый таймер, анимация взаимодействия и ожидается старт).<br><br />
*'''acting''' - второе состояние взаимодействия (вызывается после применения предмета или клика, запускает второй таймер).<br><br />
*'''being_acted''' - в этом состоянии пребывает тот объект, над которым идет действие. Объект в этом состоянии невидим.<br><br />
*'''move''' - состояние движения от старта к финишу.<br><br />
*'''move_to_smooth''' - состояние движения от текущей ноды (или следующей, если объект идет) к финишу.<br><br />
*'''appear''' - показать по альфе за время появления.<br><br />
*'''disappear''' - скрыть по альфе за время появления.<br><br />
*'''prepare_acting''' - вызвать взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.<br><br />
*'''start_acting''' - продолжить взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.<br />
*'''pause''' - состояние "заморозки"<br />
*'''pause_add''' - продлить заморозку на время, указанное в одноименном параметре (см. выше), если изомувер уже заморожен. <br />
<br />
<br><br />
<br />
==Особенности работы==<br />
[[Файл:Isomover6.png|right|300px]][[Файл:Isomover8.png|left|200px]]<br />
Движение объекта типа ''isomover'' задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект '''woman''' типа ''isomover''. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Движение задается машиной состояний ''woman_machine''.<br><br />
Для управления циклическим ходом назначим дополнительный параметр ''ww''. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов.<br><br />
Для того, чтобы изомувер двигался каждый раз к новой точке, необходимо повторно инициализировать его точку финиша. Однако, если мы продолжим указывать ему состояние move для движения, то каждый раз он будет начинать движение с точки старта. Чтобы это исправить воспользуемся состоянием move_to_smooth, которое заставляет двигаться изомувер от текущей ноде к финишу, будто старт и финиш мы все время смещаем на шаг.<br />
<br>Основная логика будет находиться в состоянии ''circle_moving'' нашей машины. Надо сделать так, чтобы изомувер переходил в это состояние после движения по каждому из ребер. Для этого зайдем в свойства изомувера, нажмем правой кнопкой мыши и добавим параметр '''конец движения'''. У него есть поля ''объект'' и ''свойство''. Объект - машина состояний ''woman_machine'', состояние ''circle_moving'' этой машины. Таким образом, в конце каждого акта движения изомувер будет запускать состояние, в котором мы будем менять его точку финиша и запускать его движение.<br />
<br>Не забываем, что все операции с переменными должны отделяться скобками, как и сама переменная<br><br><br />
<br />
===Пример===<br />
Два изомувера (police_car и werewolf) совершают циклическое движение по определенному маршруту, заданному с помощью машин состояний (car_machine и werewolf_machine соответственно). Когда объекты оказываются в радиусе (достаточном для активации добавляемого параметра '''"Взаимодействие с другими объектами"'''), объект '''police_car''' начинает взаимодействовать с объектом '''werewolf'''. По истечению времени воздействия объект '''police_car''' переходит в состояние '''fail'''. Если кликнуть на процесс взаимодействия объектов, то объект '''police_car''' перейдет в состояние '''win'''.<br />
*'''Пример:<br />
S:\!MOBILE\!!!EditorGames\Wiki_sample\Isomap.rar<br />
<br />
<br />
<br />
[[Category:Main objects]]<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Notification&diff=9671Notification2018-08-01T11:14:20Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.<br />
<br />
==Параметры объекта==<br />
<br />
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.<br />
<br />
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.<br />
<br />
*'''большая картинка''' (''big_picture'') - Имя файла с большой картинкой. Должен лежать не в ресурсах, а рядом с app.icf. Поле затирается после регистрации уведомления<br />
<br />
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .<br />
<br />
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .<br />
<br />
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .<br />
<br />
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .<br />
<br />
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .<br />
<br />
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .<br />
<br />
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.<br />
<br />
*'''перед первым init экстеншена''' (''delayInit'') - Задержка в секундах до первой инициализации расширения<br />
<br />
==Состояния объекта==<br />
<br />
*'''set''' - устанавливает нотификацию в очередь<br />
<br />
*'''clear''' - очищает очередь нотификации<br />
<br />
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения<br />
<br />
Установка уведомлений (объект notification):<br />
Состояние<br />
"set", - оба способа<br />
"set_native", - устройство<br />
"set_parse", - парс<br />
или через параметр<br />
<property name="отсылать в" type="enum" value="0" id="send" hint="отсылать в" regexp="обе службы=0,только локальный пуш=1,только парс=2" /> (тогда состояние set)<br />
<br />
==Пример применения==<br />
<br />
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом "message of notification".<br />
<br />
Для этого разместим на сцене объект notification и установим ему следующие параметры:<br />
<br />
* задержка - 300<br />
<br />
[[Файл:Notification 01.jpg |upright=0.5]]<br />
<br />
<br />
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.<br />
<br />
Далее добавим на сцену кнопку, которая будет передавать параметры объекту "notification" и переводить объект "notification" в состояние "set".<br />
<br />
[[Файл:Notification 02.jpg |upright=0.5 ]]<br />
<br />
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.<br />
На устройстве это выглядит так:<br />
<br />
<div class="tleft" style="clear:none"> [[Файл:IMG 0043.PNG | мини |200пкс ]] </div><br />
<div class="tleft" style="clear:none"> [[Файл:IMG 0046.PNG | мини |200пкс ]] </div><br />
<br />
<br clear="all" /><br />
<br />
==Информация в логах==<br />
<br />
<pre><br />
I/GNotification GNotification::aviable() GNotification::aviable() - уведомления разрешены<br />
I/GNotification GNotification::state() state(ST_CLEAR) clear all notifications - очистилась<br />
вся очередь уведомлений<br />
I/GNotification GNotification::state() state(ST_SET) - уведомление поставлено в очередь<br />
I/GNotification GNotification::EraseNotification() EraseNotification erase notification title: - уведомление<br />
удалено из очереди<br />
</pre><br />
<br />
==Примечания==<br />
<br />
В обычном случае по нажатию на сообщение открывается приложение на экране котором были, или на изначальном экране в зависимости от настроек.<br />
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.<br />
<br />
<br />
== Пример ==<br />
<br />
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]<br />
<br />
[[Category:Options]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Dressing&diff=9667Dressing2018-08-01T09:24:50Z<p>Mlipa: </p>
<hr />
<div>'''Dressing''' - [[Object|объект]] для реализации механики мини-игры "Гардероб", позволяющей переодеть персонажа.<br />
<br />
==Основные параметры==<br />
<br />
*'''состояние''' ''(state)'' - начальное состояние<br />
*'''экономика''' ''(economics)'' - объект-экономика, позволяет проверять достаточно ли ресурсов для покупки предмета<br />
*'''таблица''' ''(table)'' - таблица, в которую будем складывать шаблоны<br />
*'''шаблон''' ''(template)'' - шаблон предмета в ячейке. Объект типа [[Dressingtemplate]].<br />
*'''число ячеек''' ''(cellsNum)'' - начальное число ячеек в инвентаре<br />
*'''цена расширения''' ''(incPrice)'' - цена расширения на одну ячейку, последовательность чисел через запятую<br />
<br />
==Добавляемые параметры==<br />
'''связанный объект''' '''''(cobj)'''''<br />
*'''тип''' - тип связанных объектов, уникальный числовой идентификатор, различный для различных связанных объектов<br />
*'''объект''' - связанный точечный (безразмерный) объект, который будет хранить графический ресурс надетого предмета или одежды<br />
'''предмет''' '''''(item)'''''<br />
*'''id''' - текстовый id, уникальный ключ предмета<br />
*'''одевать вместе''' - id других предметов, которые нужно одевать вместе с этим<br />
*'''фильтр''' - категория предмета, например 1-одежда, 2-аксессуары, 3-VIP<br />
*'''res''' - полноразмерная графика предмета<br />
*'''цена покупки res1''' - цена покупки res1<br />
*'''цена покупки res2''' - цена покупки res2<br />
*'''цена продажи res1''' - цена продажи res1<br />
*'''цена продажи res2''' - цена продажи res2<br />
*'''цена ремонта res1''' - цена ремонта res1<br />
*'''цена ремонта res2''' - цена ремонта res2<br />
*'''уровень xp''' - уровень XP, начиная с которого можно использовать предмет<br />
*'''время ремонта''' - время ремонта в секундах<br />
*'''цена ускорения ремонта res2''' - цена ускорения ремонта res2, 0 - нельзя<br />
*'''связанный объект''' - связанный объект, в него запишем res при надевании предмета<br />
*'''тип связанных объектов'''* - тип связанных объектов<br />
*'''прочность''' - прочность предмета, 1 - не изнашивается<br />
*'''критическая прочность''' - критический уровень износа<br />
*'''тип предмета''' - тип предмета<br />
*'''нельзя с типами''' - типы, с которыми нельзя надевать данный предмет, последовательность чисел через запятую<br />
*'''надет по умолчанию''' - надет по умолчанию<br />
<br />
'''изменить состояние объекта - нехватка денег''' '''''(nst_nomoney)''''' - вызывается, если для покупки вещи не хватает денег<br />
<br />
*'''объект''' ''(obj)'' - перевести объект в состояние из следующего поля<br />
*'''состояние''' ''(state)'' - новое состояние для объекта из предыдущего поля<br />
<br />
'''изменить состояние объекта - конфликт предметов''' '''''(nst_nomoney)''''' - сюда можно поместить ссылку на окно с сообщением, что предметы не совместимы<br />
<br />
*'''объект''' ''(obj)'' - перевести объект в состояние из следующего поля<br />
*'''состояние''' ''(state)'' - новое состояние для объекта из предыдущего поля<br />
<br />
==Особенности==<br />
[[File:dressingtemplate_scr2.png|right]]<br />
<br />
[[File:dressingtemplate_scr3.png|left]]<br />
<br />
На экране находится персонаж, которому меняем одежду и аксессуары. Внутри него находится несколько связанных объектов. Связанный объект определенного типа получает в качестве графического ресурса надеваемую вещь. В примере было использовано 4 связанных объекта для: одежды, кабуры, очков и головных уборов. Каждый из них имеет уникальный тип, обозначенный числом. Если персонаж должен в этой же одежде появиться и на других экранах, то Dressing выносится на расшаренную сцену и в каждом экране ссылается на соответствующие связанные объекты. Т.е. у нас может быть один Dressing (Гардероб), но несколько дублирующих объектов персонажа.<br />
<br />
Настраивая предметы, важно указать тип предмета и типы, с которыми носить эту вещь нельзя. Например, логичным кажется, что странно будет иметь возможность надеть кабуру и вечернее платье и т.п. Если же на персонаже уже надет предмет с точно таким типом, то он будет заменен на надеваемый, поскольку связанному объекту присвоится новый ресурс.</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Timer&diff=9666Timer2018-08-01T09:09:36Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
== Общие сведения ==<br />
<br />
Данный [[Object|объект]] предназначен для различных действий в игре связанных со временем. Например: длительность игры на каком-то из уровней, время между ходами и т.д. Он может использоваться в качестве таймера (время отнимается) и секундомера (время наращивается).<br />
<br />
Таймер может управляться такими игровыми объектами как [[HiddenList]], а также другими игровыми объектами которые смогут передавать ему различные состояния.<br />
<br />
== Основные параметры и свойства таймера ==<br />
<br />
[[Файл:Timer 01.jpg|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''blending''' - Alpha смешивание<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''z''' - параметр порядка рисования объекта. Сначала рисуются объекты с большим z, а под ними с меньшим<br />
* '''память''' - если 1 - не обновляет свои параметры при последующем открытии экрана, 0 - обновляет . '''Если таймер подвязан к опциям''' и включена память, то таймер не будет перевычитывать значение из опций после получения состояний '''init''', '''run'''<br />
* '''cостояние''' - начальное состояние таймера:<br />
** '''beg''' - начальное состояние (таймер не идет)<br />
** '''run''' - запуск таймера <br />
** '''fast''' - таймер работает с ускорением( кооф. ускорения задаем в "ускорение" )<br />
** '''pause''' - таймер перходит в состояние паузы. (снять с паузы состоянием - run, fast)<br />
** '''add''' - добавление времени к таймеру<br />
** '''del''' - отнимание времен из таймера<br />
** '''end''' - конечное состояние таймера<br />
** '''stop''' - останавливает таймер, если потом он будет запущен снова, то пойдет с нуля<br />
** '''save''' - записывает текущее значение в опции под именем, указанным в ключе (игра, уровень)<br />
* '''отладка''' - отображать в окне состояний текущий объект<br />
* '''значение''' - начальное значение таймера в ms<br />
* '''дельта''' - используется в состояниях add и del, количество времени которое будет добавлено или удалено из таймера (время в секундах)<br />
* '''остановка без кликов''' - если > 0, то таймер остановится, если кликов не было более заданного числа секунд<br />
* '''обратный ход''' - если "0" объект "таймер" работает, как секундомер (время увеличивается), если "1", то работает как таймер (время отнимается)<br />
* '''отображать дни''' - параметр days (количество дней), необходим для настройки отображения таймера. Настраивается во "внешний вид".<br />
* '''настройки при автозаполнении''' - перегружать - экономика меняет настройки отображения HH:MM:SS(обратная совместимость); сохранять - настройки задаются в лейауте.<br />
* '''прогресс''' - прогрессбар, отображающий то же, что и таймер<br />
* '''графика'''<br />
** '''res''' - основной графический ресурс для таймера, в качестве графического ресурса подгружается анимация из 10 фреймов, на которых изображены числа от 0 до 9<br />
** '''цифры нормальные''' - поле куда добавляется анимация цифр в нормальном виде (не обязательно заполнять, если таймер будет использоваться в одном режиме)<br />
** '''цифры окончания''' - анимация цифр, которая будут показываться в том случае, когда время таймера будет истекать<br />
** '''цифры при добавлении''' - анимация цифр, которая будет показываться в том случае, когда к таймеру было добавлено время<br />
** '''цифры при удалении''' - анимация цифр, которая будет показываться в том случае, когда от таймера было отнято время<br />
** '''двоеточие нормальное''' - графика двоеточия, которое разделяет секунды, минуты, подгражается обычный графический ресурс двоеточия<br />
** '''двоеточие окончания''' - графика двоеточия, которое показывается в случае, когда у таймера истекает время<br />
** '''двоеточие при добавлении''' - графика двоеточия, будет использовать при прибавлении время к таймеру<br />
** '''двоеточие при удалении''' - графика двоеточия, будет использовать при удалении время от таймера<br />
* '''шрифт'''<br />
** '''имя''' - номер шрифта - целое число, начиная с 0 (порядковый номер шрифта), а если -1 то рисовать каунтер клипами<br />
** '''размер''' - размер шрифта в пикселях<br />
** '''цвет 1''' - цвет текста<br />
* '''внешний вид'''<br />
** '''дни''' - 0 - прятать, 1 - отображать, 2 - отображать всегда два разряда, 3 - отображать, когда дней больше, чем в days, 4 - отображать только дни, когда дней больше, чем в days<br />
** '''часы''' - 0 - прятать, 1 - отображать, 2 - отображать, если время больше одного часа <br />
** '''минуты''' - 0 - прятать, 1 - отображать<br />
** '''секунды''' - 0 - прятать, 1 - отображать, 2 - отображать, если время меньше одного часа<br />
** '''dx''' - сдвинуть все относительно подложки вдоль х <br />
** '''dy''' - сдвинуть все относительно подложки вдоль y<br />
** '''dx между цифрами''' - расстояние между цифрами внутри разряда, между hh или mm<br />
** '''dx от ":"''' - расстояние между разрядами и клипом двоеточия (справа и слева от него)<br />
** '''разделитель после дней''' - символ, который отображается после разряда дней. Если указан, двоеточие после разряда дней не отображается. Перетаскивается из текстового редактора<br />
** '''разделитель после часов''' - символ, который отображается после разряда часов. Если указан, двоеточие после разряда часов не отображается. Перетаскивается из текстового редактора<br />
** '''разделитель после минут''' - символ, который отображается после разряда минут. Если указан, двоеточие после разряда минут не отображается. Перетаскивается из текстового редактора<br />
** '''разделитель после секунд''' - символ, который отображается после разряда секунд. Если указан, двоеточие после разряда секунд не отображается. Перетаскивается из текстового редактора<br />
* '''часы''' - Число разрядов для отображения часов<br />
* '''ускорение''' - коэффициент ускорения, когда таймер находится в состоянии fast<br />
* '''сохранять в профиль''' - если "0" - то не сохраняет значение в профиль, а значит значение будет глобальным<br />
* '''сохранять при потере фокуса''' - Если ==1, то таймер будет сохранять себя при потере фокуса<br />
* '''игра''' - ключ (параметр), совместно с параметром '''уровень''' образует переменную, с помощью которой можно управлять таймерому<br />
* '''уровень''' - совместно с параметром '''игра''' образует переменную, с помощью которой можно управлять таймером (Строит заметить, что при переходе объекта в состояние init - он автоматически считывает значение, записанное по адресу игра.уровень в [[Options|Options]]. При этом таймер не имеет состояния read, как [[Counter|Counter]])<br />
* '''Время истекло: изменить состояние объекта''' - если достигнет нуля, то есть используется, как таймер, он изменит состояние какого-то объекта<br />
* '''Время истекло: изменить параметр (свойство) объекта''' - если достигнет нуля, то есть используется, как таймер, он изменит параметр какого-то объекта<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:+.png]] '''Время на исходе: изменить состояние объекта''' - по истечению времени перевести объект в новое состояние:<br />
* значение - значение, при котором сработает обработчик;<br />
* объект - по истечению времени перевести объект в состояние из следующего поля;<br />
* состояние - новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''Время истекло: изменить состояние объекта''' - по истечению времени перевести объект в новое состояние. Если достигнет нуля, то есть используется, как таймер, он изменит состояние какого-то объекта:<br />
* объект - по истечению времени перевести объект в состояние из следующего поля;<br />
* состояние - новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''Время истекло: изменить параметр (свойство) объекта''' - по истечению времени перевести объект в новое состояние. Если достигнет нуля, то есть используется, как таймер, он изменит параметр какого-то объекта:<br />
* объект - по истечению времени перевести объект в состояние из следующего поля;<br />
* свойство - параметр, который мы изменяем;<br />
* значение - новое значение параметра.<br />
<br />
== Основные состояние ==<br />
<br />
Следует помнить следующие основные состояния: '''run''', '''beg''', '''pause''', '''save''', '''stop''', '''fast''','''add''','''del'''. Эти состояния используется чаще всего.<br><br />
Состояния таймеру мы можем передавать с помощью любого игрового объекта который может менять состояние другому объекту.<br><br />
*'''run''' - состояние которое передаем таймеру для его запуска(если таймер был на паузе то снимет с нее) ( таймер подвязанный к опциям схватит время из опций, если не стоит память)<br><br />
*'''start''' - состояние которое передаем таймеру для его запуска(если таймер был на паузе то сбросит его и запустит заново)<br><br />
*'''pause''','''stop''' - состояние которое передаем таймеру для его остановки<br><br />
*'''save''' - если заполнены поля "игра и уровень" то таймер запишет свое значение в [[Options]]<br><br />
*'''fast''' - состояние ускоренного хода таймера, ускорение определяется параметром ускорение в настройках таймера, или можно передавать параметром(fast) с помощью другого объекта. <br><br />
*'''add''' - состояние добавления времени к таймеру, добавляемое время определяется параметром дельта в настройках таймера, или можно передать параметром(delta) с помощью другого объекта. <br> <br />
*'''del''' - состояние вычитания времени из таймера, вычитаемое время определяется параметром дельта в настройках таймера, или можно передать параметром(delta) с помощью другого объекта.<br><br />
*'''value''' - состояние при котором таймер в своё поле "value" запишет текущее значение в мсек. (Если вызвать до инита объекта, может записать "левое число").<br />
<br />
== Примеры применений ==<br />
Благодаря разнообразию состояний таймера есть возможность гибкой их настройки под различные проекты.<br><br />
Например, можно считать время проведенное на уровне, время между двумя ходами, время затраченное на один ход, также если есть время, то можно высчитать и скорость и расстояние при наличии необходимых данных. Можно привязать игровое время в [[Flurry]] и отправлять количество минут проведенных в той или другой локации и т.д.<br><br />
Предположим, есть необходимость запустить таймер, для этого, с помощью какого-то объекта необходимо задать таймеру состояние '''run'''.<br><br />
Предварительно нужно настроить его в зависимости от того, в каком режиме нужно использовать его. <br><br />
Если нам необходимо поставить игру на паузу и нужно, чтобы таймер тоже стал на паузу, то нужно указать таймеру состояние '''pause'''.<br><br />
Чтобы продолжить игру нужно опять же указать ему состояние '''run'''.<br> <br />
Если указать таймеру состояние '''beg''' или '''init''', то таймер сбросится в свое первоначальное значение.<br><br />
Чтобы оперировать значением таймера, необходимо сохранить его значение. Для этого ему нужно указать ключи: игра, уровень. А в нужный момент, когда нужно, чтобы таймер сохранил свое значение необходимо последовательно ему задать два состояния: сперва нужно поставить на паузу с помощью состояния '''pause''', а потом указать состояние '''save'''. В этом случае, таймер сохранит свое текущее значение в параметр, который образует ключ игра/уровень.<br><br />
Если указать таймеру состояние '''fast''', то он должен начать идти быстрее с коэффициентом ускорения указанным в соответствующем поле. (это бывает необходимо в тех случаях, когда игрок делает подряд необдуманные ходы и нужно показать ему, что нельзя наугад делать ходы, наказать игрока)<br><br />
Состояниями '''add''' либо '''del''' можно поощрять игрока за хорошую игру прибавлением времени к таймеру, или наказывать - вычитанием при беспорядочных кликах и т.д.<br />
<br />
[[Файл:Timer11.jpg|1000px]]<br />
<br />
Результат вьювера: <br />
<br />
[[Файл:Timer21.jpg|600px]]<br />
<br />
'''Проект с таймером и демонстрацией его состояний можно посмотреть: s:\!MOBILE\!!!EditorGames\Wiki_sample\'''<br />
<br />
[[Category:Main objects]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9665Etasktemplate2018-08-01T08:50:19Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''описание подзадачи''' - Текстовый объект куда будет занесен текст из поля описания в первой подзадаче типа предмет данной задачи<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''машина состояния''' - Машина, которая получит одно из состояний таска (new, active, completed)<br />
*'''выполнено''' - Счетчик, куда будет занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда будет занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''актуализировать в таймере''' - Нужно ли объекту повторно актуализировать себя в таймере запомненной задачей (только режим копии). Нет = 0, да = 1.<br />
*'''иконка ресурса''' - Иконка ресурса, отображаемого следующим каунтером. Должна иметь состояния en - энергия, res1, res2, res3.<br />
*'''необходимо ресурса''' - Счетчик, куда будет занесена необходимая для игры в монстра или локацию энергия, деньги для ускорения экспертизы и т.д. См. предыдущее поле.<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения fail''' - Эффект, который будет склонирован для задачи, у которой кончилось время;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''поиск для монстра''' - Действие состояния search для подзадачи монстр.<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
===Реализация таймерных тасков===<br />
Таймерные таски - таски, в которых указано время на выполнение.<br />
<br />
*для таймерных тасков указываем '''время на их выполнения''' в поле для таймера в Etasktemplate. Таймер будет виден только если время в задаче > 0.<br />
*в поле '''"штраф репутации"''' указываем репутацию, которая отнимется у игрока в случае невыполнения задания. Счетчик будет виден, если поле заполнено в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
*если в таймтаске требуется подзадача опции (например, выполнить действие три раза), то используем '''счетчики "всего" и "выполнено"''' в Etasktemplate.<br />
*'''эффект выполнения fail''' используется в случае невыполнения таймерного таска. Работает так же как "эффект выполнения отметка" полностью. Начинается с состояния beg и обязан перейти в finish. После себя инициирует исчезание, если переведен в finish. Дополнительно этот эффект следует указать в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]] <property name="изменить состояние объекта - таймаут" label="изменить состояние объекта если какая-то задача кончилась таймаутом."><br />
<br />
<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9664Etasktemplate2018-08-01T08:44:55Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''описание подзадачи''' - Текстовый объект куда будет занесен текст из поля описания в первой подзадаче типа предмет данной задачи<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''машина состояния''' - Машина, которая получит одно из состояний таска (new, active, completed)<br />
*'''выполнено''' - Счетчик, куда будет занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда будет занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''актуализировать в таймере''' - Нужно ли объекту повторно актуализировать себя в таймере запомненной задачей (только режим копии). Нет = 0, да = 1.<br />
*'''иконка ресурса''' - Иконка ресурса, отображаемого следующим каунтером. Должна иметь состояния en - энергия, res1, res2, res3.<br />
*'''необходимо ресурса''' - Счетчик, куда буде занесена необходимая для игры в монстра или локацию энергия, деньги для ускорения экспертизы и т.д. См. предыдущее поле.<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения fail''' - Эффект, который будет склонирован для задачи, у которой кончилось время;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''поиск для монстра''' - Действие состояния search для подзадачи монстр.<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
===Реализация таймерных тасков===<br />
Таймерные таски - таски, в которых указано время на выполнение.<br />
<br />
*для таймерных тасков указываем '''время на их выполнения''' в поле для таймера в Etasktemplate. Таймер будет виден только если время в задаче > 0.<br />
*в поле '''"штраф репутации"''' указываем репутацию, которая отнимется у игрока в случае невыполнения задания. Счетчик будет виден, если поле заполнено в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
*если в таймтаске требуется подзадача опции (например, выполнить действие три раза), то используем '''счетчики "всего" и "выполнено"''' в Etasktemplate.<br />
*'''эффект выполнения fail''' используется в случае невыполнения таймерного таска. Работает так же как "эффект выполнения отметка" полностью. Начинается с состояния beg и обязан перейти в finish. После себя инициирует исчезание, если переведен в finish. Дополнительно этот эффект следует указать в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]] <property name="изменить состояние объекта - таймаут" label="изменить состояние объекта если какая-то задача кончилась таймаутом."><br />
<br />
<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Absolutist_Framework&diff=9659Absolutist Framework2018-08-01T08:31:29Z<p>Mlipa: </p>
<hr />
<div><br />
{{TOC right}}<br />
'''[[:category:main|Категории]]'''<br />
= Новости =<br />
Вышла новая игра HOG созданная с помощью AppSalute Game Сreator. Созданы новые уникальные эффекты и механики для обеспечения незабываемых впечатлений.<br />
Описание и видео:<br />
http://time-gap.com/<br />
<br />
= AppSalute Game Сreator =<br />
* [[Примеры приложений]]<br />
* [[Введение в AppSalute Game Сreator]]<br />
* [[Установка и настройка]]<br />
* [[Интерфейс ScenceEditor ]]<br />
* [[Интерфейс ResourceEditor ]]<br />
* [[Интерфейс TextEditor ]]<br />
*[[Интерфейс Viewer ]]<br />
* [[Книга жалоб и пожеланий]]<br />
* [[Roadmap]]<br />
* [[Внешние утилиты]]<br />
<br />
= Обучение =<br />
<br />
* [[Learning|Уроки по освоению фреймворка]]<br />
* [[Примеры реализации в играх]]<br />
* [[Основные понятия объектов физического мира]]<br />
* [[Использование AppSalute Debugger при отладке]]<br />
* [[Отладка на флеше]]<br />
* [[FAQ]]<br />
<br />
= Подготовка проекта =<br />
* [[Проектирование экранов игры]]<br />
* [[Подготовка и форматы графики]]<br />
* [[Подготовка и форматы шрифтов]]<br />
* [[Подготовка и форматы звуков]]<br />
* [[Подготовка и форматы видео]]<br />
* [[Создание проекта]]<br />
* [[Загрузка проекта по частям]]<br />
* [[Конфигурация проекта для сборки]]<br />
* [[Подготовка для загрузки на маркеты]]<br />
* [[Сборка проекта]]<br />
* [[Частые ошибки]]<br />
* [[Отличия подготовки проекта для разных платформ]]<br />
* [[Lua|Использование lua-скриптов]]<br />
* [[Подготовка версии для Viber]]<br />
* [[Проверка подгрузки текстур]]<br />
* [[Экспорт проекта]]<br />
* [[Шаблон|Экспорт/импорт шаблона проекта]]<br />
<br />
= Встроенные объекты редактора=<br />
<br />
== Common objects ==<br />
<br />
''[[Файл:Screen.png]] - [[Screen]]'' - экран<br />
<br />
''[[Файл:Scene.png]] - [[Scene]]'' - сцена<br />
<br />
== Main objects ==<br />
<br />
''[[Файл:Objects.png]] - [[Object]]'' - общие параметры для всех игровых объектов<br />
<br />
* [[Файл:Kub.png]] - [[Azmanager]] - менеджер активных зон<br />
* [[Файл:Kub.png]] - [[Active zone]] - активная зона<br />
* [[Файл:Picture.png]] - [[Image]] - картинка<br />
* [[Файл:Kub.png]] - [[Statistic]] - объект для отправки событий статистики.<br />
* [[Файл:Button.png]] - [[Button]] - кнопка<br />
* [[Файл:Text.png]] - [[Text]] - текст<br />
* [[Файл:Machine.png]] - [[Machine]] - машина состояний<br />
** [[Файл:Mwindow.png]] - [[Mwindow]] - машина состояний - окно<br />
* [[Файл:Tableicon.png]] - [[Table]] - таблица<br />
* [[Файл:Checkbox.png]] - [[Checkbox]] - чекбокс (кнопка в 2-х состояниях)<br />
* [[Файл:Checkgroup.png]] - [[Groupbox]] - группа, содержащая несколько чекбоксов<br />
* [[Файл:Timer.png]] - [[Timer]] - цифровой таймер<br />
** [[Файл:Kub.png]] - [[Globaltimer]] - таймер "реального времени"<br />
* [[Файл:Counter2.png]] - [[Counter]] - счетчик сделанных кликов в игре и т.п.<br />
* [[Файл:Progressbar.png]] - [[Progress]] - прогресс прохождения игры (эчивмент)<br />
* [[Файл:Particle.png]] - [[Flyer]] - флаер (патиклы)<br />
* [[Файл:Rectangle.png]] - [[Rectangle]] - прямоугольник<br />
* [[Файл:Kub.png]] - [[Isomover]] - объект движения в изометрической карте<br />
* [[Файл:Group.png]] - [[Group]] - группа<br />
* [[Файл:Groupset.png]] - [[Groupset]] - группа<br />
* [[Файл:Effect.jpg|20px]] - [[Effect]] - Создание различных эффектов<br />
* [[Файл:Graphprogress.png]] - [[Graphprogress]] - создание мини-карты для отображения прогресса прохождения игры.<br />
* [[Файл:Statesmanager_ico.png]] - [[Statesmanager]] - очередь работы с объектами<br />
* [[Файл:Slider icons.png]] - [[Slider]] - объект реализующий листание списка.<br />
* [[Файл:Ribbon.png]] - [[Ribbon]] - объект отображения графики по сплайну<br />
* [[Файл:Kub.png]] - [[Animation]] - объект различных анимаций<br />
* [[Файл:Kub.png]] - [[Magicparticles]] - объект файлов Magic Particles<br />
* [[Файл:Kub.png]] - [[puzzle3D]] - 3D паззл<br />
* [[Файл:Kub.png]] - [[3D-object]] - 3D объект<br />
* [[Файл:Kub.png]] - [[Scriptresources]] - scriptresources<br />
* [[Файл:Kub.png]] - [[Partnersconsole]] - partnersconsole<br />
<br />
== Game mechanic ==<br />
<br />
===Игровые объекты===<br />
<br />
* [[Файл:Kub.png]] - [[Avoider]] - эвойдер<br />
* [[Файл:Kub.png]] - [[Battle]] - боевка<br />
* [[Файл:Puzzle.png]] - [[Puzzle]] - игра пазл<br />
* [[Файл:Memory.png]] - [[Memory]] - класс игр с memory-механикой<br />
* [[Файл:Patchwork.png]] - [[Patchwork]] - класс игр с Patchwork-механикой<br />
* [[Файл:Match3.png]] - [[Match]] - класс match-подобных игр<br />
* [[Файл:Collaps.png]] - [[Collapse]] - класс match-подобных игр<br />
* [[Файл:Bejewelled.png]] - [[Bejewelled]] - класс match-подобных игр<br />
* [[Файл:Bs_old.png]] - [[Bubble Shooter]] - класс Bubble игр включая механику Снукер<br />
* [[Файл:BubbleShooter.png]] - [[Bubble Shooter NEW]] - класс Bubble игр включая механику Снукер (Новый)<br />
* [[Файл:Tapthebubble.png]] - [[TapTheBubble]] - механика игры Tap The Bubble<br />
* [[Файл:GemSlider.jpg]] - [[Gem Slider]] - механика игры Gem Slider<br />
* [[Файл:W-57.png]] - [[Words]] - механика игры Words<br />
* [[Файл:Kub.png]] - [[2048]] - механика игры 2048<br />
* [[Файл:Kub.png]] - [[Planet]] - игра "Планетки"<br />
* [[Файл:Kub.png]] - [[Unblock]] - механика игры unblock<br />
* [[Файл:Kub.png]] - [[AtomicPuzzle]] - механика игры Atomic puzzle<br />
* [[Файл:Matchbattle.png]] - [[Match Battle]] - настройка глобальных параметров для мини-игр<br />
* [[Файл:Move box.png]] - [[DragBox]] - класс игр с dragbox-механикой<br />
* [[Файл:Labyrinth.png]] - [[Labyrinth]] - класс игр лабиринт<br />
* [[Файл:Pipes.png]] - [[Pipes]] - класс игр трубы<br />
* [[Файл:Kub.png]] - [[Color Switch]] - механика игры Color Switch<br />
* [[Файл:Slotmachine.png]] - [[Slotmachine]] - объект типа "slot"<br />
* [[Файл:Kub.png]] - [[trivia]] - игровая механика - миллионер (trivia)<br />
* [[Файл:Kub.png]] - [[CakeTower]] - объект шаблона ячейки с животным.<br />
* [[Файл:Kub.png]] - [[Pentamino]] - механика игры в [https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8%D0%BD%D0%BE пентамино]<br />
* [[Файл:Kub.png]] - [[TapTheNew]]<br />
* [[Файл:Kub.png]] - [[solitaire]] - солитер<br />
* [[Файл:digitz.png]] - [[Digitz]] - механика игры Digitz.<br />
* [[Файл:Kub.png]] - [[Wordsearch]] - механика поиска слов на поле<br />
* [[Файл:Kub.png]] - [[Script Game]] - Script Game<br />
* [[Файл:Kub.png]] - [[Eanalysis]] - экспертиза улик<br />
<br />
<br />
===Поиск предметов===<br />
<br />
* [[Файл:Search object.png]] - [[HiddenObject]] - поисковый объект в хидден играх<br />
* [[Файл:Object list.png]] - [[HiddenList]] - список поисковых объектов в хидден играх<br />
* [[Файл:Hint.png]] - [[HiddenHint]] - подсказка (указатель на спрятанный объект)<br />
* [[Файл:Kub.png]] - [[HiddenHighLighter]] - позволяет показать не найденные объекты в хиддене.<br />
* [[Файл:Collection.png]] - [[Collection]] - "коллекция" поисковых объектов для хидден игр<br />
<br />
<br />
===Инвентарь===<br />
<br />
* [[Файл:Inventory.png]] - [[Inventory]] - "инвентарь" список применяемых объектов для игр<br />
* [[Файл:Tool.png]] - [[Tool]] - "применение" - объект, который можно применить для игр<br />
<br />
<br />
===Изомап===<br />
<br />
* [[Файл:Kub.png]] - [[Isomap]] - изометрическая карта<br />
<br />
===Экономика===<br />
<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<br />
** [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции<br />
<br />
* [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря/магазина и экономики <br />
** [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина <br />
** [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря <br />
** [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета.<br />
<br />
* [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий <br />
** [[Файл:Kub.png]] - [[Etasktemplate]] - шаблон задачи для таблицы темплейтов.<br />
** [[Файл:Kub.png]] - [[Elogbooktemplate]] - шаблон отображения ячейки логбука.<br />
** [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания<br />
<br />
* [[Файл:Kub.png]] - [[Pseudochat]] - менеджер реплик.<br />
** [[Файл:Kub.png]] - [[Pseudochattemplate]] - шаблон для менеджера реплик.<br />
<br />
<br />
* [[Файл:Kub.png]] - [[Dressing]] - гардероб.<br />
** [[Файл:Kub.png]] - [[Dressingtemplate]] - объект шаблона гардероба.<br />
<br />
===Питомцы===<br />
<br />
* [[Файл:Kub.png]] - [[Pet]] - объект питомца.<br />
** [[Файл:Kub.png]] - [[PetCollectionTemplate]] - объект шаблона ячейки с коллекцией.<br />
** [[Файл:Kub.png]] - [[PetTemplate]] - объект шаблона ячейки с животным.<br />
<br />
<br />
===Физмир===<br />
<br />
* [[Файл:Physicsworld.png]] - [[Physicsworld]] - физический мир Box2D<br />
** [[Файл:Physicsobject.png]] - [[Physicsobject]] - физические объекты<br />
** [[Файл:Physics links.png]] - [[Physicsjoint]] - физические соединения<br />
<br />
===Другие объекты===<br />
<br />
* [[Файл:Paint.png]] - [[Paint]] - объект для рисования <br />
* [[Файл:Eraser.png]] - [[Eraser]] - стирачка<br />
* [[Файл:Kub.png]] - [[Dailybonus]] - объект для управления механизмом ежедневного бонуса за вход в игру.<br />
* [[Файл:Kub.png]] - [[Builder]] - механика типа фермы<br />
** [[Файл:Kub.png]] - [[Builderitem]] - объект шаблона здания<br />
** [[Файл:Kub.png]] - [[Buildercomponent]] - шаблон материала для апгрейда здания<br />
<br />
== Global score ==<br />
* [[Файл:Gamecenter.png]] - [[Gamecenter]] - объект для отправки данных на GameCenter iTunse<br />
**[[Файл:Kub.png]] - [[Achievementitem]] - шаблон локального достижения (оффлайн ачивка)<br />
* [[Файл:Gamecircle.jpg]] - [[Amazon GameCircle]] - объект для отправки данных Amazon GameCircle<br />
* [[Файл:Google-play-games-android.jpg]] - [[Google Play services]] - объект для отправки данных на Google Play services<br />
* [[Файл:Localtoplist.png]] - [[Localtoplist]] - настройки для отображения результатов прохождения игры<br />
* [[Файл:Globaltoplist.png]] - [[Globaltoplist]] - настройки для отображения результатов прохождения игры<br />
* [[Файл:Globaltopsender.png]] - [[Globaltopsender]] - настройки для отображения результатов прохождения игры<br />
*[[Файл:Kub.png]] - [[Leaderboardsitem]] - Шаблон для помещения в таблицу лидербордов.<br />
<br />
== Options ==<br />
* [[Файл:Options.png]] - [[Options]] - общие настройки игры<br />
* [[Файл:Gamedata.png]] - [[Gamedata]] -<br />
* [[Файл:Controls.png]] - [[Controls]] - обьект для работы с клавишами клавиатуры или девайса <br />
* [[Файл:Editicon.png]] - [[Edit]] - ввод текста<br />
* [[Файл:Store.png]] - [[Store]] - настройки InApp покупок в игре<br />
** [[Файл:Kub.png]] - [[Wallet]] - объект для начисления игровой валюты при InApp покупках через объект economics<br />
* [[Файл:Notification.png]] - [[Notification]] - push-уведомления<br />
* [[Файл:Imagepicker.png]] - [[Imagepiker]] - объект для загрузки фото из галереи<br />
* [[Файл:Video.png]] - [[Video]] - объект для просмотра видео<br />
* [[Файл:Webview.png]] - [[Webview]] - объект для просмотра интернет страниц в приложении<br />
* [[Файл:Flurryobject.png]] - [[Flurry]] - настройки системы статистики для приложений https://dev.flurry.com<br />
* [[Файл:Moregames.png]] - [[MoreGamesList]] - запрос банеров рекламируемых игр<br />
* [[Файл:Advertisement.png]] - [[Advertisement]] - банерная система flurry, amazon<br />
* [[Файл:Splitmanager.png]] - [[Splitmanager or A\B Testing]] - менеджер сплитов<br />
* [[Файл:Tapjoy.png]] - [[Tapjoy]] - система рекламы игр<br />
* [[Файл:Playhaven.png|24px]] - [[Playhaven]] - система рекламы игр с внутренними up-sale<br />
* [[Файл:Mobileapptracker.png|24px]] - [[Mobileapptracking]] -<br />
* [[Файл:Chartboost-logo-new.jpeg]] - [[Chartboost]] - Chartboost-logo-new.jpeg<br />
* [[Файл:Kub.png]] - [[SuperSonic]] - провайдер рекламы SuperSonic<br />
* [[Файл:Kub.png]] - [[System]] - объект для доступа к системным настройкам<br />
* [[Файл:Kub.png]] - [[Salesmanager]] - менеджер акций<br />
* [[Файл:Kub.png]] - [[Cloud]] - объект для синхронизации в облаке<br />
* [[Файл:Kub.png]] - [[Game]] - объект для отправки событий<br />
* [[Файл:Kub.png]] - [[Errormanager]] - менеджер ошибок<br />
* [[Файл:Kub.png]] - [[Multiplayer]] - объект мультиплеера<br />
<br />
== Social ==<br />
* [[Файл:Facebook.png]] - [[Facebook]] - настройки расшаривания Facebook<br />
** [[Файл:Esocialfrienditem.png]] - [[Esocialitem]] - Шаблон для ячейки списка друзей<br />
** [[Файл:Kub.png]] - [[Esocialgiftitem]] - Шаблон для ячейки с предметом, который можно подарить другу<br />
** [[Файл:Esocial.png]] - [[Esocial]] - объект для взаимодействия с Facebook'ом<br />
* [[Файл:Twitter.png]] - [[Twitter]] - настройки расшаривания Twitter<br />
* [[Файл:Odnoklassniki.png]] - [[Odnoklassniki]] - настройки для социальной сети Одноклассники<br />
* [[Файл:Googleplus.png]] - [[GooglePlus]] - настройки для социальной сети GooglePlus<br />
* [[Файл:Kub.png]] - [[ShareDialog]] - объект для вызова окна шаринга в другие приложения устройства<br />
<br />
== Functions ==<br />
* [[Файл:Forward.png]] - [[SendMail]] - отправка письма через почтовый клиент<br />
* [[Файл:footer-icon-rate.png]] - [[Rate]] - вызов окна оценки приложения<br />
* [[Файл:Kub.png]] - [[Config]] - конфиг для игровой механики<br />
<br />
----<br />
[[Файл:!.png]] - [[Правила оформления]] - Требование к описанию объектов. <br />
----<br />
<gallery widths="50px" heights="50px" ><br />
Изображение:Who.png<br />
Изображение:AnimalHideSeek.png<br />
Изображение:travel.png<br />
Изображение:Game_Adventure_Train.png<br />
Изображение:Gmae_Match_MoveTheDolly.png<br />
Изображение:Game_Patchwork_BigEyes.png<br />
Изображение:Game_Patchwork_Chameleon.png<br />
Изображение:Game_Patchwork_Logicly.png<br />
Изображение:Game_Patchwork_Stickers.png<br />
Изображение:Elephant.png<br />
Изображение:Elephant2.png<br />
Изображение:Cinderella.png<br />
Изображение:Pigs.png<br />
Изображение:Bremenskye.png<br />
Изображение:Book_SnowWhite.png<br />
Изображение:Book_PussInBoots.png<br />
Изображение:Call.png<br />
Изображение:GreatestArtists.png<br />
Изображение:Game_Puzzle_Kids.png<br />
Изображение:Game_Puzzle_Architect.png<br />
Изображение:Game_Puzzle_Science.png<br />
Изображение:Ico_1_114_Full.png<br />
Изображение:Game_Adventure_Dreams.png<br />
Изображение:Abc.png<br />
Изображение:Ico_114_Full.png<br />
Изображение:Ico_114_Paints.png<br />
Изображение:Ico_114_Puzzle.png<br />
</gallery><br />
<br />
<br />
[[category:main]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenObject&diff=9647HiddenObject2018-08-01T08:03:42Z<p>Mlipa: </p>
<hr />
<div>HiddenObject - поисковый [[Object|объект]] на сцене в хидден-игре.<br />
Добавив из редактора ресурсов на сцену картинку поискового предмета, мы изменяем его тип на hiddenObject.<br><br />
Можно применить групповое изменение типа, выделив с помощью "Shift" или "Ctrl" группу картинок.<br />
Все хидден-объекты должны быть подключены к объекту с типом [[HiddenList]].<br />
<br />
== Общие параметры ==<br />
<br />
(см. описание [[Object|Object]])<br />
*'''имя''' ('' nm '') - Имя объекта HiddenObject в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenObject, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
<br />
== Основные параметры ==<br />
<br />
[[Файл:hid_ob1.jpg|right]]<br />
<br />
*'''картинка''' ('' res '') - Графический ресурс хидден-объекта. Перетаскивается мышкой из редактора ресурсов (поле должно быть в состоянии редактирования). <br />
*'''текстID ''' ('' txtID '') - Название хидден-объекта, которое будет отображаться в таблице. Перетаскивается мышкой из текстового редактора (поле должно быть в состоянии редактирования).<br />
*'''связанный предмет экономики ''' ('' economicsID '') - Связанный предмет экономики, участвует в тасках и т.п. Указываем txtID предмета из экономики. Он будет виден на сцене, как хидден-объект.<br />
*'''использовать текстID для связи ''' ('' economicsMain '') - использовать текстID для связи<br />
*'''текст''' ('' txt '') - При отсутствии ТекстID в таблице будет отображаться этот текст.<br />
*'''list''' ('' lst '') - Ссылка на [[HiddenList]], к которому будет подключен объект.<br />
*''' actor''' ('' actor '') - Анимация (машина состояний), которая запустится после нахождения объекта. В этой машине состояний должно быть обязательно состояние show, в котором будет описана, например, анимация полёта актёра.<br />
*''' flayer''' ('' fl '') - Объект типа flyers, который запустится при клике на спрятанный объект. Можно указывать машину с состоянием "beg".<br />
*'''тип''' ('' kind '') - Номер типа объекта. Используется при выставленном ограничении в [[HiddenList]] (поле [одного типа]).<br />
*'''обязательный''' ('' forced ''):<br />
:'''1''' - объект всегда будет в списке на поиск;<br />
:'''0''' - обычный объект ( может попасть в список, а может и не попасть). <br />
*'''выделение цветом''' ('' colored ''):<br />
:'''1''' - на объект будут распространяться выделения цветом (цвет указывается в HiddenList);<br />
:'''0''' - не будет распространяться.<br />
*''' подсвечиваемый''' ('' can_highlight '') - Может ли объект подсвечиваться хинтом<br />
:'''1''' - да;<br />
:'''0''' - нет.<br />
*'''предпочитаемый''' ('' preferred ''):<br />
:'''да''' - объект является предпочитаемым (используется при исключении объектов с одинаковыми textID);<br />
:'''нет''' - не является.<br />
*'''сессия''' ('' ses '') - Сессия, в которой должен появиться объект ( по умолчанию = "-1").<br />
*'''набор''' ('' kit '') - Набор, к которому принадлежит объект. Принимает значения 1, 2, 3 и т.д. Указывается в HiddenList.<br />
*'''приоритет''' ('' prior '') - Приоритет объект, определит его положение в списке. У хидден-листа должна быть включена сортировка по приоритету<br />
*'''collection''' ('' col '') - Объект типа [[Collection]], к которому относится данный объект. Если объект не коллекционный - просто не задавать.<br />
*'''сохранять клики''' ('' saveclk '') - Сохранять клики по предметам в опции (по умолчанию они хранятся в рамках сессии)<br />
*'''сложность''' ('' diffic '') - Параметр, определяющий сложность объекта, 0 - самый простой, чем больше параметр, тем сложнее. Если есть 4 раскладки объекта мяч (общий txtID), каждому объекту мячу задается сложность. Перед началом игры у хидден листа есть рандомный набор текстовых айди объектов. Если в хидден листе включена сложность, хидден лист выберет наиболее простые объекты для выбранных txtID. <br />
*'''прокликиваемость''' ('' passClk ''):<br />
:'''0''' - объект сам обрабатывает клик и не пропускает его дальше; <br />
:'''1''' - объект прозрачен для клика мышкой (пропускает объектам под ним);<br />
:'''2''' - объект сам обрабатывает клик, но и пропускает его дальше".<br />
*'''economicsMain''' - если да, то в поле '''economicsID''' будет взят id из поля '''txtID''' (коллекционный предмет и HO - один объект);<br />
<br />
Выделив более 2-х хидден объектов у нас будут параметры группового изменения.<br />
Таким образом мы легко можем выставить прокликиваемость или один [[HiddenList]] всем нашим объектам сразу!<br />
<br />
== Настройка морф-объектов ==<br />
[[Файл:морф.jpg|right|320px]]<br />
Обязательно в редакторе ресурсов нужно обвести 4-мя шейпами изображение (см. скрин)<br />
*'''включить''' - Сделать объект морфом;<br />
*'''картинка''' - Графический ресурс изображения спрятанного объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования);<br />
*'''время трансформации''' - Время трансформации морфа;<br />
*'''время смены состояния''' - Время смены состояния морфа (значение меньше transform_time == переключение отключено);<br />
*'''время запуска смены''' - Время запуска цикла смены состояний морфа (значение меньше transform_time == переключение отключено);<br />
*'''начальное состояние''' - Начальное состояние морфа;<br />
*'''остановка морфинга''' - Останавливать морфинг после нахождения хинтом;<br />
<br />
== Состояния объекта ==<br />
<br />
У хидден объекта есть состояния, которыми можно управлять с помощью машин. Также можно отслеживать, в каком сейчас состоянии находится хидден-объект. Доступны следующие состояния которые можем использовать:<br />
<br />
*'''wait''' - находиться на сцене и ожидает события;<br />
*'''raise''' - после клика объект поднимается вверх и увеличивается;<br />
*'''fly''' - объект летит к цели, вращаясь и уменьшаясь;<br />
*'''find''' - можно передавать с помощью разных объектов, сообщает хиддену что он найден (имитировать клик на объекте).<br><br />
<br />
== Примечания ==<br />
<br />
* Актёры нужны тогда, когда отличается графика объекта, который непосредственно находится на сцене и который летит к таблице. Это может быть случай, когда на сцене лежит часть объекта, а летит целый. Или же на сцене - с тенью, а летит - без.<br><br />
<br />
* Заполнение таблицы "обязательными" объектами происходит построчно слева направо случайным образом. Если такой "обязательный" объект для хидден-листа один, то он всегда будет находиться в левом верхнем углу.<br><br />
<br />
* Для минимализации действий и затрачиваемого времени желательно применять к хидден-объектам групповое изменение параметров (клавишами crl или shift). Т.е. добавили из базы ресурсов хидден-картинки => Все их выделили => И один раз задали им тип "HiddenObject", хидден-лист, флаер нахождения, добавляемые параметры и т.д.<br><br />
<br />
* Зачастую необходимо знать есть ли хидден-объект на сцене. Проверить это можно по параметру "vis".<br />
<br />
* Пусть у Ваших хидден-объектов один общий актер. В момент нахождение хидден-объекта он передает актёру состояние '''show'''. И пусть в этом состоянии вы считываете координаты гостя (т.е. хидден-объекта), чтобы с того места, к примеру, запустить флаер, машину или что-то еще. '''Так вот этого делать нельзя!''' В результате при следующем посещении экрана Вы увидите, что у хидден-объектов изменились координаты. Дело в некоторой архитектурной проблеме. Выход есть. Перед запуском актёра нужно ставить ему параметры '''hox''' и '''hoy''', обозначающие координаты объекта его запустившего. Т.е. актёр вместо вычитки координат гостя (хидден-объекта)будет сам у себя читать вышеупомянутые параметры. Например, <br><br />
<br />
[[Файл:Hid_ob_act.jpg]]<br />
<br />
* Также в хидден-сценах можно осуществлять поиск логических пар, например мышь-мышеловка, лук-стрела и т. д. Важно чтобы два предмета, составляющие пару, находились на сцене вдвоем (пара считается найденной если игрок тапнул на один предмет пары и след. тапом тапнул второй предмет этой же пары). Также при использовании хинта подсвечиваются два предмета, составляющие одну пару. <br />
Настройки: <br />
1) в парных объектах hiddenObject поле Тип (kind) должно быть одинаково;<br />
2) в объекте hiddenList в группе Внешний вид включить настройку “поиск пар”; <br />
3) актер помимо стандартных состояний fly и fly_end должен иметь состояние highlight - подсветка первого предмета в паре. <br />
4) для хинтования пары в объекте Hint в хинте (искра) необходимо задать второй хвост и второй указатель (причем отличный от первого).<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:hid_ob_2.jpg|right]]<br />
<br />
[[Файл:+.png]]'''Дополнительная коллекция''' ('' add_col '') - используется в случае, если объекту нужно относиться более чем к одной:<br />
:'''id''' ('' col '') - Объект типа коллекция, к которому относится данный объект.<br />
<br />
<br />
[[Файл:+.png]]'''связанный объект''' ('' addLnkObj '') - Связанный объект на противоположном фоне при поиске различий:<br />
:'''связанный объект''' ('' lnkObj '') - Связанный объект на противоположном фоне при поиске различий.<br />
<br />
<br />
[[Файл:+.png]]'''изменить параметр объекта''' ('' chg '') - При нахождении объекта изменить параметр объекта:<br />
:'''объект''' ('' obj '') - При нахождении объекта этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''изменить состояние объекта''' ('' nst '') - При нахождении объекта перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - При нахождении объекта перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
[[Файл:+.png]]'''клик на найденный хидден:''' ('' chgComp '') изменить параметр объекта:<br />
:'''объект''' ('' obj '') - Объект, параметр которого нужно изменить;<br />
:'''параметр''' ('' par '') - Параметр, которое нужно изменить;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''клик на найденный хидден:''' ('' nstComp '') изменить состояние объекта:<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
<br />
[[Файл:+.png]]'''объект вернулся на место через putback:''' ('' chgPb '') изменить параметр объекта:<br />
:'''объект''' ('' obj '') - Объект, параметр которого нужно изменить;<br />
:'''параметр''' ('' par '') - Параметр, которое нужно изменить;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''объект вернулся на место через putback:''' ('' nstPb '') изменить состояние объекта:<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
<br />
[[Файл:+.png]]'''объект появился как новый объект:''' изменить состояние объекта ('' ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
== Пример ==<br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenObject&diff=9644HiddenObject2018-08-01T08:00:31Z<p>Mlipa: </p>
<hr />
<div>HiddenObject - поисковый [[Object|объект]] на сцене в хидден-игре.<br />
Добавив из редактора ресурсов на сцену картинку поискового предмета, мы изменяем его тип на hiddenObject.<br><br />
Можно применить групповое изменение типа, выделив с помощью "Shift" или "Ctrl" группу картинок.<br />
Все хидден-объекты должны быть подключены к объекту с типом [[HiddenList]].<br />
<br />
== Общие параметры ==<br />
<br />
(см. описание [[Object|Object]])<br />
*'''имя''' ('' nm '') - Имя объекта HiddenObject в дереве проекта. Может быт произвольным.<br />
*'''id-объекта''' - Уникальный номер объекта HiddenObject, который можно увидеть в строке "имя" либо при наведении курсора на неё.<br />
*'''синхронизация''' ('' sync '') - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да". <br />
*'''сохранение параметров''' ('' sv '') - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.<br />
*'''z''' ('' z '') - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.<br />
*'''память''' ('' memo ''):<br />
:'''1''' - при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана);<br />
:'''0''' - обновит свои параметры, при повторном открытии экрана.<br />
<br />
== Основные параметры ==<br />
<br />
[[Файл:hid_ob1.jpg|right]]<br />
<br />
*'''картинка''' ('' res '') - Графический ресурс хидден-объекта. Перетаскивается мышкой из редактора ресурсов (поле должно быть в состоянии редактирования). <br />
*'''текстID ''' ('' txtID '') - Название хидден-объекта, которое будет отображаться в таблице. Перетаскивается мышкой из текстового редактора (поле должно быть в состоянии редактирования).<br />
*'''связанный предмет экономики ''' ('' economicsID '') - Связанный предмет экономики, участвует в тасках и т.п.<br />
*'''использовать текстID для связи ''' ('' economicsMain '') - использовать текстID для связи<br />
*'''текст''' ('' txt '') - При отсутствии ТекстID в таблице будет отображаться этот текст.<br />
*'''list''' ('' lst '') - Ссылка на [[HiddenList]], к которому будет подключен объект.<br />
*''' actor''' ('' actor '') - Анимация (машина состояний), которая запустится после нахождения объекта. В этой машине состояний должно быть обязательно состояние show, в котором будет описана, например, анимация полёта актёра.<br />
*''' flayer''' ('' fl '') - Объект типа flyers, который запустится при клике на спрятанный объект. Можно указывать машину с состоянием "beg".<br />
*'''тип''' ('' kind '') - Номер типа объекта. Используется при выставленном ограничении в [[HiddenList]] (поле [одного типа]).<br />
*'''обязательный''' ('' forced ''):<br />
:'''1''' - объект всегда будет в списке на поиск;<br />
:'''0''' - обычный объект ( может попасть в список, а может и не попасть). <br />
*'''выделение цветом''' ('' colored ''):<br />
:'''1''' - на объект будут распространяться выделения цветом (цвет указывается в HiddenList);<br />
:'''0''' - не будет распространяться.<br />
*''' подсвечиваемый''' ('' can_highlight '') - Может ли объект подсвечиваться хинтом<br />
:'''1''' - да;<br />
:'''0''' - нет.<br />
*'''предпочитаемый''' ('' preferred ''):<br />
:'''да''' - объект является предпочитаемым (используется при исключении объектов с одинаковыми textID);<br />
:'''нет''' - не является.<br />
*'''сессия''' ('' ses '') - Сессия, в которой должен появиться объект ( по умолчанию = "-1").<br />
*'''набор''' ('' kit '') - Набор, к которому принадлежит объект. Принимает значения 1, 2, 3 и т.д. Указывается в HiddenList.<br />
*'''приоритет''' ('' prior '') - Приоритет объект, определит его положение в списке. У хидден-листа должна быть включена сортировка по приоритету<br />
*'''collection''' ('' col '') - Объект типа [[Collection]], к которому относится данный объект. Если объект не коллекционный - просто не задавать.<br />
*'''сохранять клики''' ('' saveclk '') - Сохранять клики по предметам в опции (по умолчанию они хранятся в рамках сессии)<br />
*'''сложность''' ('' diffic '') - Параметр, определяющий сложность объекта, 0 - самый простой, чем больше параметр, тем сложнее. Если есть 4 раскладки объекта мяч (общий txtID), каждому объекту мячу задается сложность. Перед началом игры у хидден листа есть рандомный набор текстовых айди объектов. Если в хидден листе включена сложность, хидден лист выберет наиболее простые объекты для выбранных txtID. <br />
*'''прокликиваемость''' ('' passClk ''):<br />
:'''0''' - объект сам обрабатывает клик и не пропускает его дальше; <br />
:'''1''' - объект прозрачен для клика мышкой (пропускает объектам под ним);<br />
:'''2''' - объект сам обрабатывает клик, но и пропускает его дальше".<br />
*'''economicsMain''' - если да, то в поле '''economicsID''' будет взят id из поля '''txtID''' (коллекционный предмет и HO - один объект);<br />
<br />
Выделив более 2-х хидден объектов у нас будут параметры группового изменения.<br />
Таким образом мы легко можем выставить прокликиваемость или один [[HiddenList]] всем нашим объектам сразу!<br />
<br />
== Настройка морф-объектов ==<br />
[[Файл:морф.jpg|right|320px]]<br />
Обязательно в редакторе ресурсов нужно обвести 4-мя шейпами изображение (см. скрин)<br />
*'''включить''' - Сделать объект морфом;<br />
*'''картинка''' - Графический ресурс изображения спрятанного объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования);<br />
*'''время трансформации''' - Время трансформации морфа;<br />
*'''время смены состояния''' - Время смены состояния морфа (значение меньше transform_time == переключение отключено);<br />
*'''время запуска смены''' - Время запуска цикла смены состояний морфа (значение меньше transform_time == переключение отключено);<br />
*'''начальное состояние''' - Начальное состояние морфа;<br />
*'''остановка морфинга''' - Останавливать морфинг после нахождения хинтом;<br />
<br />
== Состояния объекта ==<br />
<br />
У хидден объекта есть состояния, которыми можно управлять с помощью машин. Также можно отслеживать, в каком сейчас состоянии находится хидден-объект. Доступны следующие состояния которые можем использовать:<br />
<br />
*'''wait''' - находиться на сцене и ожидает события;<br />
*'''raise''' - после клика объект поднимается вверх и увеличивается;<br />
*'''fly''' - объект летит к цели, вращаясь и уменьшаясь;<br />
*'''find''' - можно передавать с помощью разных объектов, сообщает хиддену что он найден (имитировать клик на объекте).<br><br />
<br />
== Примечания ==<br />
<br />
* Актёры нужны тогда, когда отличается графика объекта, который непосредственно находится на сцене и который летит к таблице. Это может быть случай, когда на сцене лежит часть объекта, а летит целый. Или же на сцене - с тенью, а летит - без.<br><br />
<br />
* Заполнение таблицы "обязательными" объектами происходит построчно слева направо случайным образом. Если такой "обязательный" объект для хидден-листа один, то он всегда будет находиться в левом верхнем углу.<br><br />
<br />
* Для минимализации действий и затрачиваемого времени желательно применять к хидден-объектам групповое изменение параметров (клавишами crl или shift). Т.е. добавили из базы ресурсов хидден-картинки => Все их выделили => И один раз задали им тип "HiddenObject", хидден-лист, флаер нахождения, добавляемые параметры и т.д.<br><br />
<br />
* Зачастую необходимо знать есть ли хидден-объект на сцене. Проверить это можно по параметру "vis".<br />
<br />
* Пусть у Ваших хидден-объектов один общий актер. В момент нахождение хидден-объекта он передает актёру состояние '''show'''. И пусть в этом состоянии вы считываете координаты гостя (т.е. хидден-объекта), чтобы с того места, к примеру, запустить флаер, машину или что-то еще. '''Так вот этого делать нельзя!''' В результате при следующем посещении экрана Вы увидите, что у хидден-объектов изменились координаты. Дело в некоторой архитектурной проблеме. Выход есть. Перед запуском актёра нужно ставить ему параметры '''hox''' и '''hoy''', обозначающие координаты объекта его запустившего. Т.е. актёр вместо вычитки координат гостя (хидден-объекта)будет сам у себя читать вышеупомянутые параметры. Например, <br><br />
<br />
[[Файл:Hid_ob_act.jpg]]<br />
<br />
* Также в хидден-сценах можно осуществлять поиск логических пар, например мышь-мышеловка, лук-стрела и т. д. Важно чтобы два предмета, составляющие пару, находились на сцене вдвоем (пара считается найденной если игрок тапнул на один предмет пары и след. тапом тапнул второй предмет этой же пары). Также при использовании хинта подсвечиваются два предмета, составляющие одну пару. <br />
Настройки: <br />
1) в парных объектах hiddenObject поле Тип (kind) должно быть одинаково;<br />
2) в объекте hiddenList в группе Внешний вид включить настройку “поиск пар”; <br />
3) актер помимо стандартных состояний fly и fly_end должен иметь состояние highlight - подсветка первого предмета в паре. <br />
4) для хинтования пары в объекте Hint в хинте (искра) необходимо задать второй хвост и второй указатель (причем отличный от первого).<br />
<br />
== Добавляемые параметры ==<br />
<br />
[[Файл:hid_ob_2.jpg|right]]<br />
<br />
[[Файл:+.png]]'''Дополнительная коллекция''' ('' add_col '') - используется в случае, если объекту нужно относиться более чем к одной:<br />
:'''id''' ('' col '') - Объект типа коллекция, к которому относится данный объект.<br />
<br />
<br />
[[Файл:+.png]]'''связанный объект''' ('' addLnkObj '') - Связанный объект на противоположном фоне при поиске различий:<br />
:'''связанный объект''' ('' lnkObj '') - Связанный объект на противоположном фоне при поиске различий.<br />
<br />
<br />
[[Файл:+.png]]'''изменить параметр объекта''' ('' chg '') - При нахождении объекта изменить параметр объекта:<br />
:'''объект''' ('' obj '') - При нахождении объекта этот объект меняет свой параметр;<br />
:'''свойство''' ('' par '') - Параметр, который мы изменяем;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''изменить состояние объекта''' ('' nst '') - При нахождении объекта перевести объект в новое состояние:<br />
:'''объект''' ('' obj '') - При нахождении объекта перевести объект в состояние из следующего поля;<br />
:'''состояние''' ('' st '') - Новое состояние для объекта из предыдущего поля.<br />
<br />
<br />
[[Файл:+.png]]'''клик на найденный хидден:''' ('' chgComp '') изменить параметр объекта:<br />
:'''объект''' ('' obj '') - Объект, параметр которого нужно изменить;<br />
:'''параметр''' ('' par '') - Параметр, которое нужно изменить;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''клик на найденный хидден:''' ('' nstComp '') изменить состояние объекта:<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
<br />
[[Файл:+.png]]'''объект вернулся на место через putback:''' ('' chgPb '') изменить параметр объекта:<br />
:'''объект''' ('' obj '') - Объект, параметр которого нужно изменить;<br />
:'''параметр''' ('' par '') - Параметр, которое нужно изменить;<br />
:'''значение''' ('' val '') - Новое значение параметра.<br />
<br />
<br />
[[Файл:+.png]]'''объект вернулся на место через putback:''' ('' nstPb '') изменить состояние объекта:<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
<br />
[[Файл:+.png]]'''объект появился как новый объект:''' изменить состояние объекта ('' ''):<br />
:'''объект''' ('' obj '') - Объект, состояние которого нужно изменить;<br />
:'''состояние''' ('' st '') - Новое состояние объекта.<br />
<br />
== Пример ==<br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9640HiddenList2018-08-01T07:23:06Z<p>Mlipa: </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 />
*'''прятать актеров при старте''' ('' 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 />
== Авто тест 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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9638HiddenList2018-08-01T07:11:48Z<p>Mlipa: </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 />
*'''прятать актеров при старте''' ('' 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 />
*'''очки детектив макс. комбо''' (''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 />
== Авто тест 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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9637HiddenList2018-08-01T07:03:11Z<p>Mlipa: </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 />
*'''вероятность пассивного предпочитаемого объекта''' ('' 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 />
*'''очки детектив макс. комбо''' (''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 />
== Авто тест 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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9609HiddenList2018-07-09T12:19:12Z<p>Mlipa: </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 />
*'''очки детектив макс. комбо''' (''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 />
== Авто тест 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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9608HiddenList2018-07-09T12:17:17Z<p>Mlipa: </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 />
*'''очки детектив макс. комбо''' (''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 />
<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 />
== Авто тест 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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9545Taskorganizer2018-05-14T12:13:09Z<p>Mlipa: </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 />
В опции суммарно будет записываться значение два параметра:<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 />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Изменить состояние объекта - таймаут==<br />
<br />
Позволяет изменить состояние объекта если какая-то задача кончилась таймаутом, находится в taskorganizer setup. Создан для таймерных заданий, которые работают через [[Etasktemplate|Etasktemplate]]. Указываем '''эффект выполнения fail''' из [[Etasktemplate#Реализация таймерных тасков|Etasktemplate]]. Эффект используется, когда задание завершилось провалом по истечению времени.<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9544Taskorganizer2018-05-14T12:10:58Z<p>Mlipa: </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 />
В опции суммарно будет записываться значение два параметра:<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 />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Изменить состояние объекта - таймаут==<br />
<br />
Позволяет изменить состояние объекта если какая-то задача кончилась таймаутом, находится в taskorganizer setup. Создан для таймерных заданий, которые работают через [[Etasktemplate|Etasktemplate]]. Указываем '''эффект выполнения fail''' из [[Etasktemplate|Etasktemplate]]. Эффект используется, когда задание завершилось провалом по истечению времени.<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9543Taskorganizer2018-05-14T12:10:05Z<p>Mlipa: </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 />
В опции суммарно будет записываться значение два параметра:<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 />
==Задача cross promo==<br />
<br />
У таска можно включить флаг:<br />
*'''cross promo''' - идентификатор задачи типа ''cross promo'' (1 - да, 0 - нет)<br />
<br />
в этом случае он <br />
а) сгенерится, если есть кросс промо И выполнены остальные условия его появления;<br />
б) выполнится, если установлено приложение И выполнине остальные условия его выполнения;<br />
в) вызвав состояние '''cross_promo''' -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига.<br />
У задачи должно быть уникакльное окно, в котором в объект указанный в ''портрет'' будет помещен баннер.<br />
<br />
==Изменить состояние объекта - новое задание==<br />
<br />
Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.<br />
<br />
==Изменить состояние объекта - таймаут==<br />
<br />
Позволяет изменить состояние объекта если какая-то задача кончилась таймаутом, находится в taskorganizer setup. Создан для таймерных заданий, которые работают через [[Etasktemplate|Etasktemplate]]. Указываем '''эффект выполнения fail''' из [[Etasktemplate|Etasktemplate]]. Эффект используется, когда задание завершилось провалом по истечению времени.<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9542Taskorganizer2018-05-14T12:00:26Z<p>Mlipa: </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 />
В опции суммарно будет записываться значение два параметра:<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9541Etasktemplate2018-05-14T11:52:42Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''выполнено''' - Счетчик, куда будет занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда будет занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''необходимо энергии''' - Счетчик, куда будет занесена необходимая для игры в монстра энергия (если таск не монстр - счетчик будет невидим);<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения fail''' - Эффект, который будет склонирован для задачи, у которой кончилось время;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
===Реализация таймерных тасков===<br />
Таймерные таски - таски, в которых указано время на выполнение.<br />
<br />
*для таймерных тасков указываем '''время на их выполнения''' в поле для таймера в Etasktemplate. Таймер будет виден только если время в задаче > 0.<br />
*в поле '''"штраф репутации"''' указываем репутацию, которая отнимется у игрока в случае невыполнения задания. Счетчик будет виден, если поле заполнено в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
*если в таймтаске требуется подзадача опции (например, выполнить действие три раза), то используем '''счетчики "всего" и "выполнено"''' в Etasktemplate.<br />
*'''эффект выполнения fail''' используется в случае невыполнения таймерного таска. Работает так же как "эффект выполнения отметка" полностью. Начинается с состояния beg и обязан перейти в finish. После себя инициирует исчезание, если переведен в finish. Дополнительно этот эффект следует указать в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]] <property name="изменить состояние объекта - таймаут" label="изменить состояние объекта если какая-то задача кончилась таймаутом."><br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9540Etasktemplate2018-05-14T11:51:30Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''выполнено''' - Счетчик, куда будет занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда будет занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''необходимо энергии''' - Счетчик, куда будет занесена необходимая для игры в монстра энергия (если таск не монстр - счетчик будет невидим);<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения fail''' - Эффект, который будет склонирован для задачи, у которой кончилось время;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
===Реализация таймерных тасков===<br />
Таймерные таски - таски, в которых указано время на выполнение.<br />
<br />
*для таймерных тасков указываем время на их выполнения в поле для таймера в Etasktemplate. Таймер будет виден только если время в задаче > 0.<br />
*в поле "штраф репутации" указываем репутацию, которая отнимется у игрока в случае невыполнения задания. Счетчик будет виден, если поле заполнено в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
*если в таймтаске требуется подзадача опции (например, выполнить действие три раза), то используем счетчики "всего" и "выполнено" в Etasktemplate.<br />
*эффект выполнения fail используется в случае невыполнения таймерного таска. Работает так же как "эффект выполнения отметка" полностью. Начинается с состояния beg и обязан перейти в finish. После себя инициирует исчезание, если переведен в finish. Дополнительно этот эффект следует указать в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]] <property name="изменить состояние объекта - таймаут" label="изменить состояние объекта если какая-то задача кончилась таймаутом."><br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9539Etasktemplate2018-05-14T11:44:21Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''выполнено''' - Счетчик, куда будет занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда будет занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''необходимо энергии''' - Счетчик, куда будет занесена необходимая для игры в монстра энергия (если таск не монстр - счетчик будет невидим);<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
===Реализация таймерных тасков===<br />
Таймерные таски - таски, в которых указано время на выполнение.<br />
<br />
Для таймерных тасков указываем время на их выполнения в поле для таймера в Etasktemplate. Таймер будет виден только если время в задаче > 0.<br />
<br />
В поле "штраф репутации" указываем репутацию, которая отнимется у игрока в случае невыполнения задания. Счетчик будет виден, если поле заполнено в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
Если в таймтаске требуется подзадача опции (например, выполнить действие три раза), то используем счетчики "всего" и "выполнено" в Etasktemplate.<br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9538Etasktemplate2018-05-14T11:29:14Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''выполнено''' - Счетчик, куда буде занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда буде занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''штраф репутации''' - счетчик, в который сложим штраф за проваленное задание;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''необходимо энергии''' - Счетчик, куда будет занесена необходимая для игры в монстра энергия (если таск не монстр - счетчик будет невидим);<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Etasktemplate&diff=9512Etasktemplate2018-05-04T06:45:54Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
Данный [[Object|объект]] представляет собой темплейт задач, которые будут помещены в таблицу для шаблонов (tabletemplate) [[Taskorganizer|таскорганайзера]].<br />
[[Файл:Etasktemplate_.png|500px|right|thumb]]<br />
[[Файл:Etasktemplate complete.png|500px|right|thumb]]<br />
<br />
=Параметры=<br />
<br />
*'''taskorganizer''' - Объект типа taskorganizer, который использует темплейт;<br />
*'''eanalysis''' - Объект типа eanalysis;<br />
*'''название''' - Текстовый объект куда будет занесено название задачи, берется из поля word текстового id задачи;<br />
*'''описание''' - Текстовый объект куда будет занесено описание задачи, берется из поля sentence1 текстового id задача для активной задачи и sentence2 - для выполненной;<br />
*'''название локации''' - Название локации для генерируемых тасков (для обычных - невидимо);<br />
*'''иконка''' - Иконка задания (ico1);<br />
*'''иконка 2''' - Вторая иконка задания, для активной задачи ресурс ico2, для выполненной ico3;<br />
*'''выполнено''' - Счетчик, куда буде занесен текущий прогресс;<br />
*'''всего''' - Счетчик, куда буде занесен необходимый прогресс;<br />
*'''прогресс''' - Прогресс (отношение текущего к необходимому);<br />
*'''награда ресурс 1''' - Счетчик награды ресурс 1;<br />
*'''награда ресурс 2''' - Счетчик награды ресурс 2;<br />
*'''награда опыт''' - Счетчик награды опыта;<br />
*'''кнопка''' - Кнопка. Отображается для активных задач, для которой текущий прогресс меньше необходимого;<br />
*'''кнопка2''' - Кнопка. Отображается для активных задач, для которой текущий прогресс равен необходимому;<br />
*'''кнопка искать''' - Кнопка;<br />
*'''кнопка экспертиза (не начата)''' - Кнопка экспертиза (не начата);<br />
*'''кнопка экспертиза (в процессе)''' - Кнопка экспертиза (в процессе);<br />
*'''кнопка экспертиза (завершена)''' - Кнопка экспертиза (завершена);<br />
*'''таймер экспертизы''' - Таймер экспертизы;<br />
*'''награда предмет иконка''' - Иконка награды-предмета;<br />
*'''награда количество''' - Количество предметов в награде;<br />
*'''таймер''' - таймер, в который сложим время на выполнение задачи;<br />
*'''отметка выполненной задачи''' - Галочка видимая для выполненных задач и невидимая для невыполненных;<br />
*'''необходимо энергии''' - Счетчик, куда будет занесена необходимая для игры в монстра энергия (если таск не монстр - счетчик будет невидим);<br />
*'''эффект новой задачи''' - Эффект, который будет склонирован для новой задачи;<br />
*'''эффект выполнения ресурс 1''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения ресурс 2''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения опыт''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения отметка''' - Эффект, который будет склонирован для выполненной задачи;<br />
*'''эффект выполнения исчезание''' - Эффект, который будет склонирован для выполненной задачи;<br />
<br />
<br />
===Связь с объектом типа eanalysis===<br />
<br />
Кнопка [[Eanalysis|экспертизы]] может быть в трех состояниях:<br />
*'''не начата''' - в этом случае игроку только предлагается пройти экспертизу. Например, в таком случае ребенком кнопки можно сделать текстовый объект с соответствующей надписью. Например "Анализ".<br />
*'''в процессе''' - экспертиза уже запущена и идет процесс. Тут, например, можно показать таймер с отсчетом времени до конца экспертизы. Его как раз и помещают в Etasktemplate, в поле "таймер экспертизы".<br />
*'''выполнена''' - экспертиза выполнена, отображается соответствующая кнопка. Например, "Читать".<br />
<br />
===Отметка выполненной задачи===<br />
<br />
Графический ресурс (например галочка), который отображается, когда задача выполнена. Реализуется в виде [[Machine|машины состояний]]. <br />
<br />
'''Правила для отметки задачи и эффектов выполнения'''<br />
*Каждый эффект начинается с состояния beg и обязан перейти в finish<br />
*В состоянии beg эффект запускается в координатах ячейки таблицы. В этом же состоянии перебивать координаты нельзя. Поэтому все остальные действия отображения эффекта лучше делать в состоянии beg_.<br />
*Эффект исчезания таска начнется только после перехода в finish эффекта отметки (например, анимация галочки выполненных тасков)<br />
<br />
===Дополнительные кнопки===<br />
<br />
Нажатием правой кнопки мыши на поле объекта Etasktemplate можно добавлять дополнительные [[Button|кнопки]], которые отображаются на специфических задачах. Например "Играть", "Искать", "Получить" (таск [[Taskorganizer#Задача cross promo|cross-promo]]), "Нравится" (таск оценить приложение).<br />
<br />
Номер кнопки соответствует порядковому номеру этой кнопки в объекте Etasktemplate. Нумерация начинается с нуля. Например, в Taskorganizer указана кнопка 1 для автоматически [[Taskorganizer#Группа генерируемые|генерируемых задач]]. Это значит, что эта кнопка должна быть указана в поле "дополнительные кнопки" второй.<br />
<br />
Все кнопки, для отдельных задач, указываются в [[Taskorganizer#Taskorganizer setup|Taskorganizer setup]].<br />
<br />
=Состояния=<br />
<br />
*'''take''' - должно вызываться кнопкой или кнопкой2, при вызове состояния в объект записываются параметры:<br />
**'''clicked_task_id''' - id таска, на темплейте которого была нажата кнопка или кнопка2;<br />
**'''clicked_task_x''' - координата x центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
**'''clicked_task_y''' - координата y центра ячейки, относительно пивота таблицы, в которой была нажата кнопка или кнопка2;<br />
*'''complete''' - запускается анимация удаления таска из таблицы. При вызове complete в сам темплейт автоматически записывается параметр "need_effect". В need_effect хранится информация о том, есть ли еще таски, которые выполнены и требуют завершения и воспроизведения должных эффектов. <br />
**Если need_effect = 1, то такие эффекты еще есть, значит вызываем снова complete. <br />
**Если need_effect = 0, то тасок больше нет, все завершенные таски последовательно воспроизвели все свои эффекты. Вызываем состояние refresh_templates для таскорганайзера. При вызове refresh_templates таскорганайзеру запускается анимация добавления новых тасков в таблицу, если такие есть.<br />
<br />
[[Category:Game mechanic]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9508HiddenList2018-04-25T09:26:09Z<p>Mlipa: /* Режим "блиц" с бесконечными объектами */</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 />
<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=9507Economics2018-04-25T09:24:13Z<p>Mlipa: </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 />
<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=HiddenList&diff=9506HiddenList2018-04-25T09:17:14Z<p>Mlipa: </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 />
*'''invert''' - горизонтально отображает изображение;<br />
*'''run''' - переводит хидден в состояние активности, если до этого был на паузе;<br />
*'''pause''' -переводит хидден в состояние паузы, объекты не кликаются!<br />
*'''swap_hiddens''' -меняет отображаемые в таблице поисковые объекты на случайные другие.<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9501Eanalysis2018-04-24T09:06:40Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]] заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
== Параметры ==<br />
<br />
'''start_analysis''' - Параметр, который содержит информацию "есть ли сейчас доступные экспертизы для старта". <br />
<br />
В поле количество не начатых (и при этом невыполненных, само собой) экспертиз.<br />
Пишется в объект экспертизы.<br />
Обновляется при refresh и любом сохранении данных.<br />
<br />
== Уведомления ==<br />
<br />
Можно отправлять уведомления игроку по завершению экспертизы. Уведомления шлются автоматически. Для этого используется поле в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]]. Туда следует поместить текстовый id из текстовой базы.<br />
<br />
'''Как найти уведомления в логах?'''<br />
Например, уведомление, которое установлено в два часа дня с задержкой 15минут (900 секунд) выглядит так:<br />
<pre><br />
19/01/18 13:59:47 00078341(2875268504:6804): I/GNotification state() state(ST_SET) getAccurateTime()/1000 = 1516363187 delay = 900<br />
</pre><br />
Если уведомления отключены в настройках проекта, то строка примет вид:<br />
<pre><br />
02-05 12:09:58.274 I/SDL/APP (11455): 05/02/18 12:09:58 00008978(2612762928:6508): I/GNotification state() state(ST_SET) - disabled<br />
</pre><br />
<br />
== Другое ==<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9477Eanalysis2018-02-28T11:37:04Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]] заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
== Параметры ==<br />
<br />
'''start_analysis''' - Параметр, который содержит информацию "есть ли сейчас доступные экспертизы для старта". <br />
<br />
В поле количество не начатых (и при этом невыполненных, само собой) экспертиз.<br />
Пишется в объект экспертизы.<br />
Обновляется при refresh и любом сохранении данных.<br />
<br />
== Уведомления ==<br />
<br />
Можно отправлять уведомления игроку по завершению экспертизы. Уведомления шлются автоматически. Для этого используется поле в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]]. Туда следует поместить текстовый id из текстовой базы.<br />
<br />
== Другое ==<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9427Eanalysis2018-02-06T12:46:35Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]] заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
== Уведомления ==<br />
<br />
Можно отправлять уведомления игроку по завершению экспертизы. Уведомления шлются автоматически. Для этого используется поле в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]]. Туда следует поместить текстовый id из текстовой базы.<br />
<br />
== Другое ==<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9426Taskorganizer2018-02-06T12:45:07Z<p>Mlipa: </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 />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9425Taskorganizer2018-02-06T12:39:15Z<p>Mlipa: </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 />
[[Файл: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 />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9340Eanalysis2018-01-23T14:09:15Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]] заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
== Уведомления ==<br />
<br />
Можно отправлять уведомления игроку по завершению экспертизы. Уведомления шлются автоматически. Для этого используется поле в [[Taskorganizer#Подзадача экспертиза|taskorganizer (подзадача экспертиза)]]. Туда следует поместить текстовый id из текстовой базы.<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9339Eanalysis2018-01-23T14:07:41Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза) заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
== Уведомления ==<br />
<br />
Можно отправлять уведомления игроку по завершению экспертизы. Уведомления шлются автоматически. Для этого используется поле в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза). Туда следует поместить текстовый id из текстовой базы.<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Taskorganizer&diff=9338Taskorganizer2018-01-23T14:04:21Z<p>Mlipa: </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.<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 />
В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:<br />
<br />
"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".<br />
<br />
Возможные значения:<br />
* '''0''' - таск не активен (не добавлен путем вызова generate таскорганайзеру);<br />
* '''1''' - таск сгенерирован ;<br />
* '''2''' - таск прочитан (вызвано состояние show);<br />
* '''3''' - таск выполнен;<br />
* '''4''' - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);<br />
* '''5''' - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);<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>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9337Eanalysis2018-01-23T13:56:01Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в [[Options|Options]] (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза) заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9336Eanalysis2018-01-23T13:53:29Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза) заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно: <br />
*из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
*перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9335Eanalysis2018-01-23T13:51:50Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза) заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
Перед показом любого окна объект Eanalysis запишет себе (не в опции) '''currentOwner'''. Можно опираться и на это поле.<br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9334Eanalysis2018-01-23T13:50:41Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
== Типы улик ==<br />
<br />
Есть возможность делать ячейки экспертиз разных типов. Для этого в [[Taskorganizer#Подзадача экспертиза|taskorganizer]] (подзадача экспертиза) заполнить поле "владелец" численным значением. Тип улик задавать в поле<br />
<property name="владелец" id="owner" hint="Владелец предмета для угадайки. -1 - предмет не участвует" type="int" label="владелец" value="-1" colname="comp_cond_added"/><br />
<br />
Считать можно из поля в опциях '''eanalysis%d.lastStartOwner''', где вместо %d - id объекта-экспертизы.<br />
Информация в нем будет сохраняться независимо от прочих факторов.<br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9333Eanalysis2018-01-23T13:43:35Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она уже закончена ранее.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
Окошко вызывается в момент завершения экспертизы в ячейке.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она находится в процессе анализа.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
Окошко вызывается по клику на ячейку экспертизы, если она еще не начата.<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9332Eanalysis2018-01-23T13:39:20Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - приводит к показу окошка для предмета из последней кликнутой ячейки в таблице экспертизы. Т.е. если show вызывается при клике на какую-то ячейку, то окошко будет для находящегося в ней предмета<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9331Eanalysis2018-01-23T13:37:42Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
== Общие настройки ==<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
=== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
=== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
=== Окошко предмета ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко завершения ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Окошко предмета в процессе ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
=== Окошко экспертиза не начата ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
== Состояния ==<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - показать описание объекта, который прошел экспертизу<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9330Eanalysis2018-01-23T13:35:53Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
=== Общие настройки ===<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
== Настройки экземпляра ===<br />
<br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
== Эффекты ===<br />
<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
== Окошко предмета ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
== Окошко завершения ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
== Окошко предмета в процессе ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''таймер''' - время до конца экспертизы<br />
== Окошко экспертиза не начата ===<br />
<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
=== Состояния ===<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - показать описание объекта, который прошел экспертизу<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9329Eanalysis2018-01-23T13:29:57Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
Объект экспертизы сохраняет себя в опции (везде первый %d - это id объекта экспертизы, второй - id предмета)<br />
*'''eanalysis%d.i%d.c''' - 1 если экспертиза завершена <br />
*'''eanalysis%d.i%d.t''' - если > 0 - экспертиза начата и, возможно завершена (см. предыдущий флаг)<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
=== Общие параметры ===<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
=== Состояния ===<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - показать описание объекта, который прошел экспертизу<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipahttps://wiki.appsalutecreator.com/index.php?title=Eanalysis&diff=9187Eanalysis2017-11-01T08:38:25Z<p>Mlipa: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] Eanalysis - предназначен для проведения экспертизы предмета по времени. Работа с объектом происходит с помощью создания задач на экспертизу предметов в [[Taskorganizer#Подзадача экспертиза|taskorganizer]].<br />
[[Файл:Eanalysis_.png|400px|thumb|right]]<br />
=== Общие параметры ===<br />
<br />
*'''taskorganizer''' - объект типа [[Taskorganizer|taskorganizer]]<br />
*'''таблица''' - объект типа [[Table|таблица]], в который мы сложим шаблоны <br />
*'''иконка''' - иконка предмета<br />
*'''название''' - название предмета<br />
*'''таймер''' - таймер<br />
*'''стоимость''' - стоимость<br />
*'''кнопка старт''' - кнопка старт<br />
*'''кнопка ускорить''' - кнопка ускорить<br />
*'''кнопка информации''' - кнопка информации<br />
*'''эффект завершения''' - эффект завершения, будет запущен в ячейке, где закончилась экспертиза<br />
*'''эффект готового''' - эффект готового, будет запущен в ячейке с завершенной экспертизой после refresh<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
*'''окно''' - само окно, должно иметь состояние show<br />
*'''иконка''' - иконка предмета<br />
*'''описание''' - описание предмета<br />
<br />
=== Дополнительные параметры ===<br />
<br />
Добавляются нажатием правой кнопкой мыши на свойствах объекта Eanalysis.<br />
<br />
'''Изменить состояние объекта''' - не хватает res3<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
'''Изменить состояние объекта''' - экспертиза закончена (при вызове проверочного состояния)<br />
*'''объект''' - перевести объект в состояние из следующего поля<br />
*'''состояние''' - новое состояние для объекта из предыдущего поля<br />
<br />
=== Состояния ===<br />
<br />
*'''start''' - начать экспертизу<br />
*'''boost''' - ускорить текущую экспертизу<br />
*'''boost all''' - ускорить все экспертизы<br />
*'''show''' - показать описание объекта, который прошел экспертизу<br />
*'''refresh''' - обновляет данные по экспертизам<br />
*'''check''' - проверяется выполнение текущих экспертиз<br />
<br />
<pre><br />
Покупка ускорения всех экспертиз на некоторое время (например, 7 дней):<br />
1) В экономику добавляем предмет eanalysis, и в нем указываем длительность действия в секундах (tm). <br />
2) Покупка осуществляется через объект Store.<br />
</pre><br />
<br />
Для примера использования представлено окно открытия экспертизы на отдельной сцене "экспертиза".<br />
[[Файл:Wnd_expertise.png|600px|thumb|left]]</div>Mlipa