Taskorganizer — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Состояния)
Строка 217: Строка 217:
 
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.
 
*'''cheat_complete''' - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.
 
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.
 
*'''skip''' - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.
 +
*'''skip_id_no_effect''' - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.
 
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.
 
*'''check_multiple''' - Проверить выполнение задач не выходя из проверки после первой найденной.
 
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.
 
*'''add_hint_hidden''' - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.

Версия 07:17, 14 декабря 2017

Объект Taskorganizer - Менеджер задач и квестов

Свойства

Task.jpg
Task 1.jpg

Общие параметры

  • economics - Объект типа экономикс.
  • предметы - Объект типа eitems.
  • таблица - Таблица куда будут помещены иконки заданий. При тапе на таблицу объекту Taskorganizer вызывается состояние show. Иконки подтягиваются из текстовой базы (icon1).
  • добавлять иконки - 1 - добавлять в таблицу иконки, 0 - тексты из текстового id (поле word).
  • шаблон предмета - Объект типа etaskitem будет использоваться при показе превью задания.
  • фильтрация - Категория, которые должны будут отобразиться в таблице логов при вызове состояния logbook. Пустая строка - все.
  • таблица логов - Таблица куда будут помещены записи логбука.
  • новая запись - Объект, которому будет вызвано состояние show при добавлении новой записи в логбук.
  • новое задание - Графический ресурс, который будет отмечать новые задания. Смещение должно достигаться пивотом.
  • прочитанное задание - Графический ресурс, который будет отмечать прочитанные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе).
  • выполненное задание - Графический ресурс, который будет отмечать выполненные задания. Смещение должно достигаться пивотом (возможно указать анимацию, скорость смены кадров указываем в ресурсной базе)
  • уведомление - Текстовый айди заголовка связанных с задачами уведомлений (Должно быть заполнено поле sense 4 - т.к. рандомно его будет постить).
  • вероятность уведомления - Подменная вероятность нахождения предмета нужного для задания по уведомлению с которого мы пришли. 0 - использовать значение по умолчанию.
  • выполнять непрочитанные - 1 - выполнять непрочитанные таски, 0 - нет.
  • хронологический порядок - 1 - записывать задачи в хронологическом порядке, 0 - нет.
  • картинки в логбук - Расположение картинки до или после текста.
  • сдвиг уровней - число на которое сдвинутся требования к уровню игрока в taskorganizer_setup для каждой задачи;
  • refresh при показе окна - 0 - нет, 1 - да. Ставим = 0 ( "нет" ), если хотим чтобы при тапе по таблице отложить сортировку и обновление статуса таска ( в определённый момент ( к примеру, когда открылось окно таска), передаём состояние refresh и таблица обновится).
  • использовать накопление ошибки - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы нахождение предметов в хиддене, по таску не превышало n-раз ( к примеру p= 0.5 (1/0.5=2 , т.е. предмет должны найти не более чем за две игры в хидн), если количество сыгранных игр >= максимальному по вероятности, то предмет попадает в таблицу ( мы его нашли)). Если стоит - 0 ( "нет" ), то вне зависимости от количества заходов, будет браться вероятность.
  • etasktemplate - объект типа etasktemplate
  • только одна подкрутка за раз - 0 - нет, 1 - да. Ставим = 1 ( "да" ), если хотим чтобы за один проход хиддена выполнялся один таск.
  • таблица для шаблонов - таблица, в которую сложим шаблоны из предыдущего поля
  • помещать генерируемые в шаблоны - помещать в шаблоны генерируемые таски
  • уменьшать предметы при сдаче коллекции - 0 - нет, 1 - да. Ставим = 1 ( "да" ), то при сдаче коллекции будет выполнен декремент количества предметов необходимых чтобы задание выполнилось ( параметр таски s0 в опциях).


Для огранизации логбука необходимо текст поместить в sentenсe 1. Картинка, что будет отображаться с этим текстом, должна быть icon 2. Также есть возможность использовать эту картинку в качестве фона. Тогда текст, который будет отображаться поверх этой картинки, нужно разместить в sentenсe 2.

Группа угадайка

Угадайка - задание, в котором игроку предлагается вспомнить или угадать, кто из персонажей просил тот или иной коллекционный предмет. Владелец предмета указывается в настройке подзадачи.

  • показывать через - Через какое количество обычных задач показывать угадайку.
  • с уровня - Угадайка будет генерироваться только начиная с данного уровня.
  • машина - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.
  • иконка - Объект, в который сложим иконку предмета.
  • иконка для таблицы - Иконка соответствующая угадайке в таблице задач.
  • ресурс 1 - Деньги даваемые за выполнение задания.
  • ресурс 2 - Кристаллы даваемые за выполнение задания.
  • опыт - Опыт даваемый за выполнение задания.
  • награда ресурс 1 - Счетчик, которому будет присвоено количество призового ресурса 1.
  • награда ресурс 2 - Счетчик, которому будет присвоено количество призового ресурса 2.
  • награда опыт - Счетчик, которому будет присвоено количество призового опыта.

Группа рулетка

На самом деле название "рулетка" весьма условное. В этом разделе можно поместить любое периодически повторяющееся задание.

  • показывать через - Через какое количество обычных задач показывать рулетку.
  • с уровня - Рулетка будет генерироваться только начиная с данного уровня.
  • машина - Объект, которому при активации будет вызвано состояние show.
  • иконка для таблицы - Иконка соответствующая рулетке в таблице задач.

Группа генерируемые

В этой группе находятся периодически генерируемые задания на прохождение локаций.

  • активных задач - Эти задачи будут генерироваться, когда активных задач столько или меньше.
  • с уровня - Эти задачи будут генерироваться только начиная с данного уровня.
  • максимально - Будет сгенерированно случайное количество задач от 1 до n.
  • машина - Объект, которому при активации будет вызвано состояние show. Она же после угадайки будет переведена в состояние win или fail.
  • название - Текстовый объект, в который будет сложено название локации.
  • превью - Объект, в который сложим превью локации для генерируемой задачи.
  • иконка для таблицы - Иконка соответствующая генерируемому таску в таблице задач.
  • ресурс 1 - Деньги даваемые за выполнение задания.
  • ресурс 2 - Кристаллы даваемые за выполнение задания.
  • опыт - Опыт даваемый за выполнение задания.
  • награда ресурс 1 - Счетчик, которому будет присвоено количество призового ресурса 1.
  • награда ресурс 2 - Счетчик, которому будет присвоено количество призового ресурса 2.
  • награда опыт - Счетчик, которому будет присвоено количество призового опыта.
  • текст для etasktemplate - будет в поле name etasktemplate. Это название задачи на прохождение локации, которая генерируется автоматически и использует шаблон etasktemplate. Текст используется из Текстовой Базы Ресурсов. Например, "Исследовать локацию".
  • номер кнопки для etasktemplate - номер кнопки для etasktemplate. Кнопка, которая используется для данной задачи. Например, "Исследовать".
Если перед генерацией случайного таска на исследование локации указать параметру gen_loc значение от 0 до n, то ближайшая генерируемая задача будет для конкретной локации под указанным номером. После генерации параметр gen_loc становится -1.
Если перед генерацией случайного таска от персонажа указать параметру gen_face значение от 0 до n, то ближайшая генерируемая задача будет от персонажа под указанным номером. После генерации параметр gen_face становится -1.
Если указать gen_face="-2", то таскорганайзер попытается с генерировать задачу с персонажем так, чтобы номер локации совпадал с персонажем, при условии что номер локации будет меньше максимальному числу персонажей ( char_num).

Группа угадаечные задачи

В этой группе указываем диапазоны для генерации тасков-викторин и способ генерации.

  • стандартная генерация:
нет - особая генерация задач, при которой с начало генерируем задачи из _очереди 1_, потом задачи из _очереди 2_ ( Если в первой очереди мы не можем сгенерировать задачу, пытаемся сгенерировать из второй очереди). Если мы не сгенерировали задачу из обоих очередей, то мы обнуляем все таски из обоих очередей ( и сразу генерим из _очереди 1_ задачу);
да - стандартная генерация одной угадайки ( начинаем сверху вниз генерить;
  • очередь 1 - Основная очередь, пытаемся из неё сгенерировать задачу, при получении Taskorganizer сост. _generate_guess_, если в предыдущем поле стоит нет. Каждая задача из этой очереди имеет условия для появления ( прохождение сюжетного таска к примеру);
  • очередь 2 - Очередь затычка, задачи из этой очереди без условий. Предназначена когда в первой очереди нету доступных тасков для генерации;
У таскорганайзера есть поле disabled, если при каждом запуске приложения после конца туториала писать туда 1 - это приведет к удалению старого сейва и несозданию нового. Несколько килобайт выгоды в опциях + использовать только для туториального таскорганайзера, когда он отработает.

Taskorganizer setup

Task 2.jpg
  • id - Идентификатор задания. Используется в других заданиях. По общей концепции - строковый айди. Перетаскивается из текстовой базы.
Для каждого задания(записи в logbook) должен быть свой уникальный id.
  • хинт - Список строк-подсказок для задачи. Перетаскиваются из текстовой базы. Таким образом, добавив несколько записей из базы, увидим выпадающий список.
  • название (объект) - Текстовый объект, в который мы сложим название задания. Описание подтягивается из текстовой базы из первого столбика (word) текстового id задания.
  • машина - Объект, которому при активации задания будет вызвано состояние show, а при повторном открытии задания show_old.
  • портрет - Объект, которому при активации задания будет устанорвлен графический ресурс рожи.
  • таблица - Таблица куда будут помещены темплейты предметов данного задания.
  • описание (объект) - Текстовый объект, в который мы сложим описание задания. Описание подтягивается из текстовой базы из второго столбика (sentence1) текстового id задания.
  • награда (ресурс 1) - Счетчик отображающий награду в ресурсе 1 за выполнение задания.
  • награда (ресурс 2) - Счетчик отображающий награду в ресурсе 2 за выполнение задания.
  • награда (опыт) - Счетчик отображающий награду в опыте за выполнение задания.
  • таблица хинта - Таблица, в которую будем складывать хинты.
  • умножать цену пропуска - нужно в случае, если мы хотим давать юзеру возможность моментально выполнить задачу за цену, которая зависит от количества нехватающих коллекционных предметов (цена пропуска*количество отсутствующих предметов).
  • видимые кнопки - номера видимых кнопок в Etasktemplate через запятую. Отображает кнопки, используемые для данной задачи.


Необходимое для логбука

  • для журнала - 0 - задача предназначена для списка задач, 1 - задача предназначена для журнала.
  • категория - Категория к которой относится задача/запись. Пока используется только задачами для логбука.

Критерии появления

  • уровень - Минимальный уровень, при котором может появиться задание.
  • аномалия - В какой-либо локации присутствует аномалия данного типа. -1 - не учитывать условие.
  • локация - Локация для которой будем проверять мастерство. -1 - не учитывать условие.
  • мастерство - Уровень мастерства, который должен быть достигнут в локиции. -1 - не учитывать условие.
  • завершены до - Задания, которые должны быть завершены до появления этого.
  • получены до - Задания, которые должны быть получены до появления этого.
  • не завершены до - Задания, которые должны быть НЕ завершены до появления этого.
  • объект до - Объект, который должен находиться в состоянии_до для появления задания.
  • состояние до - Состояние объекта_до, в котором вызывается генерация задания.
  • коллекционные - Коллекционные предметы, которые должны быть найдены для появления задания.
  • вероятность нужного - Когда мы будем проходить локации, в которых есть предметы необходимые для задания - мы будем подменять вероятность из локации вот этой вероятностью. 0 - использовать дефолтную.

Критерии завершения

  • с аномалией - Задача выполняется при нахождение локации с аномалией данного типа. Не путать с аномалией необходимой для возникновения задания. -1 - не учитывать аномалию.
  • задачи - Задания, выполнение которых требуется для выполнения данной.
  • предметы - Задание завершается, когда получены следующие предметы (коллекционные и инвентарные единым списком).
  • объект - Объект, который должен находиться в определенном состоянии,для завершения задания.
  • состояние - Состояние объекта, в котором вызывается проверка задания.

Награда

  • ресурс 1 - Деньги даваемые за выполнение задания.
  • ресурс 2 - Кристаллы даваемые за выполнение задания.
  • опыт - Опыт даваемый за выполнение задания.
  • перевести объект - При выполнении задания этот объект будет переведен в новое состояние.
  • в состояние - Состояние для объекта из предыдущего поля.

Подзадача предмет

В опции суммарно будет записываться значение два параметра:

iN - "item need" - необходимое количество предметов, по всем "подзадачам предмет";
iH - "item have" - имеющееся количество предметов, по всем "подзадачам предмет";
i0..i666 - требующийся предмет, пишется для задач из коллекций;
  • сгенерировать предмет - определить необходимый предмет из коллекции;
нет - просто требовать предмет;
да - сгенерировать предмет из доступных локаций (календарь);
сегодня - сгенерировать предмет из колекции, для локации текущего дня (календарь);
  • из коллекции - указать txtID коллекции из которой будут браться id предметов;

Подзадача экспертиза

  • предмет - в поле предмет записываем id объекта, который нужен для проведения экспертизы. Предмет берем из текстовой базы ресурсов. Иконка предмета до начала и во время проведения экспертизы в icon1, иконка предмета после проведения экспертизы в icon2.
  • время - изначальная длительность экспертизы в секундах.
  • стоимость - стоимость экспертизы, используется res3.
Taskorganizer eanalysis.png

Изменить состояние объекта - новое задание

Позволяет изменять состояние объекту каждый раз при появлении нового задания, находится в taskorganizer setup.

Задача cross promo

У таска можно включить флаг:

  • cross promo - идентификатор задачи типа cross promo (1 - да, 0 - нет)

в этом случае он а) сгенерится, если есть кросс промо И выполнены остальные условия его появления; б) выполнится, если установлено приложение И выполнине остальные условия его выполнения; в) вызвав состояние cross_promo -открыть урл связанный с crosspromo задачей - таскорганайзеру можно открыть урл, которые приехал из конфига. У задачи должно быть уникакльное окно, в котором в объект указанный в портрет будет помещен баннер.

Состояния

  • show - При вызове этого состояния из таблицы с иконками заданий открывается соответствующая машина задания, прописанная в группе задание.
  • check - При вызове проверяется выполнение текущих заданий(заданий добавленных в таблицу). Для того чтобы таскорганайзер добавил таски в таблицу после загрузки приложения ему нужно передать refresh.
  • generate - При вызове подбирается подходящее задание в зависимости от прогресса игрока.
  • generate_plot - При вызове генерится задача с персонажем ( поле генерируемые с персонажами), если перед этим передать в поле gen_face номер персонажа, то сгенерируем с указанным персонажем, после параметр обнулится ( значение -1 ). Перед вызовом данного состояния, обязательнo в поле _param_ вбить "1".
  • log_check - При вызове состояния проверяется доступны ли новые записи в логбук.
  • log_show - Заполняет таблицу логбука записями с текущим фильтром.
  • refresh - Удаляет иконку выполненного задания из таблицы. Лучше всего вызывать после Check.
  • cancel - Удаляет задание без награды, которое указано как ID в параметре param таскорганайзера, т.е. объекту Taskorganizer в param указываем ID таска (например 1933 - берется из options.xml или текстовой базы), а потом вызываем состояние cancel.
  • add_hint - Добавляет в таблицу хинтов следующий текстовый ID из поля хинты текущего таска. Если все хинты показаны, то в опции записывается параметр haveHints=0.
  • task_prev - Используется, если открыта машина-шаблон текущего задания. В этом состоянии показывается предыдущее по списку таблицы задание.
  • task_next - Показывает следующее по списку таблицы задание.
Состояния task_prev и task_next работают циклически, после первой задачи показывают последнюю и наоборот.
  • show_id - Показать окно задачи, взяв ее id из параметра.
  • show_complete_id - показать окно после задачи, взяв ее id из param (делалось для одноразовых задач, повторяемые могут не работать);
  • show_last_plot - Открыть последнюю сгенерированную сюжетную задачу.
  • guess - Ответить на текущую угадайку, взяв ответ из параметра (param). Taskorganizer также хранит правильный ответ на текущую угадайку в параметре guess_answer, его можно использовать, если нужно оставить игроку меньше вариантов для угадывания.
  • add_hint_last - Добавить подсказку последней добавленной задаче.
  • add_hint_top - Добавить подсказку верхней задаче в таблице.
  • guess_who_reward - начислить награду за последнюю угадайку.
  • roulette_complete -состояние, вызываемое при выполнении текущей задачи "рулетка".
  • cheat_complete - если его вызвать, то при следующем check выполнится задача, для которой последней показывали превью.
  • skip - При вызове этого состояния выполнится последний открытый таск. Цена скипа указывается внутри самого таска.
  • skip_id_no_effect - изменить состояние задачи с id из param на completed безо всяких доп. эффектов - награды, окон и т.п.
  • check_multiple - Проверить выполнение задач не выходя из проверки после первой найденной.
  • add_hint_hidden - Вызов подсказки для 1 (первой по списку в таскорганайзере) скрытой задачи.
  • add_hint_hidden_all - Вызов подсказки для всех активных скрытых задач (по списку в таскорганайзере).
  • calc_active_preset - Посчитать количество активных задач по конкретному "preset" (перед вызовом в поле "param" указать номер интересующей категории preset). После вызова, таскорганайзер заполнит параметр "preset_tasks".

Состояния для работы с тасками-угадайками по типу викторины ( в taskorganizer_setup - тип = "угадайка"):

  • answer - ответить на открытую угадайку ( в поле param должно находиться число, номер нажатой кнопки от 0 до 3 ). Вешаем на кнопки варианты-ответа ( пишем param = 0 - 3 , после передаёт _answer_);
  • generate_guess - сгенерировать угадайку-викторину ( выберет доступные задачи из диапазона указанном в очередях ( 1 и 2) поле _угадаечные задачи_ taskorganizer). При открытии угадайки, в поле _cur_guess_answer_ объекта Taskorganizer записывается номер кнопки где лежит правильный ответ ( от 0 до 3 );

ПРИМЕЧАНИЕ: при проверке задач для логбука для последней выполненной будет перезаписано поле filter автоматически.

При кажом refresh таскорганайзер заполняет у себя поля:

  • tasks_in_table - задач в таблице
  • tasks_total - задач в таблице + скрытых задач

Запись в опции

В процессе работы таскорганайзер записывает параметры в опции. Для конкретной задачи этот параметр представляет следующую строку:

"tasks(id таскорганайзера в проекте).t(id текстового объекта - идентификатора задания).s".

Возможные значения:

  • 0 - таск не активен (не добавлен путем вызова generate таскорганайзеру);
  • 1 - таск сгенерирован ;
  • 2 - таск прочитан (вызвано состояние show);
  • 3 - таск выполнен;
  • 4 - отложенное состояние таска (условия появления выполнены, но время его появления еще не прийшло);
  • 5 - таск выполнен, но награда ещё не забиралась ( таск будет оставаться в таблице, если таски не выполняются автоматически);

Сопутствующие объекты

Объекты, которые используются вместе с объектом economics и имеют с ним непосредственную связь:

  • E items.png - Eitems - объект, служащий для связи инвентаря(магазина) и экономики.
  • E store item.png - Estoreitem - шаблон для ячейки магазина.
  • E inventory item.png - Einventoryitem - шаблон для ячейки инвентаря.
  • Kub.png - Ecraftitem - шаблон для ячейки создания предмета.
  • Taskorganizer.png - Taskorganizer - органайзер заданий.
  • E task item.png - Etaskitem - шаблон для ячейки задания.
  • E collection.png - Ecollection - шаблон для строки в таблице коллекции.
  • Economics.png - Economics - глобальная настройка игр типа ферма\билдер


Вычитаемые параметры:

Каждая таскорганайзер пишет в пользователя следующие параметры:

  • public.TaskOrganizerCompletedTasks - количество выполненных одноразовых задач;
  • public.TaskOrganizerCompletedTasksAll - количество выполненных задач с учётом повторяемых;

Механизм многоуровневых достижений

С помощью таскорганайзера можно организовать систему многоуровневых достижений. Для этого используется темплейт задачи. Данные темплейты складываются в таблицу темплейтов таскорганайзера. При этом в самом таскорганайзере должна быть указанна таблица для иконок задач, хоть она и не используется (желательно вынести за границы экрана).

Каждый уровень достижения представляет собой отдельный таск с подзадачей на опции. В поле опций этой подзадачи указываем параметр, который отображает прогресс по достижению. Чтобы создать несколько уровней достижения, нужно несколько задач одного типа (с возрастающими требованиями).

Часть контента для достижения задается чрез текстовый объект - id таска. В текстовом объекте указываем название (word), описание невыполненной (sentence1) и выполненной (sentence2) ачивки. А также ресурс иконки ачивки (ico1), ресурс звезд для невыполненной (ico2) и выполененной (ico3) задачи. Награду за достижения ачивки указываем как награду за выполнение таска. Также с помощью обработчика завершения задачи можем запустить анимацию получения ачивки.

Для заполнения таблицы темплейтов нужно вызвать состояние refresh_templates, при вызове check задача, условия которой были выполнены изменит свое состояние, при этом будут переключены ресурсы звезд, описание ачивки и спрятана кнопка темплейта btn.

Для контроля того, какая задача будет вызвана при вызове check можно использовать следующий способ. К задаче добавляем еще одну подзадачу на опции. Когда прогресс по первой подзадаче на опции будет >= требуемого значения для задачи будет отображаться кнопка темплейта btn. При нажатии на эту кнопку, которая должна вызывать take темплейту задачи, в него пишется параметр clicked_task_id, по этому параметру определяем у какой задачи нужно выполнить вторую подзадачу на опции и вызываем check таскорганайзеру.

Пример S:\!MOBILE\!!!EditorGames\Wiki_sample

Complex_achievements.zip

Пример проекта

S:\!MOBILE\!!!EditorGames\Wiki_sample\Taskorganizer

Равномерная экономика (Preset)

1499422858929.jpg

Работает, при включении в объекте Economic равномерной экономики (задание не нулевых значений). Настройка позволяет давать диапазонную награду конкретной группе задач("preset"). Настройка награды для всех задач, у которых не указан параметр "preset" (т.е. =="-1"), осуществляется, группой параметров объекта Taskorganizer:




Настройки конкретного preset вынесены в отдельную вкладку "Taskorganizer_setup":

Photo hidden 365 Scene Editor build Wed Jul 5 151607 2017 -(single-user) DProjectsEDITOR Game Hidden 365Photo hidden 365Photo hidden 365.seproj.jpg