Salesmanager

Материал из wiki.appsalutecreator.com
(перенаправлено с «Salesmeneger»)
Перейти к: навигация, поиск

Объект Salesmaneger предназначается для управления всплывающими окошками с различными акциями: скидками, выгодными предложениями и т. д. Для того, чтобы наиболее выгодным образом показывать человеку акции, этот объект будет сам определяет категорию пользователя, и в зависимости от нее показывает игроку различные события. За основу взято окно настройки локации из объекта Economics.


Свойства

Так сложилось, что основные свойства salesmanager'а как объекта не используются, но для визуализации временных эффектов можно использовать параметры группы таблица

Таблица

  • таблица - таблица в которую сложим заготовки для информации об акциях,
  • элемент - элемент для помещения в таблицу. В первый встреченный подобъект таймер будет помещено время. В первый встреченный подобъект картинка будет помещена иконка. Элемент желательно сделать машиной, которая по тапу (клику) будет вызывать salesmanager'у show для показа окна акции. Иконка, по традиции, берется из текстового id акции.


Окно акций

SM Actions.png

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

Используемые параметры

  • id события - id акции, берется из текстовой базы ресурсов.
  • объект - Машина-обработчик акции, ее состояния описаны ниже.
  • Длительность акции - время в секундах, в течении которого, акция активна.
  • Количество показов - сколько раз акция будет показана игроку (для акции будет вызвано show и show_first)
  • Показывать в таблице - галка, определяющая, нужно ли данную акцию выводить в таблицу временных эффектов.

Также можно добавить произвольное количество условий окончания акции. Все условия объединяются логическим "И".

Состояния машины-обработчика акций

    • show_first - машина переходит в это состояние при первом вызове check / check_multiple,
    • show - переход при последующих вызовах check / check_multiple,
    • delete - переход при вызове ok, cancel_scenario, смене активной юзерской группы,
    • hide - переход при вызове cancel; также в эту машину пишется id сценария, в который входит акция, как параметр sales_scenario,
    • expired - переход при окончании акции по времени или количеству показов,
    • click - переход при вызове show, используется для показа окна акции, например.

Важно! В машине-обработчике нельзя делать переходы в другие состояния - работать не будут.

Окно групп пользователей

Salesmanager.PNG

Есть 6 групп пользователей, в зависимости от их действий в игре:

  • 1. Не платившие, покинувшие игру;
  • 2. Платившие, но переставшие платить, продолжающие играть;
  • 3. Платившие, покинувшие игру;
  • 4. Не платившие, продолжающие играть;
  • 5. Платящие, играющие;
  • 6. Сломали игру.

Изменить количество групп в редакторе нельзя. Но это можно сделать через редактирование лейаута (Но я вам об этом не говорил.) Эти группы определяются рядом параметров, по которым происходит определение игрока в одну из них. Эти параметры на протяжении игры меняются, поэтому одни и те же игроки со временем могут менять группу.

Важно! Данные параметры нужно подобрать таким образом, что бы группы не имели пересечений, т.е. в один момент времени игрок может попасть только в одну группу. Иначе сценарии будут отрабатывать некорректно.

SM Switch.png

Параметры группы:

  • от последней сессии мин (t_last_ses_min) - Время от последней сессии в полных сутках.
  • от последней сессии макс (t_last_ses_max) - Время от последней сессии в полных сутках.
  • от последней покупки мин (t_last_buy_min) - Время от последней покупки в полных сутках.
  • от последней покупки макc (t_last_buy_max) - Время от последней покупки в полных сутках.
  • wallet_total_usd мин - Минимальное значение wallet_total_usd (его пишет в опции объект Wallet, если в покупке задать поле эталонная цена)
  • wallet_total_usd макс - Максимальное значение wallet_total_usd
  • суток в игре мин (t_days_min) - Количество проведенных в игре полных суток.
  • суток в игре макс (t_days_max) - Количество проведенных в игре полных суток.

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

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

  • id сценария - id сценария, берется из текстовой базы ресурсов.
  • события сценария - список акций, которые входят в этот сценарий.
  • поле в опциях - любой параметр из опций, откуда будет взят прогресс игрока (уровень, количество энергии и т.д.).
  • min уровень - минимальное значение параметра из поля выше, при котором срабатывает событие.
  • уровни - через запятую значения (a,b,c,...) для "поле в опциях", при которых сработает событие.
  • период после последнего уровня - период (х) для последнего значения из предыдущего поля. Работает по формуле (с + х*N). Т.о., если в поле "уровни" указаны значения 3,10,20, а период - 15, то сценарий будет генерироваться, когда значения в "поле в опциях" будет равно 3, 10, 20, 35, 50, 65, 80 и т.д. бесконечно.
  • события до - события, которые должны были сработать до этого.
  • время от инсталла min - время от инстала в секундах.
  • время от покупки min - время от последней покупки в секундах.
  • время от события min - время от последнего события в секундах.
  • время от инсталла max - время от инстала в секундах.
  • время от покупки max - время от последней покупки в секундах.
  • время от события max - время от последнего события в секундах.
  • использовать дату - 0 - не использовать, 1 - проверять месяц и день, 2 - проверять и год тоже.
  • год - год, когда сработает оповещение.
  • месяц - месяц, когда сработает оповещение [0, 11].
  • день - день, когда сработает оповещение [1, 31].
  • дней с даты - количество дней, образует период генерации сценария, начиная с указанной даты. Проверяется только при включенном "использовать дату". Если = 1, то генерация только в указанную дату.
  • запретить повторную генерацию - работает для полей уровней и даты/периода. Сценарий может сгенерироваться только один раз в текущем уровне и периоде времени.
  • объект - с генерацией сценария можно передать объекту состояние.
  • состояние - состояние, которое передаем объекту.
  • повторяемое - повторяемое ли событие нет=0, да=1.

Также для сценария можно добавить произвольное количество условий начала сценария.

Состояния

  • check - определяется группа игрока, проверяет есть ли сценарии, которые можно запустить (доходит до первого выполнения условий и останавливается);
  • check_multiple - определяется группа игрока, проверяет есть ли сценарии, которые можно запустить (выполняет все совпавшие условия);
  • check_keep_group - проверяет сценарии, акции (до первого совпадения); после вызова можно смотреть group_changed у salesmanager'а: 1 - группа на самом деле уже должна меняться; was_scenario: 1 - есть активный сценарий в активной группе (пользователь еще не перешел в другую группу), 0 - нет активных сценариев;
  • check_multiple_keep_group - проверяет все сценарии, акции; после вызова можно смотреть group_changed у salesmanager'а: 1 - группа на самом деле уже должна меняться; was_scenario: 1 - есть активный сценарий в активной группе (пользователь еще не перешел в другую группу), 0 - нет активных сценариев;
  • ok - сценарий завершился успехом(покупкой), перед вызовом состояния Salesmamnager'у нужно установить в param id сценария (пишется в машину-обработчик акции, как sales_scenario);
  • cancel - завершить текущую акцию в сценарии, перед вызовом указать id сценария;
  • cancel_scenario - завершить сценарий, указанный в param Salesmamnager'у.
  • show - показать окно акции (вызывает click обработчику акции);
  • continue_scenario - продолжить сценарий, взяв id из параметра param - вызывает click обработчику акции; можно использовать для показа акции по тапу на кнопку (сценарий должен быть активным);
  • show_id - показать окошко акции, взяв в param id акции (не сценария) - вызывает click обработчику акции (проходит по активным сценариям группы и если в каком-то из них активная акция с нужным id, то показывает ее).

Параметры

  • group_changed - определение смены группы: 1 - группа на самом деле уже должна меняться;
  • was_scenario - наличие активных сценариев: 1 - есть активный сценарий в активной группе, 0 - нет;
  • show_ev_id - id текущей акции;
  • n_discount - количество активных акций у игрока.


Статистика

Salesmanager может отправлять 3 события в статистику при условии, что эти события присутствуют в объекте Statistic с нужными параметрами (о многих параметрах Salesmanager не знает, поэтому придется считать их самостоятельно).

  • wnd_discount_1st_show - отправляется при вызове show_first Обработчику акции;
  • wnd_discount_show - отправляется при вызове show Обработчику акции;
  • wnd_discount_click - отправляется при вызове click Обработчику акции.



Принцип работы

При вызове объекту состояния "check_multiple" сначала определяется группа игрока, после чего проверяются все сценарии этой группы. Если есть сценарий, для которого выполнились условия, то он активируется. При этом машина-обработчик первой акции в сценарии переходит в "show_first". В этом состоянии обработчика настраиваем первый показ акции. Если на момент вызова состояния "check_multiple" были активные акции, то информация о них будет обновлена а машина-обработчик акции перейдет в "show". В этом состоянии настраиваем обновление акции (оставшееся время и т.д.). Если акция закончилась (по времени или количеству показов), то при следующей проверке будет показана следующая акция из данного сценария. Сценарий может закончиться 3 способами:

  1. Закончились все акции сценария
  2. Отменой сценария
  3. Покупкой акции

При отмене/покупки акции ее обработчик перейдет в состояние "delete", если будет корректно вызвано соответствующее состояние.

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

объект пишет опции в текущего пользователя, в следующем виде:

 <salesmanager%d ev3="1" act_group="4" last_ev="1459770112">
    <ev3 tl="915" skip="0" aen="-1" aes="1459770112" ae="0"/>
 </salesmanager%d>

В теге salesmanager%d:

  • ev%d - число активаций сценария (отдельно от прочей информации по сценарию из-за обратной совместимости);
  • act_group - номер группы пользователя (начиная с 0) по последней проверке;
  • last_ev - время активации последнего сценария;

В теге ev%d:

  • tl - оставшееся время;
  • skip - 1 - событие отменено, при следующей проверке попытаемся перейти на следующее;
  • aen - оставшееся число его показов;
  • aes - дата старта текущего события;
  • ae - текущее событие для активного сценария, -1 для неактивного;

Пример

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

salesmanager_test.zip