id тайла можно достать по $game_map.tile_id(x,y,z) придется поэксперементировать со значениями и нужные записать (насчет z сам не помню, потыкай наугад
).
Что касается задания последовательности движения, то я подсмотрел этот код в game_interpreter
#--------------------------------------------------------------------------
# * Set Move Route
#--------------------------------------------------------------------------
def command_205
$game_map.refresh if $game_map.need_refresh
character = get_character(@params[0])
if character
character.force_move_route(@params[1])
Fiber.yield while character.move_route_forcing if @params[1].wait
end
end
Тут нас интересует функция force_move_route класса событие, а именно входные параметры. Тоже придется эксперементировать.
Допустим, создай событие, задай ему повторяющуюся последовательность движений, перед этим вставив p @params[1] в скрипт, и так узнаешь входные параметры. (не забудь убрать)
Когда найдешь как задавать последовательность движения, можно будет создать глобальную функцию (по хорошему в модуль бы, но не суть). В ней будешь просчитывать весь маршрут и передовать событию. Само же событие должно запуститься 1 раз с использованием твоей функции
Что еще нужно... Когда используешь скрипт через событие ID онного можно найти в @event_id, но само событие придется брать через карту $game_maps.events[id]
Должно хватить. Если что упустил или где наложал сообщи