Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как сбросить локальные переключатели событий?

  1. #1
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию Как сбросить локальные переключатели событий?

    Делаю простенький рогалик и долго думал над тем, чтобы событие задавалось вопросом "Што я такое" и искало свой жизненный путь самостоятельно. Перепробовал много способов и решил, что самый лучший способ сделать так, чтобы было много небольших событий, которые могут рандомиться на 4 предмета и просто расставляться на карте. Работает это по принципу локальных переключателей, так как иначе сделать не получилось. В нашем случае, A - это Сундук, B - Монстр, C - Шмот, D - пустота. С помощью рандома от 1 до 100 считывается вероятность выпадение той или иной вещи, на первой параллельной странице.
    Это единственный способ, который действительно работает! Но я столкнулся с одним недочетом...

    Как видите, первая страница работает от переключателя "Рандом блоков", что является совершенно ненужной частью этого события, потому что этот переключатель тупо не работает, когда я хочу сбросить блоки.
    Да, проблема в сбросе блоков, потому что игрок будет начинать Данж заново неоднократное количество раз за игру! А локальные переключатели это далеко не то, что можно просто так сбросить. :С
    Пытался сделать так:
    - При переходе в подземелье Рандом блоков включается, при выходе из него выключается. Это не помогло, почему то блоки не сбрасываются, не смотря на то, что по идее при включении рандома блоков все события должны переходить на первую страницу, где идет вычисление.

    Короче, нужно сделать так, чтобы при повторном прохождении подземелья в игре, - всё сбрасывалось и работало по новой. А проблема в том, что рандом построен на локальных переключателях, так как это единственный рандом, который у меня получился рабочим и без косяков.

    Еще главная проблема в том, что сами предметы на локальных переключателях имеют триггер "при касании игрока", а первая страница, где всё вычисляется, имеет "параллельный" триггер.
    Рандом именно на локальных переключателях нужен для того, чтобы изображение события менялось вместе с тем, чем оно является.
    Последний раз редактировалось Axel_Key; 07.09.2017 в 06:29.

  2. #2
    Бывалый Аватар для PanzerCat
    Информация о пользователе
    Регистрация
    09.04.2017
    Адрес
    Тула
    Сообщений
    806
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Делай через общее событие: то что ты прописываешь, как я понимаю, в каждом событии на локации, пиши в общее один раз. А непосредственно в событиях на локации делай ссылку командой "общее событие" первая вкладка (или как там у тебя называется в твоём переводе). Если что-то вдруг не сбрасывается то поставь условием переключатель дополнительный (оператор в твоем варианте)

  3. #3
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Тут вот ссылка есть.
    Я без переключения локальных жить не могу.
    http://rpgmaker.su/f95/%5Bmv%5Dвызов...ытия-2816/

    А тут пример использования для мв.
    http://rpgmaker.su/f95/магия-рун-лов...ce-mv%5D-2590/

  4. #4
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от PanzerCat Посмотреть сообщение
    Делай через общее событие: то что ты прописываешь, как я понимаю, в каждом событии на локации, пиши в общее один раз. А непосредственно в событиях на локации делай ссылку командой "общее событие" первая вкладка (или как там у тебя называется в твоём переводе). Если что-то вдруг не сбрасывается то поставь условием переключатель дополнительный (оператор в твоем варианте)

    Это только упростило код, но суть не поменялась. Как это повлияет на сброс объектов, если первая страница в объекте всегда автоматически ссылается на общее событие, а общее событие переключает страницы объекта на локальные переключатели, которые работают только при касании игрока? В любом случае, общее это событие или нет, генерация объекта проходит с помощью первой страницы объекта. Которая в последующие разы не будет активной из-за того, что активны другие страницы с локальными переключателями активны.
    Последний раз редактировалось Axel_Key; 07.09.2017 в 07:44.

  5. #5
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

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

    Окэ. Вот так я сбрасываю 200 локальных на карте.(событий не обязательно должно быть 200. Просто с запасом)

    PHP код:
    for (var i=0;200i++){$gameSelfSwitches.setValue([this._mapId,i,'A'], false)
    }
    for (var 
    i=0;200i++){
    $gameSelfSwitches.setValue([this._mapId,i,'B'], false)
    }
    for (var 
    i=0;200i++){
    $gameSelfSwitches.setValue([this._mapId,i,'C'], false)
    }
    for (var 
    i=0;200i++){
    $gameSelfSwitches.setValue([this._mapId,i,'D'], false)


  6. #6
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Пётр Посмотреть сообщение
    Ты б поразбирался чуть что делает команда.
    Окэ. Вот так я сбрасываю 200 локальных на карте.(событий не обязательно должно быть 200. Просто с запасом)

    Я не совсем понимаю, где это должно сбрасываться.
    Смотри, структура события такая:

    Страница 1 - общее событие с вычислением рандома от 1 до 4 объектов. Каждый объект размещен на локальном переключателе. (Автоматический триггер)
    Страница 2 - Лок. пер. А Общее событие "Сундук". (При касании игрока)
    Страница 3 - Лок. пер. B Общее событие "Монстр". (При касании игрока)
    Страница 4 - Лок. пер. C Общее событие "Шмот". (При касании игрока)
    Страница 5 - Лок. пер. D Общее событие "Ничего". (При касании игрока)

    Как видишь, все последующие лок. переключатели активируются только при касании игрока и какой именно будет лок. переключатель решает рандом.
    В каком именно месте с помощью скрипта сбрасывать лок. переключатели? И как скрипт поймет, в каком именно событии я хочу их сбросить? Потому что помимо этих событий, возможно, будут и другие с использованием лок. переключателей.

    В идеале, лок. переключатели у объектов должны сброситься при входе в данж заново. Следовательно прописывать это надо там, но опять же. Как игра поймет, в каком именно событии переключатели сбрасываются? Особенно когда событий на карте дофига и они накопированы.
    Последний раз редактировалось Axel_Key; 07.09.2017 в 08:03.

  7. #7
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Сбрасывать в отдельном автоматическом событии.
    В идеале это событие должно быть с id = 1. Т.е. первое созданное.
    Сбрасывает эта команда в ивентах с id c 1 по 200.
    Потому что помимо этих событий, возможно, будут и другие с использованием лок. переключателей.
    Придется видимо использовать обычные переключатели. Вряд ли в рогалике их понадобится много.
    Ну или эти события делать с id выше 200. Ну или в команде указать меньше событий для сброса.
    Так например.
    PHP код:
    for (var i=0;15i++){$gameSelfSwitches.setValue([this._mapId,i,'A'], false)
    $gameSelfSwitches.setValue([this._mapId,i,'B'], false)
    $gameSelfSwitches.setValue([this._mapId,i,'C'], false)
    $gameSelfSwitches.setValue([this._mapId,i,'D'], false)

    Думай, ё моё. Универсальных решений нет.

  8. #8
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

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

  9. #9
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию

    Можно улучшить конструкцию.
    Благо в МВ есть пометки у событий
    Вписываешь что-то в поле около названия события, например reset
    А после применяешь, что-то такое где там тебе нужно.
    Код:
    for (var i=1;i < $dataMap.events.length; i++){
    if ($dataMap.events[i].note == 'reset'){
    $gameSelfSwitches.setValue([this._mapId,i,'A'], false)}
    }
    'A' заменяешь на другой лок. переключатель, если требуется.

    Перебор начинать с 0 не обязательно, и даже не желательно в данном случае. Все равно нулевого события не существует.
    Так же данный цикл будет проходиться по всем существующим событиям на карте, ни больше, ни меньше. И реагировать только на те, которые помечены нужным словом.
    Правда если есть какие-то плагины, которые тоже используют эти пометки и там будет что-то другое, то такой вариант не очень сработает и нужно делать все немного иначе.
    Последний раз редактировалось dirge; 07.09.2017 в 08:43.

  10. #10
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Твой код почему-то выдает ошибку при запуске игры. о3о''

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Как сбросить локальные переключатели событий?