Показано с 1 по 10 из 10

Тема: Множество таймеров, или их аналог

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Множество таймеров, или их аналог

    Всем доброго времени суток, рад снова быть с вами! Кто знает - хорошо, кто нет - еще успеем познакомиться

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

    Например, если мы срубили дерево на локации А и до его следующего сруба надо ждать 10 минут, то при переходе на локацию Б и обратно таймер бы не сбрасывался на 0, а продолжал отсчет, даже когда игрок находится на другой локации)

  2. #2
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,776
    Записей в дневнике
    34
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    Заюзать общие события
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

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

    По умолчанию

    Привет, Осколок!
    Цитата Сообщение от Paranoid Посмотреть сообщение
    Заюзать общие события
    Никаких общих событий. 4-5 параллелок и игра встанет.

    Есть скрипт Галва.
    http://galvs-scripts.com/2013/02/23/respawn-timer/

    Есть скрипт Пещерного
    http://rpgmaker.su/f26/time-management-2143/

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

  4. #4

    По умолчанию

    Цитата Сообщение от peter8031983 Посмотреть сообщение
    Привет, Осколок!

    Никаких общих событий. 4-5 параллелок и игра встанет.

    Есть скрипт Галва.
    http://galvs-scripts.com/2013/02/23/respawn-timer/

    Есть скрипт Пещерного
    http://rpgmaker.su/f26/time-management-2143/

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

    Честно, мне подойдет любой, самый рациональный способ..
    Количество переменных не проблема, сколько их там максимально в редакторе 5? 6? тысяч...)
    Главный пункт решения, это корректный отсчет
    Чтобы скажем не было такого игрового бага, что игрок срубает одно и тоже редкое дерево раз в минуту, вместо 10 минут.. только потому, что переходит из одной локи в другую и обратно..
    Или скажем путем сохранения и загрузки)

    Я всячески стараюсь просчитать ум и креативность "русских" игроков, чтобы те играли честно

    P.S. Насчет множества параллельных событий... Не знаю, возможно мой комп слишком мощный, но сколько бы (а именно пока что 23) я не лепил параллельных событий, будь то общих или локальных.. игра у меня не тормозила..
    Надо будет как-нибудь протестировать на маломощных машинах.. или возможно все дело в функционале этих событий?
    Последний раз редактировалось soulshard; 08.08.2015 в 00:39.

  5. #5
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,776
    Записей в дневнике
    34
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от peter8031983 Посмотреть сообщение
    Никаких общих событий. 4-5 параллелок и игра встанет.
    Можно было бы одно событие сделать с кучей проверок разных переменных.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  6. #6
    Познающий Аватар для Klon
    Информация о пользователе
    Регистрация
    23.04.2008
    Сообщений
    526
    Записей в дневнике
    11
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Paranoid Посмотреть сообщение
    Можно было бы одно событие сделать с кучей проверок разных переменных.
    И позже столкнулись бы с проблемой отставания таймеров

    Заходи на чаёк

  7. #7
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    По умолчанию

    Сделать дему тестирующий компьютеры на производительность.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

  8. #8

    По умолчанию

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


    По сути темы, вот мой вариант.. он несколько извращенный, но мне кажется вполне рабочим))

    В игре есть функция (playtime) ее главная задача отсчитывать общее время игры
    Она показывает его например при загрузке сохранения

    Стандартный код:
    Код:
     #--------------------------------------------------------------------------
      # * Get Play Time in Character String
      #--------------------------------------------------------------------------
      def playtime_s
        hour = playtime / 60 / 60
        min = playtime / 60 % 60
        sec = playtime % 60
        sprintf("%02d:%02d:%02d", hour, min, sec)
      end
    Однако сама переменная (playtime) не юзабельна (проверял), поэтому поднимаемся на пункт выше, где высчитывается эта самая переменная:
    Код:
    #--------------------------------------------------------------------------
      # * Get Play Time in Seconds
      #--------------------------------------------------------------------------
      def playtime
        Graphics.frame_count / Graphics.frame_rate
      end
    В ивенте "нашего дерева" с помощью команды (выполнить скрипт) мы пишем:
    Код:
    $game_variables[10] = Graphics.frame_count / Graphics.frame_rate
    Тем самым запихивая количество секунд с начала игры в переменную 10.

    Далее, при первом нажатии на "дерево" переменная 10 будет равна скажем 50 (секундам с начала игры) (значение playtime)
    Собрали дерево ====
    После этого установим мнимый таймер на 10 минут до следующего сбора, для этого введем переменную 11 со значением var10+600 (10*60 секунд)
    При повторном нажатии на ивент, идет проверка переменной 10
    var10 >= var11 ?
    Если да, то возврат к началу и повторный сбор, если нет - завершить выполнение

    P.S. Хоть данный вариант и кушает (1) переменную на событие, однако он совершенно не параллелен и работает даже при переходе на другую локацию или загрузке сохранения))

    Вообще у меня была похожая идея связать респаун со скриптом на время.. Но, как вам такой вариант?)

    P.P.S. Создал демку, для наглядности моего варианта, заменил "дерево" на кнопки
    Добавил 3 варианта анимации возврата нажатой кнопки к исходному состоянию, данный эффект можно использовать скажем для фермы (будет показан процесс созревания ваших кабачков )
    https://yadi.sk/d/2mKgaWGQiLKmo
    Последний раз редактировалось soulshard; 08.08.2015 в 05:22. Причина: Добавил демо версию

  9. #9
    Познающий Аватар для Klon
    Информация о пользователе
    Регистрация
    23.04.2008
    Сообщений
    526
    Записей в дневнике
    11
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    4-5 параллелок и игра встанет.
    Кошмар...

    Заходи на чаёк

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

    По умолчанию

    Цитата Сообщение от Klon Посмотреть сообщение
    Кошмар...
    Ну может и от большего количества.


    Эх... Лень мне подробный урок писать. Вымотался сегодня.
    По сути темы, вот мой вариант.. он несколько извращенный, но мне кажется вполне рабочим))
    Работает. Но каждое событие включает парралелку. А это ни есть гуд. Сделай лес или ферму полную таких событий и тогда игра точно ляжет.
    Я просто брал две переменные. На проверку времени. И пихал их в "Автономное движение".
    $game_variables[102]=$game_system.playtime-$game_variables[101]
    А потом делал доп вкладки, запускающиеся от определенного значения переменной.
    Тем самым избавляясь от параллелок.

    Короче вот демка. Делал для Лорда ферму. Но можно на что угодно использовать. На гаснущий костер или респавн монстров.
    Надеюсь разберешься. Как и в твоем варианте на каждое событие нужна отдельная переменная.
    https://yadi.sk/d/eAlJHHowiNgtQ

    Ах да.... Овощи в примере растут 15 минут.

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

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

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

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

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

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

Ваши права

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