Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Ресурсы, добыча и восстановление, без скриптов.

Ресурсы, добыча и восстановление, без скриптов. 7 года 1 мес. назад #97148

  • DyxEather
  • DyxEather аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 43
  • Спасибо получено: 20
Суть такая, появилась идея сделать добычу ресурсов и из восстановление без скриптов, восстанавливать через определенное время.
Например, есть куст с ягодами. При первом подходе к кустику персонаж собирает ягоды, куст становится обобранным и через, допустим 20 минут он восстанавливается.
Я знаю что есть скрипты на это, но решил сделать все это без скриптов, так сказать ванильными средствами. И вот думал как это отразится на игре?
Ну и собственно идея:
1. Создаем таймер на общих событиях. Я думаю многие знают как это сделать (а многие и сделали таймер на смену дня и ночи например).
2. К таймеру мы привязываем переключатель "обновление ресурсов", который включается раз в 20 минут отсчета (у меня например каждые 10 игровых дней).
3. Создаем событие "куст" (или любого другого ресурса). Внутри него настраиваем на добычу, условия и нужные моменты (текст, активаторы износа предмета для добычи если есть). И добавляем момент, который ВЫКЛЮЧАЕТ "обновление ресурсов". И включается внутренний переключатель.
4. Создаем вторую страницу события "куст" и там указываем, что оно активно только если внутренний выключатель включен. Создаем само событие, проверка выключателя "обновление ресурсов" и если он включен, то внутренний выключатель выключаем, что возвращает куст в изначальное "не собранное" состояние. При этом тут надо выставить "параллельный" запуск этого события.

Проблемы: Возможно залагивание игры если таких "параллельных" событий будет многог, я думаю решается это просто созданием малых областей. Если знаете как заставить событие срабатывать самому, то расскажите.
Последнее редактирование: 7 года 1 мес. назад от DyxEather.
Администратор запретил публиковать записи гостям.

Ресурсы, добыча и восстановление, без скриптов. 7 года 1 мес. назад #97153

  • Sypherot
  • Sypherot аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1239
  • Спасибо получено: 1044
  • Даритель СтимкеяОраторЗа 3 место на конкурсе маппингаПроект месяца 1 местоПроект месяца 3 место2 место 2 место ГотвПаладинПроект месяца 2 место
Идея: не изобретать велосипед, а использовать скрипт Falcao mmorpg alchemy, где и так есть сбор ресурсов, таймер их респавна, и все это дело без лагов.
Всего хорошего, и спасибо за рыбу
Администратор запретил публиковать записи гостям.

Ресурсы, добыча и восстановление, без скриптов. 7 года 1 мес. назад #97154

  • DyxEather
  • DyxEather аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 43
  • Спасибо получено: 20
Да, идея конечно хорошая, но такое решение создает некоторые нюансы и ограничения.
Администратор запретил публиковать записи гостям.

Ресурсы, добыча и восстановление, без скриптов. 7 года 1 мес. назад #97157

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Программист RubyУчительОраторПобедитель Сбитой кодировки2 место Готв
Написано без скриптов, но я все равно влезу, я же конь, читать не умею.
Не знаю чем топикстартера не устраивают скрипты, особенно учитывая, что тот же интерпретатор событий пользуется тем же кодом, так что вопрос будет не в производительности, или же будет в ресурсозатратах отдельно взятых скриптов.
Не знаю используемого мукера, но сути задумки не изменит. Из инструментов понадобилось бы - глобальный массив и глобальная переменная - таймер фреймов. При сборе ягод в массив сложим структуру, которая содержит время "регенерации", а так же идентификаторы карты, события и буквы собственного переключателя. В глобальном параллельном событии вести таймер, сортировать массив и выбирать все структуры, которые совпадают по времени, меняя собственные переключатели.
Соль в том, что если таймер не будет мукерской переменной, то перезапись такой переменной не вызовет обновления карты, для переопределения текущих страниц событий на карте. Обновление карты будет только при регенерации (поскольку меняется собственный переключатель, а в таком случае НЕОБХОДИМО обновление) и таким образом можно даже сделать оптимальнее, чем ивентами с постоянными перзаписями переменных и переключателей.
Единственный вопрос в сортированности события, который в общем то тоже решается не самыми сложными алгоритмами, а если регенерация всех ресурсов происходит через одинаковые промежутки времени, то это будет самая что ни на есть обычная очередь и все вопросы отпадут.
Но кто я такой, чтобы бороться с предрассудками.

P.S. один таймер на все события это хорошо, но тогда они будут восстанавливаться по таймеру, а не через фиксированное время. То бишь включился таймер в 1й день, на 10 обнова. Если обобрать куст на 9й день, то на 10 он уже срегенерировался.
Так же в твоем подходе есть проблема 2х карт. В обоих картах по кусту, оба собраны. Началась регенерация, ты в карте номер 1. Куст увидел переменную регенерации и отключил ее, предварительно срегенерировав. Ты идешь на вторую карту, но переключатель уже выключен, и куст на 2й карте не регенерирует.

P.P.S. Пытался покрыть все кейсы, но ни один нормально не покрыл. Реализация зависит от промежутка таймера, вариативности периодов регенерации и решения - регенерировать ли все сразу, или же для каждого события свой отсчет. Немного меняет логику, но инструментарий остается.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Последнее редактирование: 7 года 1 мес. назад от Amphilohiy.
Администратор запретил публиковать записи гостям.

Ресурсы, добыча и восстановление, без скриптов. 7 года 1 мес. назад #97160

  • DyxEather
  • DyxEather аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 43
  • Спасибо получено: 20
Amphilohiy пишет:
P.S. один таймер на все события это хорошо, но тогда они будут восстанавливаться по таймеру, а не через фиксированное время. То бишь включился таймер в 1й день, на 10 обнова. Если обобрать куст на 9й день, то на 10 он уже срегенерировался.
Так же в твоем подходе есть проблема 2х карт. В обоих картах по кусту, оба собраны. Началась регенерация, ты в карте номер 1. Куст увидел переменную регенерации и отключил ее, предварительно срегенерировав. Ты идешь на вторую карту, но переключатель уже выключен, и куст на 2й карте не регенерирует.
Да один таймер на все события, это проблема, но решаема... Например рандомными переменными в каждом событии.
Вторая проблема решается разделением выключателей на определенный тип ресурса и локализации ресурсов по карте. Например, в шахте 1 есть железо, а в шахте 2 только свинец, тогда регенерировать они будут одновременно.

Я бы использовал скрипты, но есть проблемы:
0. Я нашел скрипт только для Ace, а мне нужен для MV. О чем я собственно указал при создании темы значком.
1. Это их собственно использование. Если будет какая то бага, то тут ждать обновы или же копатся самому (я увы пока JS не знаю).
2. Коммерческое использование или же ограниченное использование чужих скриптов.
3. Скрипт который тут посоветовали имеет немного не тот функционал который нужен, а так же имеет лишнее.

Но основанная проблема все же в 0ом пункте =D
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.170 секунд