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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Основные параметры)
(Основные параметры)
 
(не показано 10 промежуточных версий 1 участника)
Строка 3: Строка 3:
 
Имеет основные параметры [[Object|объекта]].
 
Имеет основные параметры [[Object|объекта]].
  
[[Файл:Zone1.png|thumb|left]]
+
[[Файл:Zone1.png|thumb|right]]
  
 
== Основные параметры ==
 
== Основные параметры ==
  
'''Состояние''' ''(state)'' - начальное состояние зоны. По умолчанию - disabled. Можно указать active, если зона должна быть активной сразу, а не после некоторого действия.
+
'''Состояние''' ''(state)'' - начальное состояние зоны. По умолчанию - '' disabled ''. Можно указать состояние '' active '', если зона должна быть активной сразу, а не после некоторого действия.
'''В опции''' ''(saveopt)'' - если "да", то зона будет сохранять свое состояние в опции и при ините будет находится в этом состоянии. Это позволяет значительно упростить управление. Данный параметр опций можно изменять с помощью объекта как в текущем экране, так и в другом.
+
 
 +
'''В опции''' ''(saveopt)'' - если '' "да" '', то зона будет сохранять свое состояние в опции и при ините будет находится в этом состоянии. Это позволяет значительно упростить управление. Данный параметр опций можно изменять с помощью объекта как в текущем экране, так и в другом.
 +
 
 
'''res''' ''(res)''  - графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов. В основном используется безресурсная зона. Размер зоны задается через ее параметры '' w, h ''.
 
'''res''' ''(res)''  - графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов. В основном используется безресурсная зона. Размер зоны задается через ее параметры '' w, h ''.
'''курсор''' ''(curs)'' - графический ресурс курсора текущего и всех дочерних объектов. Перетаскивается мышкой из редактора ресурсов.
 
''условие допустимости хинта''
 
*''объект'' ''(objEx)'' - объект который должен находиться в определенном состоянии для появления задания.
 
*''состояние'' ''(stEx)'' - состояние для объекта из предыдущего поля.
 
*''параметр'' ''(parEx)'' - параметр объекта выше.
 
*''значение'' ''(valEx)'' - значение параметра.
 
*''НЕ'' ''(notEx)'' - отрицание условия.
 
*''общее НЕ'' ''(notExAll)'' - отрицание всего набора условий. Используется, если нужно чтобы все указанные условия подхинтовывания воспринимались через "или", а не через "и".
 
  
=='''Дополнительные параметры'''==
+
'''Курсор''' ''(curs)'' - графический ресурс курсора текущего и всех дочерних объектов. Перетаскивается мышкой из редактора ресурсов.
[[Файл:Zone2.png|thumb|right]]
+
 
[[Файл:Zone3.png|thumb|right]]
+
'''Условие допустимости хинта'''
[[Файл:Zone4.png|thumb|right]]
+
*'''объект''' ''(objEx)'' - объект, который должен находиться в определенном состоянии для подхинтовывания зоны.
 +
*'''состояние''' ''(stEx)'' - состояние объекта из предыдущего поля.
 +
*'''параметр''' ''(parEx)'' - параметр объекта из предыдущего поля.
 +
*'''значение''' ''(valEx)'' - значение выше указанного параметра.
 +
*'''НЕ''' ''(notEx)'' - отрицание условия.
 +
*'''общее НЕ''' ''(notExAll)'' - отрицание всего набора условий. Используется, если нужно чтобы все указанные условия подхинтовывания воспринимались через "или", а не через "и".
 +
*'''реагировать на''' ''(reacttype)'' - реагировать на тап или на нажатие.
 +
*'''подсветка тула''' ''(toolhinttype)'' - подсветка тула всегда из первой реакции или же того, который есть в инвентаре.
 +
*'''объект фокусировки''' ''(focObj)'' - объект, на который будет фокусироваться сцена при подсветке зоны.
 +
 
 +
== Activezone setup ==
 +
[[Файл:Zone2.png|700px|right]]
  
==='''реакция'''===
+
[[Файл:az_setup2.png|700px|right]]
Реализует реакцию на клик и/или дроп тула.
 
  
* ''дроп'' '''(drop)''' - объект, который дропаем на активную зону. Если не задан - обрабатываем клик.
+
[[Файл:az_setup5.png|700px|right]]
  
Если дроп прописан и в туле и в зоне, то команда для дропа выполнится в обоих объектах (команда в зоне отработает на 10-20 мс позже, при этом если команды в зоне и туле одинаковы, то первый set данной команды выполнится дважды). По этому желательно прописывать команду дропа или в туле или в зоне.
+
Окно настройки активной зоны состоит из 2х вкладок: условия допустимости хинта и реакции.
  
Но если на зону есть применение тула, то как минимум должно быть заполнено поле "дроп"(остальные могут быть пустыми). Так как, когда зоне вызывается hint, то и тул прописанный в поле "дроп" тоже будет подсвечиваться, но после передачи менеджеру состояния hint_tool.
+
'''1. Условия допустимости хинта''' - Иначе говоря, при каких условиях будет подхинтовываться и подглинтовываться зона. Может использоваться целый набор условий. Если нужно, чтобы они все учитывались через "или", следует указать ''общее НЕ'' в основном условии подхинтовывания и "НЕ" в каждом.  
  
* ''объект'' '''(obj)''' - объект, которому будем менять состояние.  
+
'''Условие допустимости хинта ni, i=1,2,3,..'''
Один объект может отвечать за несколько действий.
+
*'''объект''' - объект, который должен находиться в определенном состоянии для подхинтовывания зоны.
 +
*'''состояние''' - состояние объекта из предыдущего поля.
 +
*'''параметр''' - параметр объекта из предыдущего поля.
 +
*'''значение''' - значение выше указанного параметра.
 +
*'''НЕ''' - отрицание условия.
  
Пример: Пока не применили некоторый тул (или не  совершили любое другое действие, которое можно проверить через параметр в опциях) при клике на зону объект показывает одну текстовую подсказку, после применения - другую.
+
'''2. Реакции''' - Действия, которые произойдут после клика или дропа объекта на зону. По умолчанию после каждой реакции зона переходит в состояние ''work''. Для того, чтобы после отработки реакции №1 зона перешла к реакции №2, нужно в реакции №1 задать состояние зоне ''active''. И так далее. В последней же реакции нужно задать состояние зоне ''reset'', если нужно повторить реакции, начиная с 1й. Чаще всего такая схема нужна для отображения разных текстовых сообщений по клику на одну и ту же зону.
* ''состояние'' '''(st)''' - состояние для объекта из предыдущего поля.  
 
* ''состояние зоны'' '''(stz)''' - новое состояние активной зоны, в которое она перейдет после отработки реакции.
 
**'''work''' - новое состояние зоны по умолчанию. Зона на клик/дроп не реагирует, глинт/хинт зону не подсвечивает.
 
**'''active''' - активация зоны для отработки следующей реакции(в случае, если прописано несколько реакций). Если не указать active, зона перейдет в work и для отработки следующей реакции, ее нужно будет перевести в active другим объектом.
 
**'''reset''' - сбрасывает состояние все параметры зоны: зона переходит в active, счетчик реакции стает = 0 (будет выполняться первая реакция). Применяется когда нужно зациклить одну команду (например показ сообщения, что нужно что то использовать и т.д.). При этом, если на клик должно быть несколько действий, то нужно их логику прописать в машине, которая обрабатывает реакцию(если указано reset, как новое состояние зоны, то следующие реакции никогда не выполнятся, так как счетчик реакций всегда сбрасывается на первую ). Если в области зоны должен применяться тул, то его прописываем в параметре "дроп", а остальные поля не подключаем.
 
  
 +
Общая схема реакций:
  
==='''условие допустимости хинта (дополнительные)'''===
+
- реакция 1
*''объект'' - Объект который должен находиться в определенном состоянии для появления задания
+
    - действие 1
*''состояние'' - Состояние для объекта из предыдущего поля.
+
    - действие 2
*''параметр'' - Параметр объекта выше.
+
    ..........
*''значение'' - Значение параметра.
+
    - действие n
*''НЕ'' - отрицание условия.
+
- реакция 2
 +
    - действие 1
 +
    - дейстиве 2
 +
    ..........
 +
    - дейстиве m
 +
- .........
  
Дополнительные условия допустимости хинта связаны с основным логическим "И".
+
'''Реакция nj, j=1,2,3,..'''
 +
*'''дроп''' - объект, который дропаем на активную зону. Если этот объект является тулом, то при передаче зоне состояния hint_tool он будет подсвечиваться. Также, если дроп прописан и в туле, и в зоне, то команда для дропа выполнится в обоих объектах (команда в зоне отработает на 10-20 мс позже; при этом если команды и в зоне, и в туле одинаковы, то первый set данной команды выполнится дважды). Поэтому желательно прописывать команду дропа или в туле, или в зоне.
 +
*'''объект''' - объект, которому будем менять состояние.
 +
*'''состояние'''  - состояние для объекта из предыдущего поля.
 +
*'''состояние зоны'''  - новое состояние активной зоны, в которое она перейдет после отработки реакции.
  
=='''Состояния зоны'''==
+
'''Действие njk, k=1,2,3,..'''
 +
*'''объект''' - объект, которому будем менять состояние.
 +
*'''состояние'''  - состояние для объекта из предыдущего поля.
 +
*'''par'''  - параметр для объекта из предыдущего поля.
 +
*'''val_txt'''  - текстовый id, если выше указанный параметр txtID.
 +
*'''val'''  - значение для выше указанного параметра.
 +
*'''перейти на''' - экран перехода.
  
*''disabled'' - начальное состояние по умолчанию. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
+
== Состояния ==
*''work'' - состояние отработавшей зоны. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
 
*''active'' - в данном состоянии зона активна: может отработать очередную реакцию (1 раз), подсвечивается глинтом/хинтом.
 
*''reset'' - сбрасывает параметры зоны: зона переходит в active, счетчик реакции = 0. В отличии от других состояний не пишется в опции, так как отрабатывает непосредственно после реакции.
 
  
Состояния зоны можно проверять через if для настройки логики.
+
*'''disabled''' - начальное состояние по умолчанию. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
 +
*'''work''' - состояние отработавшей зоны. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
 +
*'''active''' - в данном состоянии зона активна: может отработать очередную реакцию (1 раз), подсвечивается глинтом/хинтом.
 +
*'''reset''' - сбрасывает параметры зоны: зона переходит в active, счетчик реакции = 0. В отличии от других состояний не пишется в опции, так как отрабатывает непосредственно после реакции.
  
=='''Особенности использования'''==
+
== Особенности использования ==
  
 
# Если зона имеет параметр vis = 0, то она не подсвечивается глинтом/хинтом (и на клик/дроп не реагирует). Это используется если в локации есть зумы. чтобы когда зум открыт, не подсвечивались хинтом/глинтом зоны в самой локации. Для этого нужно зоны в локации объединить в groupset и при открытии зума, передавать этому groupset vis = 0. При этом зум должен при окртытии/закрытии изменять vis объектам, которые содержит.
 
# Если зона имеет параметр vis = 0, то она не подсвечивается глинтом/хинтом (и на клик/дроп не реагирует). Это используется если в локации есть зумы. чтобы когда зум открыт, не подсвечивались хинтом/глинтом зоны в самой локации. Для этого нужно зоны в локации объединить в groupset и при открытии зума, передавать этому groupset vis = 0. При этом зум должен при окртытии/закрытии изменять vis объектам, которые содержит.
Строка 73: Строка 92:
 
# При наличии объекта, который можно дропнуть на зону и он при этом остается доступным игроку, в машине-обработчике дропа нужно делать проверку было ли применение; иначе предмет можно будет дропнуть неограниченное количество раз (связано с изменением vis активной зоны).
 
# При наличии объекта, который можно дропнуть на зону и он при этом остается доступным игроку, в машине-обработчике дропа нужно делать проверку было ли применение; иначе предмет можно будет дропнуть неограниченное количество раз (связано с изменением vis активной зоны).
  
=='''Пример'''==
+
== Пример ==
 
S:\!MOBILE\!!!EditorGames\Wiki_sample  
 
S:\!MOBILE\!!!EditorGames\Wiki_sample  
  

Текущая версия на 09:49, 19 января 2017

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

Zone1.png

Основные параметры

Состояние (state) - начальное состояние зоны. По умолчанию - disabled . Можно указать состояние active , если зона должна быть активной сразу, а не после некоторого действия.

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

res (res) - графический ресурс для отображения объекта. Перетаскивается мышкой из редактора ресурсов. В основном используется безресурсная зона. Размер зоны задается через ее параметры w, h .

Курсор (curs) - графический ресурс курсора текущего и всех дочерних объектов. Перетаскивается мышкой из редактора ресурсов.

Условие допустимости хинта

  • объект (objEx) - объект, который должен находиться в определенном состоянии для подхинтовывания зоны.
  • состояние (stEx) - состояние объекта из предыдущего поля.
  • параметр (parEx) - параметр объекта из предыдущего поля.
  • значение (valEx) - значение выше указанного параметра.
  • НЕ (notEx) - отрицание условия.
  • общее НЕ (notExAll) - отрицание всего набора условий. Используется, если нужно чтобы все указанные условия подхинтовывания воспринимались через "или", а не через "и".
  • реагировать на (reacttype) - реагировать на тап или на нажатие.
  • подсветка тула (toolhinttype) - подсветка тула всегда из первой реакции или же того, который есть в инвентаре.
  • объект фокусировки (focObj) - объект, на который будет фокусироваться сцена при подсветке зоны.

Activezone setup

Zone2.png
Az setup2.png
Az setup5.png

Окно настройки активной зоны состоит из 2х вкладок: условия допустимости хинта и реакции.

1. Условия допустимости хинта - Иначе говоря, при каких условиях будет подхинтовываться и подглинтовываться зона. Может использоваться целый набор условий. Если нужно, чтобы они все учитывались через "или", следует указать общее НЕ в основном условии подхинтовывания и "НЕ" в каждом.

Условие допустимости хинта ni, i=1,2,3,..

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

2. Реакции - Действия, которые произойдут после клика или дропа объекта на зону. По умолчанию после каждой реакции зона переходит в состояние work. Для того, чтобы после отработки реакции №1 зона перешла к реакции №2, нужно в реакции №1 задать состояние зоне active. И так далее. В последней же реакции нужно задать состояние зоне reset, если нужно повторить реакции, начиная с 1й. Чаще всего такая схема нужна для отображения разных текстовых сообщений по клику на одну и ту же зону.

Общая схема реакций:

- реакция 1
   - действие 1
   - действие 2
   ..........
   - действие n
- реакция 2
   - действие 1
   - дейстиве 2
   ..........
   - дейстиве m
- .........

Реакция nj, j=1,2,3,..

  • дроп - объект, который дропаем на активную зону. Если этот объект является тулом, то при передаче зоне состояния hint_tool он будет подсвечиваться. Также, если дроп прописан и в туле, и в зоне, то команда для дропа выполнится в обоих объектах (команда в зоне отработает на 10-20 мс позже; при этом если команды и в зоне, и в туле одинаковы, то первый set данной команды выполнится дважды). Поэтому желательно прописывать команду дропа или в туле, или в зоне.
  • объект - объект, которому будем менять состояние.
  • состояние - состояние для объекта из предыдущего поля.
  • состояние зоны - новое состояние активной зоны, в которое она перейдет после отработки реакции.

Действие njk, k=1,2,3,..

  • объект - объект, которому будем менять состояние.
  • состояние - состояние для объекта из предыдущего поля.
  • par - параметр для объекта из предыдущего поля.
  • val_txt - текстовый id, если выше указанный параметр txtID.
  • val - значение для выше указанного параметра.
  • перейти на - экран перехода.

Состояния

  • disabled - начальное состояние по умолчанию. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
  • work - состояние отработавшей зоны. В нем зона на реакции не реагирует, глинтом/хинтом не подсвечивается.
  • active - в данном состоянии зона активна: может отработать очередную реакцию (1 раз), подсвечивается глинтом/хинтом.
  • reset - сбрасывает параметры зоны: зона переходит в active, счетчик реакции = 0. В отличии от других состояний не пишется в опции, так как отрабатывает непосредственно после реакции.

Особенности использования

  1. Если зона имеет параметр vis = 0, то она не подсвечивается глинтом/хинтом (и на клик/дроп не реагирует). Это используется если в локации есть зумы. чтобы когда зум открыт, не подсвечивались хинтом/глинтом зоны в самой локации. Для этого нужно зоны в локации объединить в groupset и при открытии зума, передавать этому groupset vis = 0. При этом зум должен при окртытии/закрытии изменять vis объектам, которые содержит.
  2. Если есть зона, которая должна быть активна пока не совершено некоторое действие, то в ее реакции целесообразно использовать reset, как новое состояние зоны. А после совершения действия зону нужно перевести в work, чтобы она не подсвечивалась глинтом/хинтом.
  3. Если на некоторую область нужно применить несколько тулов, то для каждого применения должна быть своя зона, чтобы при хинте подсвечивался только один тул(в основном так и будет и в случае одной зоны, так как для всех тулов используется один флаер для подсветки, но могут возникать трудноуловимые ошибки). Пример: Есть область к которой нужно применить тул1, тул2 и тул3 (в таком же порядке). Для этого делаем 3 зоны: зона1, зона2, зона3(номера соответствуют тулам). Алгоритм следующий: Сначала активна только зона1, после применения зона1 переводится в work, а зона2 в active. После применения тула2 переводим зону2 в work, а зону3 в active. При этом если зона должна активироваться после анимации, то нужно предусмотреть страховку от падения приложения во время анимации(машинка, которые проверяет некоторые условия, и в случае их истинности, активирует зону).
  4. Если нужно, чтобы зона некоторое время не была активной(пока не закончится анимация и т.п.), то на это время ей нужно установить vis = 0 (и оставить состояние active - в случае падения приложения, при повторном заходе зона будет активна и отработает как нужно(в случае если зона пишет свое состояние в опции - что почти всегда так)), но если после реакции зоне вызывается reset, то vis нужно устанавливать с задержкой в 50 мс(reset устанавливает vis = 1).
  5. Состояние зоны можно изменять из другого экрана с помощью set изменяя у опций (для пользователя) параметр azones.z(id зоны).st, у зоны должен быть включен параметр "в опции".
  6. порядок расположения зон в дереве проекта и в азменеджере (добавляемый параметр - дополнительная зона) задает порядок хинтования зон при вызове азменеджеру hint_seq
  7. При динамическом изменении параметров азменеджера (машиной, при загрузке экрана, с передачей азменеджеру состояния init), который управляет зоной, которой тоже динамически изменяют параметры, нужно чтобы сначала изменялись параметры азменеджера, а потом активной зоны; иначе после init'a азменеджера зона сбросит свои параметры.
  8. При наличии объекта, который можно дропнуть на зону и он при этом остается доступным игроку, в машине-обработчике дропа нужно делать проверку было ли применение; иначе предмет можно будет дропнуть неограниченное количество раз (связано с изменением vis активной зоны).

Пример

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

Файл sample_activezone_and_azmanager.zip