Войти на сайт

Авторизация, ждите ...
×

ТЕМА: [VX Ace] Случайное перемещение эвентов

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62874

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Потребовалось мне на одном из этапов игры перемещать эвенты случайным образом. Да не просто перемещать захотелось, а прыжками, для пущей эффектности.
Сделать это эвентами, как я подозреваю, невозможно в принципе - нельзя прыгнуть в случайную точку. Посему - прошу любить и жаловаться :)
Что умеет скрипт:
  • Как уже было сказано - заставлять эвенты на карте с определённой периодичностью прыгать с клетки на клетку. При этом не попадать ни друг на друга, ни на героя.
  • При этом не все сразу, а только эвенты из произвольно заданного списка.
  • И более того - с периодичностью в N кадров, где N также произвольно.
Запуск скрипта:
Event_Shuffle.start([список-эвентов],период,[список-тэгов])
Где:
  • список-эвентов - перечень номеров эвентов, которые должны прыгать
  • период - интервал между прыжками в кадрах (60 кадров = 1 секунда)
  • список-тэгов - необязательный параметр, задаёт список тэгов, на которых может "приземлиться" эвент. Внимание! Если места с такими тэгами мало или передан пустой список (короче, если для очередного эвента не хватит места) - скрипт зависнет!
Остановка, соответственно:
Event_Shuffle.stop

На нециклической карте эвенты начинают жаться к стенкам и по углам (в ходе теста в один угол забились аж четыре призрака - поручик, молчать! :D) - чуть позже это исправлю (уже знаю, как). На циклической всё работает как положено.
Собственно скрипт:
=begin
  Скрипт, который случайным образом перебрасывает эвенты по карте
  Автор: Cerberus
=end
 
module Event_Shuffle
 
  @events = nil
  @shuffling = false
  @x = @y = nil
  @x_to = @y_to = nil
  @freq = nil
  @turns = nil
  @tags = []
 
  def self.start(events, frequency, tags=nil)
    stop if @shuffling
    @shuffling = true
    @freq = frequency
    @turns = 1
    @events = events
    @tags = Array.new(64) {|i| i } 
    @tags = tags unless tags==nil
  end
 
  def self.turn
    return unless @shuffling
    @turns -= 1
    return unless @turns==0
    @turns = @freq
    @events.each do |i|
      next if $game_map.events[i].nil?
      @correct = false
      until @correct do
        @correct = true
        if $game_map.loop_horizontal?
          @x = rand($game_map.width) - $game_map.width / 2
        else
          @x = rand(2 * [$game_map.events[i].x, $game_map.width - $game_map.events[i].x].min) - [$game_map.events[i].x, $game_map.width - $game_map.events[i].x].min
        end
        if $game_map.loop_vertical?
          @y = rand($game_map.height) - $game_map.height / 2
        else
          @y = rand(2 * [$game_map.events[i].y, $game_map.height - $game_map.events[i].y].min) - [$game_map.events[i].y, $game_map.height - $game_map.events[i].y].min
        end
        @x_to = $game_map.events[i].x + @x
        @y_to = $game_map.events[i].y + @y
        @correct = false unless @tags.include?($game_map.terrain_tag(@x_to, @y_to))
        for j in (1..$game_map.events.size) do
          next if $game_map.events[j].nil?
          correct = false if ($game_map.events[j].x == @x_to && $game_map.events[j].y == @y_to)
        end
        correct = false if ($game_player.x == @x_to && $game_player.y == @y_to)
      end
      $game_map.events[i].jump(@x, @y)
    end
  end
 
  def self.stop
    @events = nil
    @shuffling = false
    @x = @y = nil
    @x_to = @y_to = nil
    @freq = nil
    @turns = nil
    @tags = []
  end
 
end
 
class Scene_Base
 
  alias event_shuffle_update update
 
  def update
    Event_Shuffle.turn
    event_shuffle_update
  end
 
end
 
class Scene_Map < Scene_Base
 
  alias event_shuffle_pre_transfer pre_transfer
 
  def pre_transfer
    Event_Shuffle.stop
    event_shuffle_pre_transfer 
  end
end
Жуть болотная, на лапках, в тапках и с пулемётом...
Последнее редактирование: 10 года 9 мес. назад от Cerberus.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Lekste, DeadElf79, CreepyPasta

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62875

  • Kian Ni
  • Kian Ni аватар
  • Вне сайта
  • Заблокирован
  • Я души кушаю людей.
  • Сообщений: 1247
  • Спасибо получено: 412
Модератор модератором, а правило оформления нарушил:D
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62877

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Олик, теперь доволен? ;)
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62879

  • Kian Ni
  • Kian Ni аватар
  • Вне сайта
  • Заблокирован
  • Я души кушаю людей.
  • Сообщений: 1247
  • Спасибо получено: 412
Нет. Не указана версия мейкера:D
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62880

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Раздела, в котором скрипт выложен (а именно RGSS3) мало? ;) Впрочем, действительно есть резон.
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

Случайное перемещение эвентов 10 года 9 мес. назад #62881

  • Kian Ni
  • Kian Ni аватар
  • Вне сайта
  • Заблокирован
  • Я души кушаю людей.
  • Сообщений: 1247
  • Спасибо получено: 412
Эм, я вообще никогда не обращая внимание на разделы, привычка флудера как бы:D
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62890

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвВетеранРазработчикТестерПисатель 2 местоУчитель3 место Готв3 место
Эх... А я помнится делал это всё с помощью ивентов... ХД
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62898

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Демий, да неужто? Не затруднит показать наработки? Самому прямо интересно, как это возможно!
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62924

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвВетеранРазработчикТестерПисатель 2 местоУчитель3 место Готв3 место
Покажу потом наработки, если найду... Ну конечно, всё было не так идеально как у тебя в скрипте, но в принципе примерно так.
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62928

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Буду ждать :)
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #62941

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвВетеранРазработчикТестерПисатель 2 местоУчитель3 место Готв3 место
Блин... Удалил я наработки те... Ну ни чего, если есть терпение, то когда закончу с текущим проектом, сделаю снова всё... Но понадобится время(хотя бы до момента релиза демки моей игры...ХД)
Последнее редактирование: 10 года 9 мес. назад от Демий.
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 9 мес. назад #63123

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвВетеранРазработчикТестерПисатель 2 местоУчитель3 место Готв3 место
Вот я дурак не внимательный! Только сейчас углядел, что речь идет именно о прыжках... А тут наверно да, без скриптов ни как, разве что сделать имитацию прыжков...
Последнее редактирование: 10 года 9 мес. назад от Демий.
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 10 года 1 мес. назад #68114

  • Sleeping Visitor
  • Sleeping Visitor аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 78
  • Спасибо получено: 28
демку бы
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 9 года 1 мес. назад #79735

  • CreepyPasta
  • CreepyPasta аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 53
  • Спасибо получено: 4
Ошибка :cry: :cry:
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 9 года 1 мес. назад #79736

  • soulshard
  • soulshard аватар
  • Вне сайта
  • Мастер
  • Сообщений: 132
  • Спасибо получено: 64
По идее все всегда можно сделать 2 способам - долгим,но легким или трудным, но быстрым.
Также и тут со скриптами или же на ивентах. Долгое время работы с инветами, я понял, что с ними возможно все, было бы желание и правильный ход мыслей..

Вот примерная демка тык-тык
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 9 года 1 мес. назад #79766

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Крипи, номер - не 040 и 008, а 40 и 8.
Соул, сейчас гляну демку, мне уже интересно, как ты это провернул...
upd: посмотрел. Да, я не спорю, так тоже сделать вполне реально. Правда, мало кто захочет писать по двадцать условий на каждую координату.
Жуть болотная, на лапках, в тапках и с пулемётом...
Последнее редактирование: 9 года 1 мес. назад от Cerberus.
Администратор запретил публиковать записи гостям.

[VX Ace] Случайное перемещение эвентов 9 года 1 мес. назад #79773

  • zmeelov66
  • zmeelov66 аватар
  • Вне сайта
  • Светлый дракон
  • Патологический бездельник ^_^
  • Сообщений: 504
  • Спасибо получено: 369
  • 2 место ГотвПроект месяца 3 место
Церб, а отметить регионами все места куда нам нельзя тепатся, а потом забить рандомные координаты, проверить их регион и значение ивента на них, и потом, если и то, и другое 0 - тепнуть, не?
З.Ы:Извини, если я неправильно уловил суть задачи))
Последнее редактирование: 9 года 1 мес. назад от zmeelov66.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer

[VX Ace] Случайное перемещение эвентов 9 года 1 мес. назад #79774

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • 3 место ГотвПрограммист JavaScript Организатор конкурсовПисатель 3 место3 место2 место Сбитая кодировкаПроект месяца 1 место2 место Победитель Сбитой кодировкиПроект месяца 2 место
Змеелов, проблема в том, что телепорт по переменным сделать можно, а вот прыжок - нельзя. Так-то всё правильно :)
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.236 секунд