https://wiki.appsalutecreator.com/api.php?action=feedcontributions&user=Beletsky&feedformat=atomwiki.appsalutecreator.com - Вклад участника [ru]2024-03-28T18:15:19ZВклад участникаMediaWiki 1.31.15https://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8181Slotmachine2016-06-01T10:09:54Z<p>Beletsky: /* Автотест */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png|200px|thumb|left]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
===Тип иконки 4===<br />
<br />
Данный тип иконки нужен для начисления ресурса1 за выпадение N иконок на поле.<br />
Т.е условия запуска механики такие же, как и для иконки scatter.<br />
Но в данном случае начисляются не бесплатные спины, а ресурс.<br />
<br />
А вот и пример:<br />
<br />
<code><br />
<slotico icores="1080" icotype="4" icowin="0,0,0,0,0,0" type4val="3" type4min="0,0,0,1,5,10" type4max="0,0,0,3,15,20" type4text="2383" type4dx="-5" type4dy="45" icoobj="3566" icohide="1" icoeffect2="5409"/><br />
</code><br />
<br />
Обратите внимание, что массивы type4min и type4max - связаны.<br />
<br />
Как это работает:<br />
Выпало 3 иконки на поле.<br />
Для них мы включаем эффект2, сами иконки прячем.<br />
За каждую иконку начисляем от type4min[3] до type4max[3] суммарных ставок.<br />
Суммарная ставка была 100 монет. Выпало три иконки. За первую мы начисляем 100, 200 или 300 монет. За вторую и за третью аналогично.<br />
Поверх эффекта2 будет отрисован и проанимирован счетчик type4text, со значением равным выигрышу за каждую из иконок соответственно.<br />
При этом счетчик будет смещен на type4dx и type4dy относительно центра иконки (которая совпадает с пересечением диагоналей ячейки).<br />
<br />
==Автотест==<br />
<br />
Запускается автотест из viewer путём вызова состояния *autospin* объекту слота.<br />
<br />
Дополнительные параметры param - кол-во спинов, которые будут сделаны и param2 - кол-во итераций.<br />
<br />
После начала режима создается файл возле options.xml с результатами автотеста, который заполняется по ходу работы.<br />
<br />
Файл имеет название id из файла уровней _ кол-во спинов из param _ name из файла уровней _ месяц _ день _ часы _ минуты<br />
Если на момент запуска новой итерации время не изменилось - идет дозапись в текущий файл.<br />
<br />
Внутри csv-файла видим таблицу<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|spin<br />
|slot id<br />
|lines<br />
|line bet<br />
|res1before<br />
|res1after<br />
|win<br />
|type<br />
|pos1<br />
|pos2<br />
|pos3<br />
|pos4<br />
|pos5<br />
|bonus_num<br />
|- <br />
|номер спина<br />
|id из файла уровней<br />
|сколько линий<br />
|какая ставка на линию<br />
|баланс до спина<br />
|баланс после спина<br />
|выигрыш за спин<br />
|тип спина r/f обычный/бесплатный<br />
|позиция на рельсе1<br />
|позиция на рельсе2<br />
|позиция на рельсе3<br />
|позиция на рельсе4<br />
|позиция на рельсе5<br />
|множитель бонусный игры, если был<br />
|}<br />
<br />
По окончанию итерации будет выведена краткая статистика:<br />
<br />
return = отдача<br />
<br />
free spins = кол-во бесплатных спинов<br />
<br />
win spins = количество победных спинов<br />
<br />
bonus spins = кол-во бонусных игр<br />
<br />
big win = кол-во big win<br />
<br />
mega win = кол-во mega win<br />
<br />
<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8180Slotmachine2016-06-01T10:09:28Z<p>Beletsky: /* Автотест */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png|200px|thumb|left]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
===Тип иконки 4===<br />
<br />
Данный тип иконки нужен для начисления ресурса1 за выпадение N иконок на поле.<br />
Т.е условия запуска механики такие же, как и для иконки scatter.<br />
Но в данном случае начисляются не бесплатные спины, а ресурс.<br />
<br />
А вот и пример:<br />
<br />
<code><br />
<slotico icores="1080" icotype="4" icowin="0,0,0,0,0,0" type4val="3" type4min="0,0,0,1,5,10" type4max="0,0,0,3,15,20" type4text="2383" type4dx="-5" type4dy="45" icoobj="3566" icohide="1" icoeffect2="5409"/><br />
</code><br />
<br />
Обратите внимание, что массивы type4min и type4max - связаны.<br />
<br />
Как это работает:<br />
Выпало 3 иконки на поле.<br />
Для них мы включаем эффект2, сами иконки прячем.<br />
За каждую иконку начисляем от type4min[3] до type4max[3] суммарных ставок.<br />
Суммарная ставка была 100 монет. Выпало три иконки. За первую мы начисляем 100, 200 или 300 монет. За вторую и за третью аналогично.<br />
Поверх эффекта2 будет отрисован и проанимирован счетчик type4text, со значением равным выигрышу за каждую из иконок соответственно.<br />
При этом счетчик будет смещен на type4dx и type4dy относительно центра иконки (которая совпадает с пересечением диагоналей ячейки).<br />
<br />
==Автотест==<br />
<br />
Запускается автотест из viewer путём вызова состояния *autospin* объекту слота.<br />
<br />
Дополнительные параметры param - кол-во спинов, которые будут сделаны и param2 - кол-во итераций.<br />
<br />
После начала режима создается файл возле options.xml с результатами автотеста, который заполняется по ходу работы.<br />
<br />
Файл имеет название id из файла уровней _ кол-во спинов из param _ name из файла уровней _ месяц _ день _ часы _ минуты<br />
Если на момент запуска новой итерации время не изменилось - идет дозапись в текущий файл.<br />
<br />
Внутри csv-файла видим таблицу<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|spin<br />
|slot id<br />
|lines<br />
|line bet<br />
|res1before<br />
|res1after<br />
|win<br />
|type<br />
|pos1<br />
|pos2<br />
|pos3<br />
|pos4<br />
|pos5<br />
|bonus_num<br />
|- <br />
|номер спина<br />
|id из файла уровней<br />
|сколько линий<br />
|какая ставка на линию<br />
|баланс до спина<br />
|баланс после спина<br />
|выигрыш за спин<br />
|тип спина r/f обычный/бесплатный<br />
|позиция на рельсе1<br />
|позиция на рельсе2<br />
|позиция на рельсе3<br />
|позиция на рельсе4<br />
|позиция на рельсе5<br />
|множитель бонусный игры, если был<br />
|}<br />
<br />
По окончанию итерации будет выведена краткая статистика:<br />
return = отдача<br />
free spins = кол-во бесплатных спинов<br />
win spins = количество победных спинов<br />
bonus spins = кол-во бонусных игр<br />
big win = кол-во big win<br />
mega win = кол-во mega win<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8179Slotmachine2016-06-01T10:01:28Z<p>Beletsky: /* Автотест */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png|200px|thumb|left]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
===Тип иконки 4===<br />
<br />
Данный тип иконки нужен для начисления ресурса1 за выпадение N иконок на поле.<br />
Т.е условия запуска механики такие же, как и для иконки scatter.<br />
Но в данном случае начисляются не бесплатные спины, а ресурс.<br />
<br />
А вот и пример:<br />
<br />
<code><br />
<slotico icores="1080" icotype="4" icowin="0,0,0,0,0,0" type4val="3" type4min="0,0,0,1,5,10" type4max="0,0,0,3,15,20" type4text="2383" type4dx="-5" type4dy="45" icoobj="3566" icohide="1" icoeffect2="5409"/><br />
</code><br />
<br />
Обратите внимание, что массивы type4min и type4max - связаны.<br />
<br />
Как это работает:<br />
Выпало 3 иконки на поле.<br />
Для них мы включаем эффект2, сами иконки прячем.<br />
За каждую иконку начисляем от type4min[3] до type4max[3] суммарных ставок.<br />
Суммарная ставка была 100 монет. Выпало три иконки. За первую мы начисляем 100, 200 или 300 монет. За вторую и за третью аналогично.<br />
Поверх эффекта2 будет отрисован и проанимирован счетчик type4text, со значением равным выигрышу за каждую из иконок соответственно.<br />
При этом счетчик будет смещен на type4dx и type4dy относительно центра иконки (которая совпадает с пересечением диагоналей ячейки).<br />
<br />
==Автотест==<br />
<br />
Запускается автотест из viewer путём вызова состояния *autospin* объекту слота.<br />
Дополнительные параметры param - кол-во спинов, которые будут сделаны и param2 - кол-во итераций.<br />
<br />
После начала режима создается файл возле options.xml с результатами автотеста, который заполняется по ходу работы.<br />
<br />
Файл имеет название id из файла уровней _ кол-во спинов из param _ name из файла уровней _ месяц _ день _ часы _ минуты<br />
Если на момент запуска новой итерации время не изменилось - идет дозапись в текущий файл.<br />
<br />
Внутри csv-файла видим таблицу<br />
<br />
{| class="wikitable" style="text-align: center"<br />
|spin<br />
|slot id<br />
|lines<br />
|line bet<br />
|res1before<br />
|res1after<br />
|win<br />
|type<br />
|pos1<br />
|pos2<br />
|pos3<br />
|pos4<br />
|pos5<br />
|bonus_num<br />
|- <br />
|номер спина<br />
|id из файла уровней<br />
|сколько линий<br />
|какая ставка на линию<br />
|баланс до спина<br />
|баланс после спина<br />
|выигрыш за спин<br />
|тип спина r/f обычный/бесплатный<br />
|позиция на рельсе1<br />
|позиция на рельсе2<br />
|позиция на рельсе3<br />
|позиция на рельсе4<br />
|позиция на рельсе5<br />
|множитель бонусный игры, если был<br />
|}<br />
<br />
<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8178Slotmachine2016-06-01T09:35:43Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png|200px|thumb|left]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
===Тип иконки 4===<br />
<br />
Данный тип иконки нужен для начисления ресурса1 за выпадение N иконок на поле.<br />
Т.е условия запуска механики такие же, как и для иконки scatter.<br />
Но в данном случае начисляются не бесплатные спины, а ресурс.<br />
<br />
А вот и пример:<br />
<br />
<code><br />
<slotico icores="1080" icotype="4" icowin="0,0,0,0,0,0" type4val="3" type4min="0,0,0,1,5,10" type4max="0,0,0,3,15,20" type4text="2383" type4dx="-5" type4dy="45" icoobj="3566" icohide="1" icoeffect2="5409"/><br />
</code><br />
<br />
Обратите внимание, что массивы type4min и type4max - связаны.<br />
<br />
Как это работает:<br />
Выпало 3 иконки на поле.<br />
Для них мы включаем эффект2, сами иконки прячем.<br />
За каждую иконку начисляем от type4min[3] до type4max[3] суммарных ставок.<br />
Суммарная ставка была 100 монет. Выпало три иконки. За первую мы начисляем 100, 200 или 300 монет. За вторую и за третью аналогично.<br />
Поверх эффекта2 будет отрисован и проанимирован счетчик type4text, со значением равным выигрышу за каждую из иконок соответственно.<br />
При этом счетчик будет смещен на type4dx и type4dy относительно центра иконки (которая совпадает с пересечением диагоналей ячейки).<br />
<br />
==Автотест==<br />
<br />
Запускается автотест из viewer путём вызова состояния *autospin* объекту слота.<br />
Дополнительные параметры param - кол-во спинов, которые будут сделаны и param2 - кол-во итераций.<br />
<br />
После начала режима создается файл возле options.xml с результатами автотеста, который заполняется по ходу работы.<br />
<br />
Файл имеет название id из файла уровней _ кол-во спинов из param _ name из файла уровней _ месяц _ день _ часы _ минуты<br />
Если на момент запуска новой итерации время не изменилось - идет дозапись в текущий файл.<br />
<br />
Внутри csv-файла видим таблицу<br />
<br />
{|spin||slot id||lines||line bet||res1before||res1after||win||type||pos1||pos2||pos3||pos4||pos5||bonus_num| - |номер спина||id из файла уровней||сколько линий||какая ставка на линию||баланс до спина||баланс после спина||выигрыш за спин||тип спина r/f обычный/бесплатный||позиция на рельсе1||позиция на рельсе2||позиция на рельсе3||позиция на рельсе4||позиция на рельсе5||множительно бонусный игры, если был|}<br />
<br />
<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8177Slotmachine2016-06-01T08:29:13Z<p>Beletsky: /* Дополнительные настройки механик */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png|200px|thumb|left]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
===Тип иконки 4===<br />
<br />
Данный тип иконки нужен для начисления ресурса1 за выпадение N иконок на поле.<br />
Т.е условия запуска механики такие же, как и для иконки scatter.<br />
Но в данном случае начисляются не бесплатные спины, а ресурс.<br />
<br />
А вот и пример:<br />
<br />
<code><br />
<slotico icores="1080" icotype="4" icowin="0,0,0,0,0,0" type4val="3" type4min="0,0,0,1,5,10" type4max="0,0,0,3,15,20" type4text="2383" type4dx="-5" type4dy="45" icoobj="3566" icohide="1" icoeffect2="5409"/><br />
</code><br />
<br />
Обратите внимание, что массивы type4min и type4max - связаны.<br />
<br />
Как это работает:<br />
Выпало 3 иконки на поле.<br />
Для них мы включаем эффект2, сами иконки прячем.<br />
За каждую иконку начисляем от type4min[3] до type4max[3] суммарных ставок.<br />
Суммарная ставка была 100 монет. Выпало три иконки. За первую мы начисляем 100, 200 или 300 монет. За вторую и за третью аналогично.<br />
Поверх эффекта2 будет отрисован и проанимирован счетчик type4text, со значением равным выигрышу за каждую из иконок соответственно.<br />
При этом счетчик будет смещен на type4dx и type4dy относительно центра иконки (которая совпадает с пересечением диагоналей ячейки).<br />
<br />
<br />
<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8176Slotmachine2016-06-01T08:18:18Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[Файл:mermaid_free_spins_wild.png]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8175Slotmachine2016-06-01T08:17:33Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
==Дополнительные настройки механик==<br />
<br />
===Scatter без scatter===<br />
<br />
Есть возможность начислять бесплатные спины без использования специальной иконки.<br />
<br />
Для этого разработана такая методика:<br />
После совершения подряд MIN спинов - после каждого последующего спина до MAX есть вероятность P начислить игроку N бесплатных спинов.<br />
Если номер спина в последовательности спинов превысил MAX, то бесплатные спины начисляются с вероятностью P=1.<br />
<br />
При этом указываем<br />
<br />
<code><br />
spinspreemin="16" spinspreemax="66" addscatterp="0.03" addscattermin="7" addscattermax="9"<br />
</code><br />
<br />
Это значит, что начиная с 16-го спина по 66-й включительно с вероятностью 3% будет начислено от 7 до 9ти бесплатных спинов (7,8 или 9 равновероятно).<br />
<br />
При чем во время самих бесплатных спинов очередь продолжается, но так как 16>7, то выпасть дополнительные спины во время бесплатных не могут.<br />
<br />
Перед выходом из слота ОБЯЗАТЕЛЬНО очищаем очередь путём вызова объекту состояния *clear_spree*.<br />
<br />
Частота выпадения бесплатных спинов и регулировка отдачи с их помощью можно осуществить изменяя параметры addscatterp и spinspreemin/spinspreemax.<br />
<br />
<br />
===Линии или пути===<br />
<br />
Часто можно встретить вместо привычных линий так называемые "пути" или "ways". И их почему-то огромное кол-во, в сравнении с линиями.<br />
243 ways на слоте с тремя рядами и пятью барабанами. Это означает то, что мы играем сразу на все возможные линии, которых всего может быть 3^5=243. Таким же образом в слоте 4x5 всего 1024 пути.<br />
<br />
При этом ставка на линию чаще всего преобразуется в абсолютно аналогичный "множитель", а кол-во линий (хоть и будет называться coins) - фиксированная величина. Т.е для самой математики подсчета суммарной ставки - ничего не поменялось. Выплата так же будет зависеть от "множителя".<br />
<br />
При этом сам выигрыш можно считать как наличие иконки определенного типа последовательно на рельсах без пропусков.<br />
<br />
Пример: иконка1 встретилась на 1-й, 2-й и 3-ей рельсе по одной на каждой. Иконка1 участвовала в построении выигрышной цепочки длинной 3 иконки.<br />
<br />
У объекта в GData можно найти параметр linespath=0 или 1. Удобно ориентироваться по нему для изменений в UI, к примеру.<br />
<br />
===Превращение в wild при соседях===<br />
<br />
Механика, позволяющая наделить обычную иконку св-вами wild при особых условиях.<br />
Условия:<br />
Режим бесплатных спинов активен.<br />
На соседних рельсах попали иконки, у которых параметр transwild=1.<br />
[[mermaid_free_spins_wild.png]]<br />
При выполнении условий у иконок включается специальный эффект, который может являться машиной, которая запускает видео/фреймовую анимацию.<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Mermaid_free_spins_wild.png&diff=8174Файл:Mermaid free spins wild.png2016-06-01T08:15:19Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8173Slotmachine2016-06-01T06:30:44Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики (если стоит настройка СЛУЧАЙНО):<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
<br />
===Дополнительные настройки механик===<br />
<br />
<br />
<br />
<br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8172Slotmachine2016-06-01T06:27:07Z<p>Beletsky: /* Состояния */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''clear_spree''' - очищаем очередь спинов для scatter без scatter<br />
** '''clear_stats''' - очищаем параметры для статистики.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8171Slotmachine2016-05-31T08:35:58Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - были бонусные ячейки''' - bonus_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - есть свободные спины''' - scatter_num стал больше нуля, что означает, что выпали бонусные иконки. Запускается обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - конец фри спинов''' - scatter_num стал равен нулю. Не вызывается после паузы бесплатных спинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - недостаточно денег''' - при попытке начать спин: баланс игрока строго меньше суммарной ставки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - переход из alllines в nextline''' - если время в параметре больше нуля, то по истечении этого времени вызовется этот обработчик. Если время равно нулю - вызовется без задержки.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало вращения''' - после успешного начала спина вызываем обработчик.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - начало автоспинов''' - после успешного начала автоспинов.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - досрочное окончание автоспинов''' - автоспины были оборваны игроком.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - окончание автоспинов''' - указанное кол-во автоспинов закончилось.<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - копилка заполнилась''' - копилка заполнилась.<br />
<br />
[[Файл:+.png]] '''замена графики''' - объекты и графика для них в зависимости от режимов (обычный, бесплатные спины, интрига).<br />
*'''объект''' - id объекта<br />
*'''нормальная''' - графика обычного спина<br />
*'''фриспины''' - графика бесплатного спина<br />
*'''рельса интриги''' - порядковый номер подложки рельсы, начиная с самого левого барабана.<br />
*''интрига'''' - графика режима "интрига".<br />
<br />
[[Файл:+.png]] '''фриспины за расклад''' - если на поле выпали иконки, где каждая "строка" слота совпадает с шаблоном - начисляем бесплатные спины.<br />
*'''расклад для строки''' - массив целых через запятую, обозначающих первую строку. Длина массива == кол-во барабанов.<br />
*'''число фриспинов''' - кол-во бесплатных спинов, которое начислим за выпадение такой комбинации<br />
<br />
[[Файл:+.png]] '''''' - <br />
<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8170Slotmachine2016-05-31T08:18:51Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter, 4- бонусная иконка, начисляет деньги. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины. 4 - иконка, при выпадении N иконок и более начисляется награда за каждую иконку в размере множитель*суммарная ставка. Множитель пересчитывается для каждой иконки отдельно.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''не рисовать следующих''' (''icoskip'') - если хотим отрисовать длинную иконку (высота больше одной иконки, к примеру - равна высоты всей рельсы), то указываем сколько иконок не рисовать после текущей (в рельсе это выглядит как 222), при этом точку пивота у графики следует разместить в верхней трети.<br />
** '''объект иконка''' (''icoobj'') - объект, в который поместим графику иконки из поля icores. Нужна для оформления таблицы выплат.<br />
** '''объект текст''' (''icotxt'') - объект, в который поместим значения выплат из поля icowin. Нужна для оформления таблицы выплат.<br />
** '''цвет 1''' (''icocolor1'') - цвет, который будем использовать в текстовом объекте. <br />
** '''цвет 2''' (''icocolor2'') - <цвет 1>5 - </цвет 1><цвет 2>icowin[5]|</цвет 2><цвет 1>4 - </цвет 1><цвет 2>icowin[4]|</цвет 2> и так далее.<br />
** '''превращаться в вайлд при соседях''' (''transwild'') - Для слота "Русалки". Превращаться в вайлд при соседях, у которых этот параметр так же равен единицы. Только при активных фриспинах. При срабатывании включаем эффект превращения.<br />
** '''эффект превращения''' (''transwildeffect'') - эффект превращения<br />
** '''направление''' (''dir'') - 0-слева направо, 1-справа налево, 2-обе. Эта настройка нужна для того, чтобы не у всех линий менять направление подсчета выигрыша, а только у конкретной иконки (к примеру у дорогой, которая очень редко встречается).<br />
** '''тип 4. кол-во''' (''type4val'') - только для типа 4. Сколько иконок типа должно появиться, чтобы сработал эффект, срабатывает если больше 0 хотя бы один элемент из массива.<br />
** '''тип 4. мин''' (''type4min'') - массив целых через запятую, означает нижний предел множителя.<br />
** '''тип 4. макс''' (''type4max'') - массив целых через запятую, означает верхний предел множителя.<br />
** '''тип 4. текст''' (''type4text'') - id объекта, счетчик. Сумма выигрыша помещается в значение счетчика, после чего он анимируется.<br />
** '''тип 4. dx''' (''type4dx'') - смещение счетчика относительно пивота иконки по x<br />
** '''тип 4. dy''' (''type4dy'') - смещение счетчика относительно пивота иконки по у<br />
** '''звук''' (''icosnd'') - звук иконки. Срабатывает после выигрыша иконки.<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8169Slotmachine2016-05-31T07:03:27Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 2 - Bonus, 1 - Wild, 3 - Scatter. 0 - обычная иконка. 2 - при выпадении N и больше иконок на барабанах (учитывая настройку выше) - вызывается обработчик. 1 - бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины.<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
** '''прятать основную картинку при эффекте''' (''icohide'') - прятать ли ресурс иконки при включении основного эффекта ячейки или дополнительного.<br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
** '''''' ('''') - <br />
<br />
<br />
<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8168Slotmachine2016-05-30T14:13:48Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
<br />
*'''фри спины''' - <br />
** '''рельса 1-5''' (''r1s-r5s'') - дополнительные рельсы на бесплатные спины. Заменяют основные.<br />
** '''осталось спинов''' (''cntFreeSpins'') - сколько осталось спинов из начисленных за выпавшие иконки. Счетчик, который заполняется объектом и перисовывается в начале каждого спина.<br />
** '''выигрыш''' (''cntFreeSpinsWin'') - сумма всех заработанных монет за выпавшие бесплатные спины.<br />
** '''задержка перед след. спином выигр''' (''freeWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''freeLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
*'''авто спины''' - <br />
** '''осталось спинов''' (''cntAutoSpins'') - сколько осталось спинов после запуска режима. Счетчик, который заполняется объектом и перерисовывается в начале каждого спина.<br />
** '''задержка перед след. спином выигр''' (''autoWinDelay'') - задержка перед началом следующего спина, если был выигрыш.<br />
** '''задержка перед след. спином проигр''' (''autoLooseDelay'') - задержка перед началом следующего спина, если был проигрыш.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8167Slotmachine2016-05-30T13:44:11Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''задержка''' (''wildexp_t'') - <br />
* '''эффект вниз на 2''' (''wildexp_down2'') - машина, которая клонируется для эффекта и помещается в ячейку, которая сработала. Может запускать фреймовую анимацию или видео. Видео должно расширяться вниз.<br />
* '''эффект вверх и вниз''' (''wildexp_updown'') - Видео должно расширяться вниз и вверх на высоту одной иконки.<br />
* '''эффект вверх на 2''' (''wildexp_up2'') - Видео должно расширяться вверх на высоту двух иконок.<br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана. Чем больше эта погрешность - тем большее влияние будет давать значение числа симуляций перед окончанием спина. Влияет на разброс места остановки барабана. Не должна давать разброс больше 1-2 иконок.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** барабан вращается (''sndspin2'') - барабан вращается.<br />
** барабан вращается (''sndspin3'') - барабан вращается.<br />
** барабан вращается (''sndspin4'') - барабан вращается.<br />
Как можно заметить - тут аж 4 звука вращения барабанов. Если указаны все или больше двух, то порядок воспроизведения такой:<br />
Первый спин - первый звук. Второй спин - звук два и так далее зациклено. Если объект был проинициализирован или были бесплатные спины - очередь сбрасывается. Параметры 2-4 являются НЕОБЯЗАТЕЛЬНЫМИ.<br />
** барабан фриспины (''sndspinf'') - барабан вращается (звук вращения во время бесплатных спинов). <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана.<br />
** остановка барабана (''sndstop2'') - остановка барабана 2. <br />
** остановка барабана (''sndstop3'') - остановка барабана 3.<br />
** остановка барабана (''sndstop4'') - остановка барабана 4. <br />
** остановка барабана (''sndstop5'') - остановка барабана 5. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
*'''пять в ряд''' - особый случай,когда длина цепочки равняется числу барабанов. Пример: пять иконок на линии при размере слота 5 на 3.<br />
** '''объект для картинки''' (''line5_obji'') - Объект, ресурс которого будет заменен на ресурс иконки, которая участвовала в таком событии. Если таких иконок было несколько - выберется самая дорогая из них, учитывая таблицу выплат.<br />
** '''объект для состояния''' (''line5_objs'') - объект для состояния<br />
** '''состояние''' (''line5_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''big win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, но меньше чем у mega win, то вызовется этот обработчик. Пример big_value = 5 , mega_value = 25. Если win/total bet >= 5 и <=25, то big win. Если больше 25 - mega win.<br />
** '''значение''' (''big_value'') - значение отношения.<br />
** '''каунтер''' (''big_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''big_objs'') - объект для состояния<br />
** '''состояние''' (''big_st'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''mega win''' - если суммарный выигрыш и суммарная ставка относятся как значение из следующего поля и больше, то вызовется этот обработчик.<br />
** '''значение''' (''mega_value'') - значение отношения.<br />
** '''каунтер''' (''mega_obji'') - счетчик, куда будет помещено значение выигрыша и он будет проанимирован.<br />
** '''объект для состояния''' (''mega_obji'') - объект для состояния<br />
** '''состояние''' (''objid'') - Новое состояние для объекта из предыдущего поля.<br />
<br />
*'''scatter без scatter''' - включение режима бесплатных спинов БЕЗ иконки типа scatter.<br />
Как работает:<br />
Игрок делает спины подряд, не считаем прерыванием цепочки включением дополнительных механик.<br />
Если номер текущего спина в серии больше или равен spinspreemin - каждый спин с вероятностью addscatterp можно получить от addscattermin до addscattermax спинов (равновероятно).<br />
Если номер спина превысил spinspreemax - включаем с вероятностью == 1. Т.е в любом случае.<br />
** '''спинов подряд min''' (''spinspreemin'') - Мин. число спинов подряд для дополнительных скаттеров<br />
** '''спинов подряд max''' (''spinspreemax'') - Мaкс. число спинов подряд для дополнительных скаттеров<br />
** '''вероятность''' (''addscatterp'') - Вероятность того, что дадим фриспины<br />
** '''дать скаттеров min''' (''addscattermin'') - Мин. число скаттеров, которое дадим.<br />
** '''дать скаттеров max''' (''addscattermax'') - Максимальное число.<br />
<br />
<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8166Slotmachine2016-05-30T12:42:01Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''файл уровня''' (''levelFile'') - Имя файла с уровнями<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии. В нем будут использоваться ресурсы, указанные в доп.параметре с эффектом линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается рандомно (описано ниже, исторический параметр, не используется), 1 - эффект ячейки выбирается последовательно (выиграли линии 4,12,25. Для 4 - первый эффект, 12 - второй добавленные и т.д), 2 - по номеру линии (выиграли линии 4,12,25. Для 4 - эффект 4 (порядковый номер в списке добавленных), для 12 - 12-й и т.д). Сделано для того, чтобы номер линии всегда был связан с определенным цветом. Иконка линии обычно окрашена в этот же цвет.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''считать линии в обе стороны''' (''twowayscalc'') - 0-нет, 1-да (обычно линии считаются с самой левой иконки в сторону правой. Есть случаи, когда отдельная иконка или все линии считаются как слева-направо так и справа-налево. В таком случае обязательно (и это учтено в объекте), что награда за 5 выпавших иконок НЕ УДВАИВАЕТСЯ)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства. Если значение 0 - сразу идем перебирать эффекты линий (запускается обработчик для начала этой процедуры, которая запускается и управляется НЕ ИЗ ОБЪЕКТА).<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''показывать все линии при добавлении''' (''alllineswhenadd'') - при изменении кол-ва активных линий (вызове состояний add_line dec_line) показывать или не показывать эффекты для ВСЕХ активных линий. Вызываются последовательно эффекты для каждой линии (выглядит как отрисовка абсолютно всех риббонов, учитывая настройку выше).<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке. РАЗМЕР этого массива должен точно совпадать с размером следующего.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''': при каждом начале спина - происходит снятие ресурса за спин в размере суммарной ставки и в отдельное укромное место (mboxOptions) помещается сумма, равная rand(min;max)*total_bet, если в укромном месте не накопилась сумма большая или равная значению из mboxValues при текущем уровне XP.<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
<br />
*'''расширение wild по вертикали''' - срабатывает (при wildexp_t != -1), когда wild участвует в построении выигрышной цепочки. Расширяется на весь барабан (реализовано для высоты барабана == 3 иконка). После чего происходит еще одна итерация проверки выигрышей. <br />
* '''''' ('''') - <br />
* '''''' ('''') - <br />
* '''''' ('''') - <br />
* '''''' ('''') - <br />
<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=8161Slotmachine2016-05-23T13:32:17Z<p>Beletsky: /* Общие параметры */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства.<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''число симуляций перед спином''' (''simNum'') - Перед спином будет проведено n симуляций и выбрана лучшая.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
<br />
* '''копилка''':<br />
** '''ключ в опциях''' (''mboxOptions'') - Ключ в опциях (КОРРЕКТНОСТЬ ЗНАЧЕНИЙ НА ПОЛЬЗОВАТЕЛЕ)<br />
** '''процент min''' (''mboxMin'') - процент min.<br />
** '''процент max''' (''mboxMax'') - процент max.<br />
** '''значения предела''' (''mboxValues'') - Значения предела<br />
** '''уровни предела''' (''mboxLevels'') - Уровни предела<br />
<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Flurry&diff=7622Flurry2016-02-11T14:28:55Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
[[Object|Объект]] '''flurry''' используется для сбора статистики об использовании приложения. <br />
<br />
По умолчанию записывает такие параметры как время сессии, количество сессий, устройство, версия ОС, количество пользователей, и представляет эти данные в виде графиков и таблиц. Также можно записать какие кнопки нажимались, время между нажатиями определённых кнопок. Для сбора общих данных достаточно добавить в соответствующем виде flurry-id приложения в app.icf или в viewer.xml соответствующей платформы перед сборкой. Для сбора данных о нажатиях кнопок и др. необходимо кроме добавления flurry-id приложения в app.icf или в viewer.xml соответствующей платформы, также добавить в проект объект типа flurry и передавать ему интересующие события.<br />
<br />
Общая статистика на сервисе Flurry выглядит примерно так:<br />
<br />
[[Файл:Flurry sum stat.jpg]]<br />
<br />
==Параметры и состояния объекта flurry==<br />
<br />
===Параметры объекта flurry===<br />
<br />
Чтобы в игре установить сбор статистики нажатий определённых кнопок необходимо в редакторе сцен добавить объект Flurry (желательно на глобальный экран) и передать ему определённые параметры.<br />
У объекта flurry есть 3 параметра которые можно задавать. Это:<br />
* '''event''' - задаёт имя события<br />
* '''param_name''' - задаёт имя параметра<br />
* '''param_value''' - задаёт значение параметра<br />
Для корректной работы сбора статистики с нажатия кнопки все три поля должны быть обязательно заполнены.<br />
Рассмотрим принцип формирования названий событий на примере кнопки выбора пака в пазлах.<br />
<br />
Параметр '''''event''''' должен обозначить общее название группы событий, на пример ''Pack_select'';<br />
<br />
Параметр '''''param_name''''' должен указывать на конкретный параметр который будет записываться, в нашем случае его можно назвать ''pack_name'';<br />
<br />
Параметр '''''param_value''''' задаёт конкретное значение параметра, на пример ''pack_1''.<br />
<br />
===Состояния объекта flurry===<br />
<br />
* '''event''' - отправляет накопленные данные<br />
<br />
В самом объекте flurry можно задать начальные параметры, но при изменении его параметров те которые были - изменятся, а если до изменения параметров перевести объект flurry в состояние event, то на сервер статистики отправятся значения по-умолчанию, которые были записаны.<br />
<br />
* '''send_log''' - отправляет файл walkthrough.log на сервер<br />
<br />
В файл walkthrough.log флури пишет прохождение по игре: каждая строка лога содержит значения ключевых параметров (опыт, монеты, кристаллы, последний выполненный таск и т.д.) на момент записи, запись новой строки вызывается при наступлении различных событий (повышение уровня, начисление ресурса, выполнение задния и т.д.)<br />
<br />
Внимание!!! В проекте, собранном без дебага, лог не пишется. Для логирования прохождения без дебага нужно в app.icf в группе Flurry указать log_walkthrough = 1 (это касается файла walkthrough.log). С дебагом будет логироваться вне зависимости от этого.<br />
<br />
==Пример применения объекта flurry==<br />
<br />
Пример того как кнопка отправляет на сервер информацию о том, что она была нажата:<br />
<br />
[[Файл:Flurry button.jpg]]<br />
<br />
В данном случае кнопка записывает событие, название параметра, значение параметра, и сразу отправляет на сервер статистики.<br />
<br />
<br />
==Настройки приложения для отправки статистики==<br />
<br />
'''Для отправки статистики также необходимо добавить flurry-id в app.icf или в viewer.xml соответствующей платформы.'''<br />
Т.к. нагляднее выглядит статистика отдельно для платформы ios и отдельно для android, а также поскольку сервис предоставляет разные flurry-sdk для каждой из платформ, то flurry-id лучше всего вставлять в viewer.xml соответствующей платформы.<br />
<br />
В app.icf необходимо добавить строки:<br />
<br />
'''''[Flurry]'''''<br />
<br />
'''''game_id="здесь указывается flurry-id приложения"'''''<br />
<br />
или добавить в viewer.xml соответствующей платформы такую строку после globaltop, если таковой имеется, если его нет, то после настроек банеров (<banners platform_id="".../>):<br />
<br />
'''''<flurry game_id="здесь указывается flurry-id приложения"/>'''''<br />
<br />
==Реклама==<br />
<br />
Управление показом рекламы идёт через объект типа [[Advertisement]].<br />
<br />
В объекте [[Advertisement]] в качестве провайдера должен быть указан объект типа flurry и должны быть указаны '''тип''', '''space''', '''size'''.<br />
<br />
Также в [[app.icf]] или [[viewer.xml]] должен быть указан flurry id приложения, согласно ему идет работа банерной системы.<br />
<br />
Кроме этого в итоговый ''AndroidManifest.xml'' должны быть добавлены следующие строки:<br />
<br />
<pre><br />
<br />
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"<br />
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode" <br />
android:hardwareAccelerated="true" ><br />
</activity><br />
<br />
</pre><br />
<br />
Также должно быть следующее разрешение:<br />
<br />
<pre><br />
<br />
<uses-permission android:name="android.permission.INTERNET"/><br />
<br />
</pre><br />
<br />
<br />
<br />
==Примечания==<br />
<br />
Исходя из значений параметров будет строиться на сервисе Flurry диаграмма по параметру указанному в ''param_name''. К примеру, если для одной кнопки зададим в ''param_value'' значение ''pack_1'', второй кнопке зададим значение ''pack_2'', то в итоге, на странице сервиса в статистике приложения в раздеде Events получим список событий, которые были записаны, если выберем событие и выберем отобразить статистику по параметрам, для наглядности в круговой диаграмме, то увидим круговую диаграмму с долями которые занимает определённый параметр. Доли высчитываются исходя из количества пришедших значений параметров, то есть если 3 раза придёт значение ''pack_1'' и один раз придёт значение ''pack_2'', то доля ''pack_1'' будет 75%, а ''pack_2'' - 25% . <br />
<br />
Также можно выбрать из выпадающего списка по каким параметрам(которые указывались в '''''param_name''''' в рамках текущего имени события) необходимо отобразить статистику по значениям параметра.<br />
<br />
[[Файл:Flurry ev stat.jpg]]<br />
<br />
<br />
===Рекомендации Flurry к событиям===<br />
* Составьте цели и план действий вокруг приложения<br />
* Если Вы хотите изменять функционал - отслеживайте его<br />
* Убедитесь что Вы собираете события вокруг навигации и монетизации<br />
* Имена событий должны легко различаться и поддаваться категоризации<br />
* Используйте временные события. Flurry автоматически разобьёт их по группам и Вы получите наглядную информацию.<br />
* Не тратьте много времени на планирование. Вы можете добавить события позже.<br />
<br />
[http://support.flurry.com/index.php?title=Analytics/GettingStarted/Events Рекомендации Flurry к параметрам]<br />
<br />
=== Отправка объектом Economics Flurry событий и параметров ===<br />
<br />
Объект Economicsавтоматически оправляет следующие Flurry события и параметры:<br />
<br />
1) При достижении уровня - '''xplevel_ <i> _reached''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*xplevel - Уровень опыта<br />
*coins_spent_log - Сколько потрачено монет<br />
*coins_left_log - Сколько осталось монет<br />
*diams_spent - Сколько потрачено кристаллов<br />
*diams_left - Сколько осталось кристаллов<br />
*hints_used - Сколько хинтов использовано<br />
<br />
2) При покупке в банке - '''purchase_ok_<item>''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*price_usd - Цена в долларах<br />
*history - История покупок через запятую<br />
*total_usd - Сколько суммарно потрачено денег<br />
*last_location - Последняя локация<br />
*last_task - Последняя мода<br />
*was_discount - Была ли скидка<br />
*from_hidden - 1-из хиддена, 0 -из меню<br />
*last_anomaly - Последняя аномалия<br />
<br />
3) При первой покупке энергии - '''1st_run_buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
4) При первом использовании энергии - '''1st_run_use_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*energy_left - Сколько осталось энергии<br />
<br />
5) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
6) При покупке энергии - '''buy_energy''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_pric - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
<br />
7) При покупке хинтов - '''buy_hints''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*was_anomaly - 1 - да, 0 -нет<br />
<br />
8) При покупке амулетов - '''buy_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
9) При использовании амулетов - '''use_amulets''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*last_task_open - Последняя открытая таска<br />
*last_loc - Последняя сыгранная локация<br />
*xp_level - Уровень пользователя<br />
*from_game - 1- да, 0 -нет<br />
*from_main_menu - 1 - да, 0 -нет<br />
<br />
10) При покупке чарджеров - '''buy_chargers''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
11) При покупке доступов к локациям - '''buy_keys''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
12) При покупке ингридиентов для крафта - ''' buy_Ingridients''' (buy_parts):<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
13) При покупке ингридиентов для крафта - ''' buy_Ingridients''':<br />
*t_log_play - Время логарифмическое игровое<br />
*t_log_cal - Время логарифмическое календарное<br />
*id - Id предмета<br />
*diams_price - Цена в кристаллах<br />
*coins_price - Цена в монетках<br />
*xp_level - Уровень пользователя<br />
<br />
<br />
=== Перечень source для событий coins_get, energy_get, diams_get===<br />
<br />
SOURCE_UNKNOWN = 0, //!< неизвестный источник<br />
SOURCE_PURCHASE = 1, //!< покупка<br />
SOURCE_HIDDEN_WIN = 2, //!< выигрыш в хиддене<br />
SOURCE_MINIGAME_WIN = 3, //!< выигрыш в миниигре<br />
SOURCE_DAILY_BONUS = 4, //!< дейли бонус<br />
SOURCE_SOCIAL_BONUS = 5, //!< бонусы за социалку<br />
SOURCE_CASINO = 6, //!< казино<br />
SOURCE_EXCHANGE = 7, //!< биржа<br />
SOURCE_DEPOSIT = 8, //!< депозит<br />
SOURCE_COLLECTION_GOT = 9, //!< сдача коллекций<br />
SOURCE_GUES = 10, //!< угадайка<br />
SOURCE_TASK_COMPLETE = 11, //!< выполнена задача<br />
SOURCE_TRIVIA = 12, //!< миллионер<br />
SOURCE_REDEEM = 13, //!< начисление из админки<br />
SOURCE_LEVEL_UP = 14, //!< достижение уровня<br />
SOURCE_USE_ITEM = 15 //!< использование предмета<br />
<br />
== Ограничения для разных сервисов статистики ==<br />
* Flurry:<br />
** 300 уникальных имен событий,<br />
** 10 параметров,<br />
на данный момент отображаются топ-500 значений параметров для каждого события<br />
* FaceBook:<br />
** 1000 уникальных имен событий,<br />
** 25 параметров,<br />
** Максимальное кол-во символов в значении параметра - 100<br />
* Amazon:<br />
** 1500 уникальных пользовательских имен событий<br />
** 40 параметров,<br />
** Максимальное кол-во символов в названии параметра - 50,<br />
** Максимальное кол-во символов в значении параметра - 200<br />
<br />
<br />
[[Category:Options]]<br />
[[Category:Реклама]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7587Wallet2016-01-29T11:47:06Z<p>Beletsky: /* Параметры объекта Wallet */</p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' (''economics'') - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' (''id'') - Внутренний id покупки<br />
**'''Монеты''' (''res1'') - количество монет<br />
**'''кристаллы''' (''res2'') - количество кристаллов<br />
**'''поле в опциях для множителя''' (''multfield'') - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' (''status'') - прибавка к статусным очкам<br />
**'''множитель от уровня''' (''multlev'') - применять ли дополнительный множитель от уровня экономики. Т.е значение из <br />
**'''эталонная цена''' (''price'') - цена in-app в валюте для подсчета потраченных игроком денег.<br />
([http://wiki.appsalutecreator.com/index.php/Economics#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81 | Что такое статус и с чем его едят]). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
* ''%player%.wallet_total_usd'' - ключ к сумме потраченных единиц валюты на in-app.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7586Wallet2016-01-29T11:44:18Z<p>Beletsky: /* Состояния */</p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' - Внутренний id покупки<br />
**'''Монеты''' - количество монет<br />
**'''кристаллы''' - количество кристаллов<br />
**'''поле в опциях для множителя''' - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' - прибавка к статусным очкам ([http://wiki.appsalutecreator.com/index.php/Economics#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81 | Что такое статус и с чем его едят]). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
* ''%player%.wallet_total_usd'' - ключ к сумме потраченных единиц валюты на in-app.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=7570Slotmachine2016-01-12T15:28:13Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''последовательные эффекты''' (''order_effects'') - 0 - эффект ячейки выбирается случайно, 1 - эффект ячейки выбирается последовательно (для первой выигравшей - первый по порядку, второй - второй и т.д), 2 - по номеру линии (каждой линии будет соответствовать ресурс для ribbon и ресурс для эффекта ячейки, взятый по порядку из добавляемых свойств. Т.е если комбинация выпала на линии 14, то для неё будут использованы ресурсы, указанные в 14том по порядку добавляемом свойстве).<br />
* '''линии или пути''' (''linespath'') - Использовать для вычисления выигрыша линии или пути.<br />
* '''макс. число линий"''' (''max_lines'') - Если задано больше 0, то нельзя поставить более чем на столько линий. Не может превышать число реально заданных линий. При вызове add_bet ставка не сможет превысить это значение.<br />
* '''видимых строк''' (''max_rows'') - "высота" слота. Количество строк для отображения. Пр.: Если слот 5х3, то 3.<br />
* '''подсчет бонусных иконок''' (''bonuscalc'') - 0 - на любом месте на поле, 1 - на активной линии (если играем на 9 линий, а иконки выпали на 11той - бонусная игра не будет запущена), 2 - на активной линии подряд (аналогично предыдущему, но без пропуска иконок по столбцам, т.е на линии и последовательно, как обычная иконка)<br />
* '''время подсветки всех линий''' (''allLinesTime'') - время, которое будут показываться ribbon для всех выигравших линий. После окончания этого времени будет вызван обработчик из добавляемого свойства.<br />
* '''прятать иконки линий''' (''lineicohide'') - 0 - не прятать, 1 - по видимости (если линий меньше N, то по vis будут выключены все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N), 2 - первый второй фрейм (если графика доб. объектов-иконок была фреймовой анимацией, то если N меньше максимального кол-ва линий - все объекты иконок линий из добавляемого свойства, порядковый номер которых больше N отобразят второй фрейм). Это сложно описано, я знаю.<br />
* '''чит''' (''cheat'') - Желаемый результат. Будет выпадать всегда, пока это поле заполнено. По сути - это порядковый номер иконки в каждой рельсе. Имеет вид (1, 5, 6, 2, 4). Т.е на поле в позиции [1,1] будет иконка 1 (не id, а порядковый номер в r1[1]), [1,2]==r2[5] и так далее.<br />
* '''ставки''':<br />
** '''economics''' (''economics'') - объект экономики, чтобы объект знал о всех параметрах игрока и его прохождении.<br />
** '''использовать''' (''use'') - Автоматическое снятие и начисление монет и опыта. Нет - не снимаем ставки, не начисляе выигранное; да - снимаем и начисляем.<br />
** '''значения ставок''' (''betValues'') - УПОРЯДОЧЕННЫЙ (я не просто так выделил) массив значений ставки. Значения могут нелинейно расти и шаг может меняться от ставки к ставке.<br />
** '''уровни ставок''' (''betLevels'') - упорядоченный массив уровней к предыдущему. Обязательно должны совпадать по размеру. Каждому значению из betValues[i] соответствует betLevels[i]. Означает уровень, на котором станет доступной то или иное значение ставки.<br />
* '''счетчики''':<br />
** '''число линий''' (''cntLinesNum'') - изменяется при вызове add_line, remove_line и отображает текущее число активных линий.<br />
** '''ставка на линию''' (''cntLineBet'') - изменяется при вызове add_bet, dec_bet и отображает текущую ставку.<br />
** '''итого''' (''cntTotalBet'') - отображает суммарную ставку (перемноженные значения из полей выше). Изменяется автоматически при вызове предыдущих состояний.<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==Состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=7569Slotmachine2016-01-12T15:06:06Z<p>Beletsky: </p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''''' ('''') - <br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа [[Ribbon]] для эффекта линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
==состояния==<br />
* '''Основные''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
** '''add_bet''' - увеличить ставку (значение ставки берется из соответствующего поля. Максимальное и минимальное значения зависят от уровня опыта игрока)<br />
** '''dec_bet''' - уменьшить ставку<br />
** '''start_free_spins''' - начать режим бесплатных спинов (если scatter_num > 0).<br />
** '''pause_free_spins''' - приостановить режим бесплатных спинов. Скопирует значение из scatter_num в опции по ключу slot%id%.saved_scatter. При этом scatter_num обнуляется.<br />
** '''resume_free_spins''' - продолжить бесплатные спины. Скопирует значение по ключу и вставит его в scatter_num.<br />
** '''autotest''' - для текущего lvlNum запустит автоматический спин с текущей ставкой и кол-вом линий N раз. N берется из param у объекта.<br />
** '''''' -<br />
** '''''' -<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7560Использование AppSalute Debugger при отладке2015-12-17T11:42:39Z<p>Beletsky: </p>
<hr />
<div><p><strong style="line-height: 1.6em;">Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></div><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p> [[Файл:Debug_button.png]]<br />
<br />
<p>После чего откроется окно.</p><br />
<br />
[[Файл:Debug_lock.png]]<br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
[[Файл:Context_menu.png]]<br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p><br />
<br />
<p>В окне отладки появится строка:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>connection successful!</code></div><br />
<br />
<p>А за ней периодически будут появляться строки вида:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>viewer pinged</code></div><br />
<br />
<p><strong>Что я могу делать с помощью отладчика?</strong></p><br />
<br />
<ul><br />
<li>Первое и самое полезное - установка <strong>breakpoint.</strong></li><br />
</ul><br />
<br />
<p style="margin-left: 80px;">Breakpoint - это остановка выполнения всей программы при определенных&nbsp;условиях. Пример: машина состояний перешла в другое&nbsp;состояние,&nbsp;<span style="line-height: 20.7999992370605px;">переменная поменяла своё значение и т.д.</span></p><br />
<br />
<p style="margin-left: 80px;"><span style="line-height: 20.7999992370605px;">Важно помнить, что у нас существует возможность устанавливать breapoint <span style="color:#FF0000;">только на машину состояний!</span></span></p><br />
<br />
<ul><br />
<li><span style="line-height: 20.7999992370605px;">Запросить данные из GData любого объекта из&nbsp;дерева&nbsp;проекта.</span></li><br />
<li><span style="line-height: 20.7999992370605px;">Подсветить выбранный объект во viewer.</span></li><br />
</ul><br />
<br />
<p><span style="line-height: 20.7999992370605px;"><strong>Как установить breakpoint?</strong></span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Для этого в контекстном меню для выбранного объекта следует выбрать пункт Toggle breakpoint on every state.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Что автоматически задает условием остановки переход этой машины состояний в любое состояние.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Чтобы указать конкретное состояние - нужно в поле state вместо звёздочки указать имя состояния.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Вот так это выглядит в окне &nbsp;отладчика.</span></p><br />
[[Файл:Debug_lock.png]]<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Enabled - быстрое включение/отключение breakpoint. <span style="color:#FF0000;">Важно:</span> отключается при каждом запуске viewer!</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Object ID - ID объекта.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">State - состояние, в которое должна попасть машина состояний, чтобы сработала остановка. По-умолчанию - *, что означает, что остановка будет произведена при переходе в любое состояние.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Parameter - параметр, при изменении которого будет произведена остановка.</div><br />
<br />
<p><strong>Что происходит во время остановки?</strong></p><br />
<br />
<p>Открывается окно, которое является точной копией окна настройки машины состояний, но недоступное для редактирование.</p><br />
<br />
<p>Дополнительно в первой колонке отображаются все параметры из GData машины.</p><br />
<br />
<p>Существуют два режима отображения в таком окне:</p><br />
<br />
<ol><br />
<li>При переходе в новое состояние столбец с одноименным состоянием не заменяется, а все новые добавляются справа от текущего.</li><br />
<li>Заменяются столбцы с одноименным состоянием, а все параметры, которые поменяли своё значение - подсвечиваются красным.</li><br />
</ol><br />
<br />
<p>Переключаться между режимами можно с помощью кнопки:</p><br />
[[Файл:Btn_no_rewrite.png]] [[Файл:Btn_rewrite.png]]<br />
<p><strong>Зачем нужна вторая вкладка Logging?</strong></p><br />
<br />
<p>В этой вкладке мы видим окно отображения лога, которое обновляется в режиме реального времени.</p><br />
[[Файл:Logging_dock.png]]<br />
<p>Каждый из столбцов обладает фильтром.</p><br />
<br />
<p>Чтобы добавить условие фильтрации нужно выделить стобец и в поле Filter вписать строку, при нахождении которой полная строка появится в окне.</p><br />
<br />
<p>Чтобы очистить лог нужно нажать на кнопку Clear Log</p> [[Файл:Clear_log_btn.png]]<br />
<br />
<p>Чтобы открыть файл с логами нужно нажать клавишу с тремя точками и выбрать указать путь к нужному файлу в стандартном окне проводника операционной системы.</p> [[Файл:Dots_btn.png]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7559Использование AppSalute Debugger при отладке2015-12-17T11:41:50Z<p>Beletsky: </p>
<hr />
<div><p><strong style="line-height: 1.6em;">Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></div><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p> [[Файл:Debug_button.png]]<br />
<br />
<p>После чего откроется окно.</p><br />
<br />
[[Файл:Debug_lock.png]]<br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
[[Файл:Context_menu.png]]<br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p><br />
<br />
<p>В окне отладки появится строка:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>connection successful!</code></div><br />
<br />
<p>А за ней периодически будут появляться строки вида:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>viewer pinged</code></div><br />
<br />
<p><strong>Что я могу делать с помощью отладчика?</strong></p><br />
<br />
<ul><br />
<li>Первое и самое полезное - установка <strong>breakpoint.</strong></li><br />
</ul><br />
<br />
<p style="margin-left: 80px;">Breakpoint - это остановка выполнения всей программы при определенных&nbsp;условиях. Пример: машина состояний перешла в другое&nbsp;состояние,&nbsp;<span style="line-height: 20.7999992370605px;">переменная поменяла своё значение и т.д.</span></p><br />
<br />
<p style="margin-left: 80px;"><span style="line-height: 20.7999992370605px;">Важно помнить, что у нас существует возможность устанавливать breapoint <span style="color:#FF0000;">только на машину состояний!</span></span></p><br />
<br />
<ul><br />
<li><span style="line-height: 20.7999992370605px;">Запросить данные из GData любого объекта из&nbsp;дерева&nbsp;проекта.</span></li><br />
<li><span style="line-height: 20.7999992370605px;">Подсветить выбранный объект во viewer.</span></li><br />
</ul><br />
<br />
<p><span style="line-height: 20.7999992370605px;"><strong>Как установить breakpoint?</strong></span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Для этого в контекстном меню для выбранного объекта следует выбрать пункт Toggle breakpoint on every state.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Что автоматически задает условием остановки переход этой машины состояний в любое состояние.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Чтобы указать конкретное состояние - нужно в поле state вместо звёздочки указать имя состояния.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Вот так это выглядит в окне &nbsp;отладчика.</span></p><br />
[[Файл:Debug_lock.png]]<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Enabled - быстрое включение/отключение breakpoint. <span style="color:#FF0000;">Важно:</span> отключается при каждом запуске viewer!</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Object ID - ID объекта.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">State - состояние, в которое должна попасть машина состояний, чтобы сработала остановка. По-умолчанию - *, что означает, что остановка будет произведена при переходе в любое состояние.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Parameter - параметр, при изменении которого будет произведена остановка.</div><br />
<br />
<p><strong>Что происходит во время остановки?</strong></p><br />
<br />
<p>Открывается окно, которое является точной копией окна настройки машины состояний, но недоступное для редактирование.</p><br />
<br />
<p>Дополнительно в первой колонке отображаются все параметры из GData машины.</p><br />
<br />
<p>Существуют два режима отображения в таком окне:</p><br />
<br />
<ol><br />
<li>При переходе в новое состояние столбец с одноименным состоянием не заменяется, а все новые добавляются справа от текущего.</li><br />
<li>Заменяются столбцы с одноименным состоянием, а все параметры, которые поменяли своё значение - подсвечиваются красным.</li><br />
</ol><br />
<br />
<p>Переключаться между режимами можно с помощью кнопки:</p><br />
<br />
<p><strong>Зачем нужна вторая вкладка Logging?</strong></p><br />
<br />
<p>В этой вкладке мы видим окно отображения лога, которое обновляется в режиме реального времени.</p><br />
[[Файл:Logging_dock.png]]<br />
<p>Каждый из столбцов обладает фильтром.</p><br />
<br />
<p>Чтобы добавить условие фильтрации нужно выделить стобец и в поле Filter вписать строку, при нахождении которой полная строка появится в окне.</p><br />
<br />
<p>Чтобы очистить лог нужно нажать на кнопку Clear Log</p> [[Файл:Clear_log_btn.png]]<br />
<br />
<p>Чтобы открыть файл с логами нужно нажать клавишу с тремя точками и выбрать указать путь к нужному файлу в стандартном окне проводника операционной системы.</p> [[Файл:Btn_no_rewrite.png]] [[Файл:Btn_rewrite.png]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dots_btn.png&diff=7558Файл:Dots btn.png2015-12-17T11:33:31Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Clear_log_btn.png&diff=7557Файл:Clear log btn.png2015-12-17T11:33:22Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Btn_rewrite.png&diff=7556Файл:Btn rewrite.png2015-12-17T11:33:12Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Btn_no_rewrite.png&diff=7555Файл:Btn no rewrite.png2015-12-17T11:33:03Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Debug_button.png&diff=7554Файл:Debug button.png2015-12-17T11:32:50Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Context_menu.png&diff=7553Файл:Context menu.png2015-12-17T11:32:16Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Logging_dock.png&diff=7552Файл:Logging dock.png2015-12-17T11:31:59Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Debug_lock.png&diff=7551Файл:Debug lock.png2015-12-17T11:31:42Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7550Использование AppSalute Debugger при отладке2015-12-17T10:32:30Z<p>Beletsky: </p>
<hr />
<div><p><strong style="line-height: 1.6em;">Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></div><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p><br />
<br />
<p>После чего откроется окно.</p><br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p><br />
<br />
<p>В окне отладки появится строка:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>connection successful!</code></div><br />
<br />
<p>А за ней периодически будут появляться строки вида:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>viewer pinged</code></div><br />
<br />
<p><strong>Что я могу делать с помощью отладчика?</strong></p><br />
<br />
<ul><br />
<li>Первое и самое полезное - установка <strong>breakpoint.</strong></li><br />
</ul><br />
<br />
<p style="margin-left: 80px;">Breakpoint - это остановка выполнения всей программы при определенных&nbsp;условиях. Пример: машина состояний перешла в другое&nbsp;состояние,&nbsp;<span style="line-height: 20.7999992370605px;">переменная поменяла своё значение и т.д.</span></p><br />
<br />
<p style="margin-left: 80px;"><span style="line-height: 20.7999992370605px;">Важно помнить, что у нас существует возможность устанавливать breapoint <span style="color:#FF0000;">только на машину состояний!</span></span></p><br />
<br />
<ul><br />
<li><span style="line-height: 20.7999992370605px;">Запросить данные из GData любого объекта из&nbsp;дерева&nbsp;проекта.</span></li><br />
<li><span style="line-height: 20.7999992370605px;">Подсветить выбранный объект во viewer.</span></li><br />
</ul><br />
<br />
<p><span style="line-height: 20.7999992370605px;"><strong>Как установить breakpoint?</strong></span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Для этого в контекстном меню для выбранного объекта следует выбрать пункт Toggle breakpoint on every state.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Что автоматически задает условием остановки переход этой машины состояний в любое состояние.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Чтобы указать конкретное состояние - нужно в поле state вместо звёздочки указать имя состояния.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Вот так это выглядит в окне &nbsp;отладчика.</span></p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Enabled - быстрое включение/отключение breakpoint. <span style="color:#FF0000;">Важно:</span> отключается при каждом запуске viewer!</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Object ID - ID объекта.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">State - состояние, в которое должна попасть машина состояний, чтобы сработала остановка. По-умолчанию - *, что означает, что остановка будет произведена при переходе в любое состояние.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Parameter - параметр, при изменении которого будет произведена остановка.</div><br />
<br />
<p><strong>Что происходит во время остановки?</strong></p><br />
<br />
<p>Открывается окно, которое является точной копией окна настройки машины состояний, но недоступное для редактирование.</p><br />
<br />
<p>Дополнительно в первой колонке отображаются все параметры из GData машины.</p><br />
<br />
<p>Существуют два режима отображения в таком окне:</p><br />
<br />
<ol><br />
<li>При переходе в новое состояние столбец с одноименным состоянием не заменяется, а все новые добавляются справа от текущего.</li><br />
<li>Заменяются столбцы с одноименным состоянием, а все параметры, которые поменяли своё значение - подсвечиваются красным.</li><br />
</ol><br />
<br />
<p>Переключаться между режимами можно с помощью кнопки:</p><br />
<br />
<p><strong>Зачем нужна вторая вкладка Logging?</strong></p><br />
<br />
<p>В этой вкладке мы видим окно отображения лога, которое обновляется в режиме реального времени.</p><br />
<br />
<p>Каждый из столбцов обладает фильтром.</p><br />
<br />
<p>Чтобы добавить условие фильтрации нужно выделить стобец и в поле Filter вписать строку, при нахождении которой полная строка появится в окне.</p><br />
<br />
<p>Чтобы очистить лог нужно нажать на кнопку Clear Log</p><br />
<br />
<p>Чтобы открыть файл с логами нужно нажать клавишу с тремя точками и выбрать указать путь к нужному файлу в стандартном окне проводника операционной системы.</p></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7549Использование AppSalute Debugger при отладке2015-12-17T10:20:07Z<p>Beletsky: </p>
<hr />
<div><p><strong style="line-height: 1.6em;">Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></div><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p><br />
<br />
<p>После чего откроется окно.</p><br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p><br />
<br />
<p>В окне отладки появится строка:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>connection successful!</code></div><br />
<br />
<p>А за ней периодически будут появляться строки вида:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>viewer pinged</code></div><br />
<br />
<p><strong>Что я могу делать с помощью отладчика?</strong></p><br />
<br />
<ul><br />
<li>Первое и самое полезное - установка <strong>breakpoint.</strong></li><br />
</ul><br />
<br />
<p style="margin-left: 80px;">Breakpoint - это остановка выполнения всей программы при определенных&nbsp;условиях. Пример: машина состояний перешла в другое&nbsp;состояние,&nbsp;<span style="line-height: 20.7999992370605px;">переменная поменяла своё значение и т.д.</span></p><br />
<br />
<p style="margin-left: 80px;"><span style="line-height: 20.7999992370605px;">Важно помнить, что у нас существует возможность устанавливать breapoint <span style="color:#FF0000;">только на машину состояний!</span></span></p><br />
<br />
<ul><br />
<li><span style="line-height: 20.7999992370605px;">Запросить данные из GData любого объекта из&nbsp;дерева&nbsp;проекта.</span></li><br />
<li><span style="line-height: 20.7999992370605px;">Подсветить выбранный объект во viewer.</span></li><br />
</ul><br />
<br />
<p><span style="line-height: 20.7999992370605px;"><strong>Как установить breakpoint?</strong></span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Для этого в контекстном меню для выбранного объекта следует выбрать пункт Toggle breakpoint on every state.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Что автоматически задает условием остановки переход этой машины состояний в любое состояние.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Чтобы указать конкретное состояние - нужно в поле state вместо звёздочки указать имя состояния.</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px;">Вот так это выглядит в окне &nbsp;отладчика.</span></p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Enabled - быстрое включение/отключение breakpoint. <span style="color:#FF0000;">Важно:</span> отключается при каждом запуске viewer!</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Object ID - ID объекта.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">State - состояние, в которое должна попасть машина состояний, чтобы сработала остановка. По-умолчанию - *, что означает, что остановка будет произведена при переходе в любое состояние.</div><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">Parameter - параметр, при изменении которого будет произведена остановка.</div><br />
<br />
<p><strong>Что происходит во время остановки?</strong></p><br />
<br />
<p>Открывается окно, которое является точной копией окна настройки машины состояний, но недоступное для редактирование.</p><br />
<br />
<p>Дополнительно в первой колонке отображаются все параметры из GData машины.</p><br />
<br />
<p>Существуют два режима отображения в таком окне:</p><br />
<br />
<ol><br />
<li>При переходе в новое состояние столбец с одноименным состоянием не заменяется, а все новые добавляются справа от текущего.</li><br />
<li>Заменяются столбцы с одноименным состоянием, а все параметры, которые поменяли своё значение - подсвечиваются красным.</li><br />
</ol><br />
<br />
<p>Переключаться между режимами можно с помощью кнопки:</p><br />
<br />
<p><strong>Зачем нужна вторая вкладка Logging?</strong></p><br />
<br />
<p>В этой вкладке мы видим окно отображения лога, которое обновляется в режиме реального времени.</p><br />
<br />
<p>Каждый из столбцов обладает фильтром.</p><br />
<br />
<p>Чтобы добавить условие фильтрации нужно выделить стобец и в поле Filter вписать строку, при нахождении которой полная строка появится в окне.</p><br />
<br />
<p>&nbsp;</p></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7548Использование AppSalute Debugger при отладке2015-12-17T09:45:01Z<p>Beletsky: </p>
<hr />
<div><p></p><br />
<br />
<p></p><br />
<br />
<p><strong>Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></div><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p><br />
<br />
<p>После чего откроется окно.</p><br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p><br />
<br />
<p>В окне отладки появится строка:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>connection successful!</code></div><br />
<br />
<p>А за ней периодически будут появляться строки вида:</p><br />
<br />
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;"><code>viewer pinged</code></div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_AppSalute_Debugger_%D0%BF%D1%80%D0%B8_%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5&diff=7547Использование AppSalute Debugger при отладке2015-12-17T09:41:43Z<p>Beletsky: Новая страница: «<p><strong>Что такое debugger?</strong></p> <p>Debugger (он же отладчик) - это отдельное приложение, которое п…»</p>
<hr />
<div><p><strong>Что такое debugger?</strong></p><br />
<br />
<p>Debugger (он же отладчик) - это отдельное приложение, которое предназначено для поиска и локализации ошибок в работе приложения.</p><br />
<br />
<p><strong>Зачем он нужен?</strong></p><br />
<br />
<p>Это незаменимый инструмент в процессе отладки, ведь чаще всего нужно:</p><br />
<br />
<p>- Узнать текущее значение той или иной переменной.</p><br />
<br />
<p>- Выяснить по какому пути выполнялся код.</p><br />
<br />
<p><strong>Что нужно сделать, чтобы начать пользоваться отладчиком?</strong></p><br />
<br />
<p>Первоначально следует проверить настройки подключения к viewer, которые хранятся в теге [Game] в app.icf. Этот файл должен находится в корне директории с редактором.</p><br />
<br />
<p><strong>Что я должен увидеть в этом файле?</strong></p><br />
<br />
<p>Обязательным для работы является наличие двух строк в<span style="line-height: 20.7999992370605px;">&nbsp;теге [Game]</span>:</p><br />
<br />
<p><tt>DebuggerIP=&quot;xxx.xxx.xxx.xxx&quot;<br /><br />
DebuggerPort=5322</tt></p><br />
<br />
<p>Где&nbsp;<var><span style="font-family: monospace; line-height: 20.7999992370605px;">DebuggerIP</span></var> - это IP адресс машины, на которой запущен отладчик. А&nbsp;<var>DebuggerPort</var> - порт подключения, который остаётся <span style="color:#FF0000;">неизменным!</span></p><br />
<br />
<p><span style="line-height: 20.7999992370605px; font-family: monospace;">DebuggerIP</span><span style="line-height: 20.7999992370605px;">&nbsp;</span>- может принимать несколько значений:</p><br />
<br />
<ol><br />
<li>127.0.0.1 - т.е localhost, что не позволит использовать отладчик на удалённом устройстве, но прекрасно подойдет, если Вы не знаете IP машины, за которой работаете.</li><br />
<li>IP в локальной сети, который можно узнать у системного администратора. Этот является предпочтительным.</li><br />
</ol><br />
<br />
<p><strong>Что нужно сделать в SceneEditor, чтобы запустить отладчик?</strong></p><br />
<br />
<p>Чтобы запустить режим отладки нужно нажать на кнопку в верхней панели.</p><br />
<br />
<p>После чего откроется окно.</p><br />
<br />
<p>А в конткестном меню (вызывается нажатием ПКМ)&nbsp;появятся новые строки.</p><br />
<br />
<p><strong>Я запустил viewer, что делать дальше?</strong></p><br />
<br />
<p>Нужно подключиться к &quot;серверу&quot;, которым является Ваша рабочая машина с запущенным SceneEditor.exe.</p><br />
<br />
<p>Для этого нужно во viewer нажать F6.</p><br />
<br />
<p><strong>Как узнать, что подключение успешно?</strong></p></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Absolutist_Framework&diff=7546Absolutist Framework2015-12-17T09:15:00Z<p>Beletsky: /* Обучение */</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 />
* [[Learning|Уроки по освоению фреймворка]]<br />
* [[Примеры реализации в играх]]<br />
* [[Основные понятия объектов физического мира]]<br />
* [[Использование AppSalute Debugger при отладке]]<br />
* [[FAQ]]<br />
<br />
== Подготовка проекта ==<br />
* [[Проектирование экранов игры]]<br />
* [[Подготовка и форматы графики]]<br />
* [[Подготовка и форматы шрифтов]]<br />
* [[Подготовка и форматы звуков]]<br />
* [[Подготовка и форматы видео]]<br />
* [[Создание проекта]]<br />
* [[Загрузка проекта по частям]]<br />
* [[Конфигурация проекта для сборки]]<br />
* [[Подготовка для загрузки на маркеты]]<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 />
* [[Файл:Button.png]] - [[Button]] - кнопка<br />
* [[Файл:Text.png]] - [[Text]] - текст<br />
* [[Файл:Machine.png]] - [[Machine]] - машина состояний<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 />
* [[Файл:Kub.png]] - [[Statesmanager]] - очередь работы с объектами<br />
* [[Файл:Slider icons.png]] - [[Slider]] - объект реализующий листание списка.<br />
* [[Файл:Ribbon.png]] - [[Ribbon]] - объект отображения графики по сплайну<br />
* [[Файл:Kub.png]] - [[Animation]] - объект различных анимаций<br />
* [[Файл:Kub.png]] - [[Magicparticles]] - объект файлов Magic Particles<br />
<br />
=== Game mechanic ===<br />
<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 />
* [[Файл:BubbleShooter.png]] - [[Bubble Shooter]] - класс 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 />
* [[Файл:Matchbattle.png]] - [[Match Battle]] - настройка глобальных параметров для мини-игр<br />
* [[Файл:Move box.png]] - [[DragBox]] - класс игр с dragbox-механикой<br />
* [[Файл:Labyrinth.png]] - [[Labyrinth]] - класс игр лабиринт<br />
* [[Файл:Pipes.png]] - [[Pipes]] - класс игр трубы<br />
* [[Файл:Search object.png]] - [[HiddenObject]] - поисковый объект в хидден играх<br />
* [[Файл:Object list.png]] - [[HiddenList]] - список поисковых объектов в хидден играх<br />
* [[Файл:Hint.png]] - [[HiddenHint]] - подсказка (указатель на спрятанный объект)<br />
* [[Файл:Kub.png]] - [[HiddenHighLighter]] - позволяет показать не найденные объекты в хиддене.<br />
* [[Файл:Collection.png]] - [[Collection]] - "коллекция" поисковых объектов для хидден игр<br />
* [[Файл:Inventory.png]] - [[Inventory]] - "инвентарь" список применяемых объектов для игр<br />
* [[Файл:Tool.png]] - [[Tool]] - "применение" - объект, который можно применить для игр<br />
* [[Файл:Kub.png]] - [[Isomap]] - изометрическая карта<br />
* [[Файл:Slotmachine.png]] - [[Slotmachine]] - объект типа "slot"<br />
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер<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 />
* [[Файл:Paint.png]] - [[Paint]] - объект для рисования <br />
* [[Файл:Physicsworld.png]] - [[Physicsworld]] - физический мир Box2D<br />
** [[Файл:Physicsobject.png]] - [[Physicsobject]] - физические объекты<br />
** [[Файл:Physics links.png]] - [[Physicsjoint]] - физические соединения<br />
* [[Файл:Eraser.png]] - [[Eraser]] - стирачка<br />
* [[Файл:Kub.png]] - [[trivia]] - игровая механика - миллионер (trivia)<br />
* [[Файл:Kub.png]] - [[Dailybonus]] - объект для управления механизмом ежедневного бонуса за вход в игру.<br />
* [[Файл:Kub.png]] - [[Pet]] - объект питомца.<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 />
<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]] - [[System]] - объект для доступа к системным настройкам<br />
* [[Файл:Kub.png]] - [[Salesmanager]] - менеджер акций<br />
* [[Файл:Kub.png]] - [[Cloud]] - объект для синхронизации в облаке<br />
* [[Файл:Kub.png]] - [[Game]] - объект для отправки событий<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 />
<br />
=== Functions ===<br />
* [[Файл:Forward.png]] - [[SendMail]] - отправка письма через почтовый клиент<br />
* [[Файл:footer-icon-rate.png]] - [[Rate]] - вызов окна оценки приложения<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>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7228Wallet2015-11-06T08:59:56Z<p>Beletsky: </p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' - Внутренний id покупки<br />
**'''Монеты''' - количество монет<br />
**'''кристаллы''' - количество кристаллов<br />
**'''поле в опциях для множителя''' - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' - прибавка к статусным очкам ([http://wiki.appsalutecreator.com/index.php/Economics#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81 | Что такое статус и с чем его едят]). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7227Wallet2015-11-06T08:54:01Z<p>Beletsky: /* Параметры объекта Wallet */</p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' - Внутренний id покупки<br />
**'''Монеты''' - количество монет<br />
**'''кристаллы''' - количество кристаллов<br />
**'''поле в опциях для множителя''' - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' - прибавка к статусным очкам ([http://wiki.appsalutecreator.com/index.php/Economics#.D0.A1.D1.82.D0.B0.D1.82.D1.83.D1.81| Что такое статус и с чем его едят]). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Economics&diff=7226Economics2015-11-06T08:52:16Z<p>Beletsky: </p>
<hr />
<div>[[Object|Объект]] '''Economics''' служит для реализации сложной игровой механики типа "ферма". Он осуществляет связь между игровыми локациями, накопленным опытом, текущим количеством энергии, денег и кристаллов (можно использовать и другие названия ресурсов), а также управляет объектами коллекций, магазина, инвентаря и игровых заданий.<br />
<br />
= Свойства =<br />
<br />
*'''предметы''' - Объект типа [[eitems]].<br />
*'''задачи''' - Объект типа [[taskorganizer]].<br />
<br />
==Параметры==<br />
===Основные параметры===<br />
<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 />
===Основные счетчики===<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 />
==Поле 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 />
<br />
В третей колонке записываются уровни мастерства. Их можно переименовать. Добавляются кнопкой ''Добавить уровень мастерства''. Удаляются кнопкой ''Удалить уровень мастерства''. В четвертой колонке настраивается выделенный уровень мастерства.<br />
<br />
[[Файл:Economics 3.jpg|right]]<br />
*'''энергия''' - энергия требуемая для того, чтобы играть в локацию.<br />
*'''ресурс 1''' - деньги даваемые за прохождение локации.<br />
*'''ресурс 2''' - кристаллы даваемые за прохождение локации.<br />
*'''опыт''' - опыт даваемый за прохождение локации.<br />
*'''кол-во объектов''' - максимальное количество доступных для поиска объектов в одной игровой сессии.<br />
*'''время игры''' - общее время игры (если -1, то игнорируется).<br />
*'''время игры (блиц)''' - время игры с аномалией "блиц".<br />
*'''время игры (аном)''' - время игры с остальными аномалиями.<br />
*'''режим игры''' - режим игры: 0 - случайный, 1- слова, 2 - силуэты, 3 - поиск отличий;<br />
*'''использовать различия''' - да - будут генирироватся режим поиска отличий, нет - не будут; Для корректной работы, следующей за сценой с хидн предметами, должна находиться пустая сцена с такими же параметрами как и у сцены с хидн предметами. Также между двумя сценами ( хидн и fake-сценой) должна быть связь по тасканию;<br />
*'''аномалия''' - вероятность возникновения аномалии в локациях.<br />
*'''доступные аномалии''' - перечень доступных на данном уровне мастерства аномалий. Записываются в виде чисел через запятую. Доступные значения 0, 1, 2, 3.<br />
*'''множитель''' - коэффициент, на который умножаются набранные очки. при расчете перехода на следующий уровень. Может быть меньше 1.<br />
*'''постоянный прирост''' - постоянный прирост, если он больше 0, то будет использоваться ВМЕСТО реально набранных в хиддене очков и множителя.<br />
*'''очки''' - очки, которые нужно набрать для перехода на следующий уровень мастерства. Набранные в локции очки умножаются на множитель и суммируются. Когда превысят это значение - произойдет переход.<br />
*'''Предметы''' - id коллекционных предметов, которые можно найти на локации. Не обязаны принадлежать к одной коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''Вероятность''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 2''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Вероятность 3''' - вероятность найти один из коллекционных предметов из предыдущего поля.<br />
*'''Инвентарь''' - id инвентарных предметов, которые можно найти на локации. Перетаскиваются из текстового редактора.<br />
*'''Вероятность инв.''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 2''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Вероятность инв. 3''' - вероятность найти один из инвентарных предметов из предыдущего поля.<br />
*'''Коллекционный предмет''' - предмет из коллекций, который будет дан игроку по достижению этого уровня мастерства.<br />
<br />
===Коллекция===<br />
<br />
Во вкладке ''Коллекция'' используются только первые две колонки. В первой колонке отображаются добавленные коллекции. Добавляются кнопкой ''Добавить локацию''. Удаляются кнопкой ''Удалить локацию''. Коллекции можно переименовывать. Второй столбик содержит id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка. Ресурс 1 и ресурс 2 - ресурсы, которые даются за сдачу коллекции. Опыт - опыт, который дается за сдачу коллекции.<br />
<br />
*'''имя''' - Имя (а также - описание, если нужно) конкретно коллекции.<br />
*'''предметы''' - id предметов входящих в коллекции. Перетаскиваются из текстового редактора. Будет использоваться их иконка.<br />
*'''ресурс 1''' - деньги даваемые за сдачу коллекции.<br />
*'''ресурс 2''' - кристаллы даваемые за сдачу коллекции.<br />
*'''опыт''' - опыт даваемый за сдачу коллекции.<br />
*'''награда''' - предмет даваемый за сдачу коллекции. Перетаскивается из текстовой базы.<br />
*'''заряжатели''' - Предметы инвентаря, необходимые для сдачи коллекции. ВНИМАНИЕ: будут использоваться не более первых 4х элементов списка.<br />
*'''достижение''' - достижение, которое будет открываться по мере сдачи этой коллекции.<br />
*'''процент''' - проценты достижения из предыдущего поля.<br />
*'''уровень для подарка''' - уровень, начиная с которого предметы этой коллекции можно дарить<br />
<br />
===Предметы===<br />
<br />
Раздел "Предметы" позволяет добавлять список инвентарных предметов, которые могут использоваться в процессе игры, предоставлять различные бонусы. В первой колонке список предметов. Добавляется кнопкой "Добавить локацию", удаляется кнопкой "Удалить локацию". Предметы могут быть переименованы. Во второй колонке записаны свойства каждого предмета.<br />
<br />
[[Файл:Economics 4.jpg|350px|right]]<br />
<br />
*'''nm''' - имя предмета<br />
<br />
*'''section''' - категория предмета.<br />
<br />
*'''use''' - если 1, то предмет может использоваться (кнопка Use видимая).<br />
<br />
*'''nm''' - имя предмета (txtID).<br />
<br />
*'''опции''' - если это поле задано, то в него будет записываться актуальное количество объектов.<br />
<br />
*'''начальное количество''' - начальное количество предметов данного типа в инвентаре.<br />
<br />
*'''можно продать''' - возможность продавать предмет: 1 - можно продать, 0 - нельзя продать.<br />
<br />
*'''уникальный''' - если 1 - то предмет уникальный пропадает после покупки, если 0 - предмет после покупки не пропадает.<br />
<br />
*'''res1''' - цена предмета в ресурсе 1.<br />
<br />
*'''res2''' - цена предмета в ресурсе 2.<br />
<br />
*'''sres1''' - продажа - цена предмета в ресурсе 1.<br />
<br />
*'''sres2''' - продаже - цена предмета в ресурсе 2.<br />
<br />
*'''en''' - восстанавливает энергии единовременно.<br />
<br />
*'''tm''' - длительность действия в секундах.<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 />
====Создание предметов (крафт)====<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''' - заставляет экономикс заполнить таблицу коллекций. Лучше вызывать сразу перед открытием окна коллекций или во время его открытия.<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 />
*'''failed''' - текущая локация провалена (не дается опыта и прочих наград за прохождение локации). Требует параметра локации.<br />
*'''item_effect''' - показать окошко предмета от таймэффекта. В param - номер эффекта.<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 />
<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].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 />
<br />
Каждая экономика пишет в пользователя следующие параметры:<br />
*'''public.EconomicsRes1''' - текущее количество ресурса_1;<br />
*'''public.EconomicsRes2''' - текущее количество ресурса_2;<br />
*'''public.EconomicsLevel''' - текущий уровень игрока;<br />
*'''public.EconomicsEnergy''' - текущий уровень энергии;<br />
*'''public.EconomicsTotalScore''' - количество заработанного опыта за все время игры;<br />
*'''public.EconomicsCollectionsUniq''' - количество сданных коллекций ( значение повышается каждый раз при сдаче коллекции), пишется Экономикой только если поле - '''fbopt''' не пустое;<br />
<br />
[[Category:Game mechanic]]<br />
[[Category:Economics|*]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7223Wallet2015-11-06T08:34:36Z<p>Beletsky: </p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' - Внутренний id покупки<br />
**'''Монеты''' - количество монет<br />
**'''кристаллы''' - количество кристаллов<br />
**'''поле в опциях для множителя''' - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' - прибавка к статусным очкам (тут будет ссылка на статус). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
== Состояния ==<br />
<br />
* ''recalc'' - перезаписать значения монет и статусных очков, учитывая множители.<br />
<br />
Ключ в опциях:<br />
<br />
* ''wallet%d.i%s.res1'' - ключ к значению монет, учитывая множитель.<br />
* ''wallet%d.i%s.status'' - ключ к значению статусных очков, учитывая множитель.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Wallet&diff=7222Wallet2015-11-06T08:04:25Z<p>Beletsky: /* Параметры объекта Wallet */</p>
<hr />
<div>[[Object|Объект]] '''Wallet''' необходим для начисления игровой валюты при InApp покупке через объект [[Economics]]<br />
<br />
== Параметры объекта Wallet ==<br />
<br />
*'''economics''' - ссылка на объект economics<br />
*'''InApp - покупка'''<br />
**'''Внутренний id покупки''' - Внутренний id покупки<br />
**'''Монеты''' - количество монет<br />
**'''кристаллы''' - количество кристаллов<br />
**'''поле в опциях для множителя''' - ключ в опциях для множителя монет. ВАЖНО: указывать без идентификатора пользователя. Пример: ecomics65.stmult - без p0!<br />
**'''базовая прибавка к статусу''' - прибавка к статусным очкам (тут будет ссылка на статус). Базовая - потому что будет множиться на коэф., который зависит от текущего статуса. Коэф. указывается в экономики в соответствующем разделе.<br />
<br />
== Принцип работы ==<br />
<br />
На успех покупки объект Wallet проверяет внутренний id и если находит совпадение в добавляемых свойствах, то начисляет указанное там количество монет и кристаллов.<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=7203Slotmachine2015-09-21T07:42:56Z<p>Beletsky: /* Общие параметры */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''сдвиг по y''' (''y_shift'') - Смещение иконок по y.<br />
* '''множитель скорости''' (''speedm'') - Множитель скорости для изменения направления вращения барабана.<br />
* '''''' ('''') - <br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа ribbon для эффекта линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''интрига''':<br />
** '''множитель интриги''' (''speedi'') - Множитель скорости для режима интриги.<br />
** '''ячеек для интриги''' (''numi'') - Сколько иконок одного типа должны выпасть (учитывая условия активации бонуса), чтобы запустился режим интриги.<br />
** '''эффект интриги''' (''intrigue_obj'') - Машина, обеспечивающая анимацию при режиме интриги. Будет склонирована в центр рельсы, должна иметь состояние beg. Объект будет скопирован для каждой рельсы, где будет запущен режим. Прячется или при вызове состояния '''hide_animation''' или в начале спина.<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
* '''состояния''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''stop_all''' - останавливает барабаны и пересчитывает награду (выпавшие линии), предназначено для остановки барабана по рычагу/кнопке .<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры. Если вам нужно открывать что-то поверх активного слота ( во время показа анимации), вам нужно эти окна положить в отдельную сцену поверх сцены со слотом, т.к. анимация копируется в сцену со слот машиной.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Roadmap&diff=7088Roadmap2015-06-24T06:33:37Z<p>Beletsky: </p>
<hr />
<div>'''Что нового в версии 3.60 beta:'''<br />
<br />
*Поддержка многопоточности в Android и iOS.<br />
*Обновление ключевых SDK (Facebook SDK 3.2.0 iOS/Android, MAT SDK 3.4.1 iOS/3.3.3 Android, Amazon Advertisment SDK 6.0.2 iOS/5.1.0 Android, Google Play Services 6587000, Flurry SDK 5.4.46, ChartBoost 5.1.3 iOS/Android и другие).<br />
*Поддержка актуальной на данный момент версии Marmalade 7.5.1 и ниже.<br />
*Новые утилиты для SceneEditor (редактирование viewer.xml, подсветка синтаксиса viewer.log, редактор app.icf и т.д)<br />
*Новые игровые объекты (2048, Majong, Memory, Gemslider, Slotmachine, Words, Collaps, Match10, Dragbox, Pipes, TapTheBubble)<br />
*Обновлены объекты работы с сервисами статистики и рекламы (AdMob, MobileAppTracking, Amazon Advertisement, ChartBoost, Flurry, Playhaven, Tapjoy).<br />
*Импорт и отрисовка примитивных 3D моделей.<br />
*Поддержка свободного видеокодека Theora (возможность воспроизведения видео формата OGV с каналом прозрачности).<br />
*Поддержка динамической загрузки текстур, а так же формата BPG для многих платформ.<br />
*Новый функционал экспорта проекта (менеджер паков, менеджер предзарузки графики, возможность использования 4k текстур).<br />
<br />
<br />
'''Новая версия 3.0 Бета выход - '''<br />
*Исправлено сохранение и загрузка проекта в редакторе сцен. <br />
*Переход с Iw2D на IwGX. Доступ к созданию эффектов с использованием шейдеров.<br />
*Добавлен игровой объект с готовыми наборами эффектов (туман, инверсия RGB, вода, блюр) <br />
*Добавлена функция задания и движения по сплайну<br />
*Добавлена функция ручного распределения (исключения) графических ресурсов по текстурами. Задание максимального размера текстуры. Оптимизирован алгоритм запаковки графики в текстуры. <br />
*Упаковка текстур в PVR формат для iOS устройств. Уменьшение занимаемого размера графических файлов на диске в 3 раза, в видео памяти устройства в 8 раз. Уменьшение скрости загрузки в память устройства.<br />
*Исправлена функция распределение текстур по пакетам для поэтапной подгрузки контента в приложение <br />
*Добавлены новые игровые объекты<br />
*Добавлена функция тайлинга графики для интерфейсных элементов.<br />
*Добавлена система показа рекламы Amazone Ads<br />
*Добавлены системы привлечения трафика Playhaven, Tapjoy, Facebook, ChartBoost. <br />
*Добавлена система трекинга трафика Mobileapptracking<br />
*Flurry Ads + SDK update поддержка iOS 7.0<br />
*Добавлена поддержка многоячзычности в редакторе сцен<br />
*Оптимизировано распределение памяти на устройстве, добавлен вывод отладочной информации. <br />
*Уменьшено время загрузки на мобильных устройствах<br />
<br />
[[Category:Main]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Controls&diff=7076Controls2015-06-03T08:20:45Z<p>Beletsky: /* Примечание */</p>
<hr />
<div>'''Controls''' - [[Object|объект]], используемый для выполнения каких либо действий по нажатию на клавиши клавиатуры или на девайсе.<br />
{{TOC right}}<br />
== Добавляемые параметры ==<br />
[[Файл:Controls1.png|right]]<br />
Открывается при нажатии правой кнопки мыши в поле параметров обьекта.<br />
<br />
[[Файл:+.png]] '''Реакция на нажатие кнопки''' - При нажатии на кнопку перевести обьект в новое состояние.<br />
*'''кнопка''' - Константа кнопки. (Таблица приведена ниже)<br />
*'''объект''' - При клике на кнопку перевести объект в состояние из следующего поля.<br />
*'''состояние''' - Новое состояние для объекта из предыдущего поля.<br />
<br />
[[Файл:+.png]] '''Реакция на отпускание кнопки''' - При отпускании кнопки перевести обьект в новое состояние.<br />
*'''кнопка''' - Константа кнопки. (Таблица приведена ниже)<br />
*'''объект''' - При клике на кнопку перевести объект в состояние из следующего поля.<br />
*'''состояние''' - Новое состояние для объекта из предыдущего поля.<br />
<br />
== Таблица констант клавиш ==<br />
<br />
{| border="1"<br />
|s3eKeyFirst = 0 || Invalid Key<br />
|- <br />
|s3eKeyEsc = 1 || Esc (cancel)<br />
|- <br />
|s3eKeyTab = 2, || Tab.<br />
|- <br />
|s3eKeyBackspace = 3, || Backspace.<br />
|- <br />
|s3eKeyEnter = 4, || Enter.<br />
|- <br />
|s3eKeyLeftShift = 5, || Left shift key.<br />
|- <br />
|s3eKeyLeftControl = 6, || Left control key.<br />
|- <br />
|s3eKeyReserved = 7, || Reserved, do not use.<br />
|- <br />
|s3eKeySpace = 8, || Key Space.<br />
|- <br />
|s3eKeyLeft = 9, || Key Left.<br />
|- <br />
|s3eKeyUp = 10, || Key Up.<br />
|- <br />
|s3eKeyRight = 11, || Key Right.<br />
|- <br />
|s3eKeyDown = 12, || Key Down.<br />
|- <br />
|s3eKey0 = 13, || Key 0 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey1 = 14, || Key 1 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey2 = 15, || Key 2 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey3 = 16, || Key 3 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey4 = 17, || Key 4 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey5 = 18, || Key 5 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey6 = 19, || Key 6 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey7 = 20, || Key 7 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey8 = 21, || Key 8 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKey9 = 22, || Key 9 on device numberpad and on main keyboard.<br />
|- <br />
|s3eKeyA = 23, || Key A.<br />
|- <br />
|s3eKeyB = 24, || Key B.<br />
|- <br />
|s3eKeyC = 25, || Key C.<br />
|- <br />
|s3eKeyD = 26, || Key D.<br />
|- <br />
|s3eKeyE = 27, || Key E.<br />
|- <br />
|s3eKeyF = 28, || Key F.<br />
|- <br />
|s3eKeyG = 29, || Key G.<br />
|- <br />
|s3eKeyH = 30, || Key H.<br />
|- <br />
|s3eKeyI = 31, || Key I.<br />
|- <br />
|s3eKeyJ = 32, || Key J.<br />
|- <br />
|s3eKeyK = 33, || Key K.<br />
|- <br />
|s3eKeyL = 34, || Key L.<br />
|- <br />
|s3eKeyM = 35, || Key M.<br />
|- <br />
|s3eKeyN = 36, || Key N.<br />
|- <br />
|s3eKeyO = 37, || Key O.<br />
|- <br />
|s3eKeyP = 38, || Key P.<br />
|- <br />
|s3eKeyQ = 39, || Key Q.<br />
|- <br />
|s3eKeyR = 40, || Key R.<br />
|- <br />
|s3eKeyS = 41, || Key S.<br />
|- <br />
|s3eKeyT = 42, || Key T.<br />
|- <br />
|s3eKeyU = 43, || Key U.<br />
|- <br />
|s3eKeyV = 44, || Key V.<br />
|- <br />
|s3eKeyW = 45, || Key W.<br />
|- <br />
|s3eKeyX = 46, || Key X.<br />
|- <br />
|s3eKeyY = 47, || Key Y.<br />
|- <br />
|s3eKeyZ = 48, || Key Z.<br />
|- <br />
|s3eKeyF1 = 49, || Key F1.<br />
|- <br />
|s3eKeyF2 = 50, || Key F2.<br />
|- <br />
|s3eKeyF3 = 51, || Key F3.<br />
|- <br />
|s3eKeyF4 = 52, || Key F4.<br />
|- <br />
|s3eKeyF5 = 53, || Key F5.<br />
|- <br />
|s3eKeyF6 = 54, || Key F6.<br />
|- <br />
|s3eKeyF7 = 55, || Key F7.<br />
|- <br />
|s3eKeyF8 = 56, || Key F8.<br />
|- <br />
|s3eKeyF9 = 57, || Key F9.<br />
|- <br />
|s3eKeyF10 = 58, || Key F10.<br />
|- <br />
|s3eKeyNumPad0 = 59, || Key 0 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad1 = 60, || Key 1 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad2 = 61, || Key 2 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad3 = 62, || Key 3 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad4 = 63, || Key 4 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad5 = 64, || Key 5 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad6 = 65, || Key 6 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad7 = 66, || Key 7 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad8 = 67, || Key 8 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPad9 = 68, || Key 9 on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPadPlus = 69, || Plus key on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPadMinus = 70, || Minus key on keyboard numberpad.<br />
|- <br />
|s3eKeyNumPadEnter = 71, || Enter key on keyboard numberpad.<br />
|- <br />
|s3eKeyRSK = 72, || Right soft key.<br />
|- <br />
|s3eKeyLSK = 73, || Left soft key.<br />
|- <br />
|s3eKeyLS = 74, || Left shoulder button.<br />
|- <br />
|s3eKeyRS = 75, || Right shoulder button.<br />
|- <br />
|s3eKeyHash = 76, || Key #.<br />
|- <br />
|s3eKeyStar = 77, || Key * (on keyboard numberpad for normal keyboards).<br />
|- <br />
!colspan="2" align="center" | Select/ok button<br />
|- <br />
|s3eKeyOk = 78, || Select key.<br />
|- <br />
|s3eKeyCLR = 79, || CLR key.<br />
|- <br />
!colspan="2" align="center"| Volume <br />
|- <br />
|s3eKeyVolUp = 80, || Volume Up key.<br />
|- <br />
|s3eKeyVolDown = 81, || Volume Down key.<br />
|- <br />
!colspan="2" align="center"|Camera <br />
|- <br />
|s3eKeyCamera = 82, || Camera.<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyMic = 83, || Microphone button.<br />
|- <br />
|s3eKeyFn = 84, || Fn button.<br />
|- <br />
|s3eKeySym = 85, || Sym button.<br />
|-<br />
!colspan="2" align="center"| Call<br />
|- <br />
|s3eKeyAccept = 86, || call accept (talk).<br />
|- <br />
|s3eKeyEnd = 87, || call end (reject).<br />
|- <br />
|s3eKeyHomePage = 88, || Home key.<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyButton1 = 89, || Generic Button1.<br />
|- <br />
|s3eKeyButton2 = 90, || Generic Button2.<br />
|- <br />
|s3eKeyButton3 = 91, || Generic Button3.<br />
|- <br />
|s3eKeyButton4 = 92, || Generic Button4.<br />
|- <br />
|s3eKeyButton5 = 93, || Generic Button5.<br />
|- <br />
|s3eKeyButton6 = 94, || Generic Button6.<br />
|- <br />
|s3eKeyButton7 = 95, || Generic Button7.<br />
|- <br />
|s3eKeyButton8 = 96, || Generic Button8.<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyF11 = 97, || Key F11.<br />
|- <br />
|s3eKeyF12 = 98, || Key F12.<br />
|- <br />
|s3eKeyLeftAlt = 99, || Left Alt key.<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyRightControl = 100, || Right Control Key.<br />
|- <br />
|s3eKeyRightAlt = 101, || Right Alt Key.<br />
|- <br />
|s3eKeyRightShift = 102, || Right Shift Key.<br />
|- <br />
|s3eKeyBacktick = 103, || Backtick '`' Key.<br />
|- <br />
|s3eKeyComma = 104, || Comma ',' Key.<br />
|- <br />
|s3eKeyPeriod = 105, || Period '.' Key.<br />
|- <br />
|s3eKeySlash = 106, || Forward slash '/' Key.<br />
|- <br />
|s3eKeyBackSlash = 107, || Back slash '\' Key.<br />
|- <br />
|s3eKeySemicolon = 108, || Semicolon ';' Key.<br />
|- <br />
|s3eKeyApostrophe = 109, || Apostrophe (') Key.<br />
|- <br />
|s3eKeyLeftBracket = 110, || Left Bracket '[' Key.<br />
|- <br />
|s3eKeyRightBracket = 111, || Right Bracket ']' Key.<br />
|- <br />
|s3eKeyEquals = 112, || Equals '=' Key.<br />
|- <br />
|s3eKeyMinus = 113, || Minus '-' key on main keyboard.<br />
|- <br />
|s3eKeyCapsLock = 114, || Caps Lock key<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyNumPadPeriod = 115, || Period '.' key on numberpad<br />
|- <br />
|s3eKeyNumPadSlash = 116, || Slash '/' key on numberpad<br />
|- <br />
|s3eKeyNumLock = 117, || NumLock key<br />
|- <br />
|s3eKeyInsert = 118, || Insert key<br />
|- <br />
|s3eKeyHome = 119, || Home key<br />
|- <br />
|s3eKeyPageUp = 120, || Page Up key<br />
|- <br />
|s3eKeyPageDown = 121, || Page Down key<br />
|- <br />
|s3eKeyKbEnd = 122, || End key (on keyboard)<br />
|- <br />
|s3eKeyDelete = 123, || Delete key<br />
|- <br />
|s3eKeyPause = 124, || Pause key<br />
|- <br />
|s3eKeyAt = 125, || At '@' key<br />
|- <br />
|s3eKeyBack = 126, || Back key<br />
|- <br />
|s3eKeyMenu = 127, || Menu key<br />
|- <br />
|s3eKeySearch = 128, || Search key<br />
|- <br />
|s3eKey3DMode = 129, || 3D Mode key<br />
|- <br />
|s3eKeyMyApps = 130, || My Apps key<br />
|- <br />
|s3eKeyPrintScreen = 131, || Print screen key<br />
|- <br />
|s3eKeyScrollLock = 132, || Scroll lock key<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyAbsGameA = 200, || Abstract Game keyA.<br />
|- <br />
|s3eKeyAbsGameB = 201, || Abstract Game keyB.<br />
|- <br />
|s3eKeyAbsGameC = 202, || Abstract Game keyC.<br />
|- <br />
|s3eKeyAbsGameD = 203, || Abstract Game keyD.<br />
|- <br />
|s3eKeyAbsUp = 204, || Abstract Up.<br />
|- <br />
|s3eKeyAbsDown = 205, || Abstract Down.<br />
|- <br />
|s3eKeyAbsLeft = 206, || Abstract Left.<br />
|- <br />
|s3eKeyAbsRight = 207, || Abstract Right.<br />
|- <br />
|s3eKeyAbsOk = 208, || Abstract Ok.<br />
|- <br />
|s3eKeyAbsASK = 209, || Abstract action softkey.<br />
|- <br />
|s3eKeyAbsBSK = 210, || Abstract backwards softkey.<br />
|- <br />
|colspan="2"| <br />
|- <br />
|s3eKeyLeftWindows = 211, || The left Windows key.<br />
|- <br />
|s3eKeyRightWindows = 212, || The right Windows key.<br />
|- <br />
|s3eKeyLeftBackSlash = 213,|| The left backslash "\" key.<br />
|}<br />
<br />
==Использование==<br />
[[Файл:Control_esc.png|right]]<br />
Нужно создать экземпляр обьекта на экране. Желательно создавать его на глобальном экране, на сцене с опциями, т.к. в таком варианте клавиши будут доступны со всех экранов в проекте.<br />
<br />
Далее задаем обьект и состояние в которое должна перейти машина. (На рис. это машина "esc" в состояние "choose").<br />
<br />
Также задаем код клавиши, который берем из таблицы ( Код 1 - это клавиша "ESC").<br />
<br />
=== Примечание ===<br />
В отладочном Viewer клавиша пробел ([[Интерфейс Viewer#Клавиша SPACE|Space]]) отвечает за паузу. Это может вызвать проблемы при отладке нажатия/отпускания Space (s3eKeySpace = 8).<br />
<br />
<br />
Для flash viewer клавишам-стралкам up, down, left, right отвечают коды из поля Abstract.<br />
<br />
==Комбинации клавиш==<br />
<br />
Ниже показан пример как можно реализовать нажатие комбинации клавиш ( SHIFT +Q )<br />
<br />
[[Файл:Combo_cntrl1.png]] [[Файл:Combo_esc.png]]<br />
<br />
== Пример ==<br />
<br />
[http://fs5.absolutist.com/files/wikisample/controls.rar Download]<br />
<br />
[[Category:Options]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%B9%D1%88%D0%B8%D0%B9_%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F&diff=7075Простейший вывод версии приложения2015-05-29T08:01:47Z<p>Beletsky: </p>
<hr />
<div>:В каждой игре, Мы выводим информацию об версии приложения. Версии обновляются и нам необходимо выводить актуальную информацию.<br />
<br />
== Реализация вывода информации об версии ==<br />
Для реализации нам понадобиться один текстовый объект и одна запись в текстовой базе.<br />
<br />
[[Файл:Text base.jpg|right]]<br />
*'''1)''' В текстовой базе создаём запись с текстом: << Ver. ver_opt >> <br />
<br />
<br />
[[Файл:Text obj var.jpg|right]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
*2) В нужном нам месте, создаём текстовый объект. В текстовом объекте ставим память ( чтобы в одной игровой сессии у нас единожды вычиталась переменная) и добавляем переменную:<br />
::___'''''имя''''' - ver_opt ;<br />
::___'''''объект''''' - '''Options''' ; - Ваши опции;<br />
::___'''''параметр''''' - Version;<br />
<br />
<br />
<br />
<br />
<br />
<br />
----<br />
Второй вариант:<br />
Добавить одну переменную и вписать её название с любым текстом в поле *text*.<br />
<br />
<br />
[[Файл:Ver2fromoptions.png|right]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
:Полученный результат:<br />
<br />
[[Файл:Text result.jpg]] <br />
<br />
<br />
[[Category:Learning]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Ver2fromoptions.png&diff=7074Файл:Ver2fromoptions.png2015-05-29T07:59:46Z<p>Beletsky: </p>
<hr />
<div></div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Slotmachine&diff=7046Slotmachine2015-05-05T06:25:09Z<p>Beletsky: /* Общие параметры */</p>
<hr />
<div>{{TOC right}}<br />
'''Slotmachine''' является объектом для реализации игр с механикой игровых автоматов. Slotmachine не просто управляет движением иконок на барабанах - он отвечает за анимацию выигранных линий и добавления новых линий для подсчета очков.<br />
<br />
==Общие параметры==<br />
(см. описание [[Object|Object]])<br />
<br />
[[Файл:Slot settings.png|right]]<br />
* '''тип''' - тип объекта<br />
* '''имя''' - имя объекта<br />
* '''синхронизация''' - синхронизация между лейаутами<br />
* '''положение'''<br />
** '''x''' - положение объекта по оси х<br />
** '''y''' - положение объекта по оси y<br />
* '''размер'''<br />
** '''w''' - ширина объекта в пикслях<br />
** '''h''' - высота объекта в пикселях<br />
* '''модификаторы'''<br />
** '''alpha''' - прозрачность объекта от 0 (прозрачен) до 1 (не прозрачен)<br />
** '''angle''' - угол поворота в градусах. 0 - не повернут. Отсчитывается от оси х вниз. Вверх идут отрицательные углы.<br />
** '''scale x''' - масштаб по оси х: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
** '''scale y''' - масштаб по оси y: 1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.<br />
* '''вычислять размер''' (''calcsize'') - Вычислять размер исходя из ширины и высоты объекта или использовать размер картинок" ''calcsize'': размер графики = 0, размер объекта = 1<br />
* '''эффект ячейки''' (''effect_obj'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
* '''доп. эффект ячейки''' (''effect_obj2'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов. Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
* '''эффект линии''' (''line_obj'') - Машина, обеспечивающая анимацию выигравших линий. Должна иметь состояния line_0 ... line_N (N от 4 до 24)<br />
[[Файл:Slot_2.PNG|200px|thumb|right|пример машины для анимации линий]]<br />
* '''ribbon''' (''ribbon_obj'') - Объект типа ribbon для эффекта линии.<br />
* '''смещение ribbon''' (''ribbon_y_shift'') - Смещение объекта ribbon вниз в % от высоты ячейки. Задается в единицах процентов от 1 до 100.<br />
* '''рельсы''' - пять полей с номерами иконок. '''ВАЖНО:''' Появление в рельсе иконки с порядковым номером выше, чем максимальное кол-во иконок - вызовет падение viewer с ошибкой в log. <br />
** '''рельса N''' (''r1..r5'') - Рельса N - номера иконок (начиная с 0) через запятую. Пустая строка - игнорировать рельсу<br />
* '''параметры вращения''':<br />
** '''time''' (''spin_t'') - Время вращения левого барабана.<br />
** '''time step''' (''spin_t_step'') - Время на которое каждый последующий барабан крутится дольше предыдущего. (''таким образом был реализован эффект последовательной остановки барабанов, как в механической версии данного автомата'')<br />
** '''time delta''' - Случайная погрешность для времени вращения барабана. Нужна для исключения появления устойчивых наборов иконок. Составляет обычно 10% от времени вращения барабана.<br />
** '''vel min''' (''min_vel'') - Минимальная скорость вращения (левый барабан)<br />
** '''vel max''' (''max_vel'') - Максимальная скорость вращения (правый барабан).<br />
<br />
* '''звуки''': <br />
** барабан вращается (''sndspin'') - барабан вращается. <br />
** запуск барабанов (''sndstart'') - запуск барабанов. <br />
** остановка барабана (''sndstop'') - остановка барабана. <br />
** выигрыш (''sndwin'') - выигрыш. <br />
** проигрыш (''sndfail'') - проигрыш. <br />
** особая комбинация (''sndspecial'') - особая комбинация.<br />
<br />
* '''иконка''' (''slotico'') - добавляемый параметр с настройками иконки:<br />
** '''графика''' (''icores'') - Графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Можно использовать фреймовую анимацию, которая будет использовать все настройки редактора ресурсов.<br />
** '''тип''' (''icotype'') - Тип иконки. 0 - обычная, 1 - Bonus, 2 - Wild, 3 - Scatter.<br />
0 - обычная иконка. 1 - при выпадении 3 и больше иконок на барабанах не зависимо от их расположения - запускается бонусная игра (пока не реализовано). 2- бонусная иконка, при попадании ее в линию - может заменить любую иконку и даёт возможность продолжить/начать/закончить игровую линию. 3 - механика схожа с бонусной иконкой, но вызывает уже бесплатные спины (пока не реализовано).<br />
** '''выигрыш''' (''icowin'') - Выигрыш по иконке. За 1, 2, 3 и т.д. иконку в линии.<br />
** '''эффект ячейки''' (''icoeffect'') - Объект, который склонируем для выигрышной ячейки. Флаер или машина с состоянием beg без подобъектов<br />
** '''доп. эффект ячейки''' (''icoeffect2'') - Дополнительный объект удобно использовать для копирования различный flyer-анимаций выигрыша ячейки, при этом основной эффект чаще всего является объектом, которому заменяется графика из полей "эффект ячейки".<br />
''если эти поля не заполнены - используются эффекты по умолчанию''<br />
<pre><br />
Пример:<br />
<br />
0, 1, 0, 0 - за строку начисляется выигрыш (1), если подряд попадается одна такая иконка. <br />
<br />
0, 0, 10, 0 - за строку начисляется выигрыш (10 очков), если подряд попадаются две таких иконки. <br />
<br />
0, 0, 0, 5 - за строку начисляется выигрыш (5 очков), если подряд попадаются три таких иконки.<br />
</pre><br />
[[Файл:Slot_3.gif|thumb|right|пример расположения линий]]<br />
<br />
'''Важно! Иконки в линии считаются слева направо. На изображении линии 6 и 7 перепутаны.'''<br />
<br />
Текущий выигрыш можно узнать считав параметр '''current_win''' у объекта.<br />
Количество линий, эффект для которых нужно показать отображает параметр '''lines_num'''. Считывается у объекта. Обновляется каждый раз при выполнении '''next_line_effect'''.<br />
<br />
* '''состояния''':<br />
** '''spin''' - запустить барабаны<br />
** '''add_line''' - добавить еще одну линию как игровую. При этом автоматически запускается эффект линии и переводится в состояние, соответствующее номеру последней добавленной линии.<br />
** '''remove_line''' - убирает одну линию. Одна линия для проверки - минимум, убрать её нельзя.<br />
''Оба состояния '''add_line''' и '''remove_line''' передаются с параметром кол-ва линий. par=param val=кол-во линий, аналогично dval у counter.''<br />
** '''clear''' - убрать все строки (кроме первой) для проверки выигрыша<br />
** '''next_line_effect''' - вызывает эффект для следующей линии. Одновременно с этим вызывается эффект для ячейки.<br />
** '''stop''' - остановить барабаны. Вызывается с параметром param от 0 до 4 для остановки конкретного барабана. Примечание: перевод объекта в состояния <br />
add_line и clear во время вращения барабана - приводит к его остановке.<br />
** '''shuffle''' - новое начальное положение барабана (выбирается случайная иконка на всей рельсе и от неё отображаются иконки на всех рельсах).<br />
** '''hide_animation''' - спрятать все эффекты линии и ячейки, которые были склонированы. Удобно использовать при досрочном закрытии мини-игры.<br />
<br />
== Добавляемые параметры ==<br />
<br />
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши. <br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен проигрыш''' - При current_win=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
<br />
[[Файл:+.png]] '''изменить состояние объекта - бросок завершен выигрыш''' - При current_win!=0 по завершению вращения перевести слушателя в состояние.<br />
*'''объект'''- объект - состояние которого меняем.<br />
*'''состояние'''- состояние - значение нового состояния<br />
<br />
[[Файл:+.png]] '''иконка линии''' - При наличии объектов, которые каким-либо образом обозначают начало линии - указываем их через добавляемое свойство по порядку, начиная с нуля. Эффект линии в виде объекта ribbon будет рисоваться начиная (или заканчивая) этими объектами. <br />
*'''объект'''- объект, у которого забираем положение.<br />
<br />
[[Файл:+.png]] '''эффект ячейки''' - При current_win!=0 по завершению вращения заменяет из набора ресурсов таких дополнительных свойств графику для клонируемого эффекта ячейки.<br />
*'''клип'''- ресурс. Перетаскивается из базы ресурсов.<br />
<pre><br />
Графика в виде фреймовой анимации. Допустим у нас есть набор из 8-ми анимаций.<br />
<br />
Работает такая логика при выборе графики:<br />
<br />
1. При любом выигрыше графика эффекта ячейки для первой показываемой линии выбирается случайно из набора, но не повторяется с первой выбранной для предыдущего выигрышного спина.<br />
<br />
2. Для всех последующих в этом спине выигранных линий — графика последовательно выбирается из набора (оставшейся графики) в произвольном порядке.<br />
<br />
3. Если линий больше 8-ми — повторяем с первого пункта, выбирая первой графику отличную от 8-мой.<br />
<br />
Пример:<br />
<br />
1й спин — выпало 12 линий.<br />
<br />
0, 2, 4, 3, 5, 7, 1, 6 … (начинаем не с 6) 4, 0, 3, 1<br />
<br />
2й спин — выпало 6 линий.<br />
<br />
(начинаем не с 0) 5, 6, 7, 1, 0, 3<br />
<br />
где 0..7 — номера анимаций.<br />
</pre><br />
[[Категория:Game mechanic]]</div>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Counter&diff=7021Counter2015-04-20T13:51:59Z<p>Beletsky: /* Состояния */</p>
<hr />
<div>[[Файл:Counte.jpg|right]]<br />
'''Counter''' - [[Object|объект]], который хранит значение целого положительного числа, значение которого могут изменять другие объекты. Используется для визуализации числа сделанных ходов или кликов в игре, количества оставшихся подсказок и т.п. Он может быть скрыт и использоваться для хранения целого числа, необходимого для работы других объектов, например, [[Machine|машинами состояний]].<br />
== Общие параметры ==<br />
Смотреть описание [[Object|Object]].<br />
== Основные параметры ==<br />
*'''res''' ('' res '') - Графический ресурс для отображения цифр ([[Интерфейс_ResourceEditor|анимированный клип]] из 10 фреймов: первый фрейм - 0, последний 9). Перетаскивается мышкой из редактора ресурсов.<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 />
:'''0''' - будет отображенно число без форматирование во временную единицу.<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 />
== Добавляемые параметры ==<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>Beletskyhttps://wiki.appsalutecreator.com/index.php?title=Counter&diff=7020Counter2015-04-20T13:49:09Z<p>Beletsky: /* Основные параметры */</p>
<hr />
<div>[[Файл:Counte.jpg|right]]<br />
'''Counter''' - [[Object|объект]], который хранит значение целого положительного числа, значение которого могут изменять другие объекты. Используется для визуализации числа сделанных ходов или кликов в игре, количества оставшихся подсказок и т.п. Он может быть скрыт и использоваться для хранения целого числа, необходимого для работы других объектов, например, [[Machine|машинами состояний]].<br />
== Общие параметры ==<br />
Смотреть описание [[Object|Object]].<br />
== Основные параметры ==<br />
*'''res''' ('' res '') - Графический ресурс для отображения цифр ([[Интерфейс_ResourceEditor|анимированный клип]] из 10 фреймов: первый фрейм - 0, последний 9). Перетаскивается мышкой из редактора ресурсов.<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 />
:'''0''' - будет отображенно число без форматирование во временную единицу.<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 />
== Добавляемые параметры ==<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 />
*'''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>Beletsky