Войти на сайт

Авторизация, ждите ...
×
  • Страница:
  • 1
  • 2

ТЕМА: Поиск пути

Поиск пути 11 года 5 мес. назад #61347

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовДаритель Стимкея2 место Программист Ruby2 место Сбитая кодировкаПереводчик
Еще один полезный скрипт от Khas, а именно поиск пути.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Как всегда, все пояснения в скрипте и в демо.

Вложенный файл:

Имя файла: Khaspathfinder.zip
Размер файла: 1,467 KB

чертова защита от флуда!
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 11 года 5 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Kolhe, DeadElf79, caveman, Демий, DarchanKaen, Wewander, VarVarKa

Поиск пути 11 года 5 мес. назад #61348

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Интересно.
Помниться, несколько лет назад на rm2k3 пару дней потратил чтобы сделать умную систему поиска пути на эвентах. Тактическую рпг делал. Даже получилось.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61349

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Писатель 3 местоОрганизатор конкурсовПрограммист RubyВетеран3 местоПроект месяца 2 местоУчитель1 место в ГотвПроект месяца 1 место
Стрелок, демку забыл))
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61350

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Зачем демка?
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61351

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Писатель 3 местоОрганизатор конкурсовПрограммист RubyВетеран3 местоПроект месяца 2 местоУчитель1 место в ГотвПроект месяца 1 место
strelokhalfer пишет:
Как всегда, все пояснения в скрипте и в демо
Колхе, только для того, чтобы этот текст не был ошибкой :)
Ну и мало ли, все равно бы вопрос задали.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61353

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовДаритель Стимкея2 место Программист Ruby2 место Сбитая кодировкаПереводчик
Ой, забыл
Добавил.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Щас еще Arc engine подгоню.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 11 года 5 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61355

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Допилите скрипт чтобы можно было в координаты значения переменных указывать. Тогда от него будет больше практической пользы)
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61356

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовДаритель Стимкея2 место Программист Ruby2 место Сбитая кодировкаПереводчик
Ну, это к пещернику или эльфу, но можно через условие обойти.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61357

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Писатель 3 местоОрганизатор конкурсовПрограммист RubyВетеран3 местоПроект месяца 2 местоУчитель1 место в ГотвПроект месяца 1 место
Колхе, это $game_variables[номер переменной] что ли?
Надеюсь, верно написал, давненько не работал с этим))
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61359

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Меня спрашиваешь? Я не знаю синтаксиса ruby, иначе бы сам переписал))
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61361

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Писатель 3 местоОрганизатор конкурсовПрограммист RubyВетеран3 местоПроект месяца 2 местоУчитель1 место в ГотвПроект месяца 1 место
Колхе, это был вопрос с намеком, что можно поставить при вызове скрипта)
Не успел демку посмотреть, надеюсь не ошибся и там вызов скрипта?
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61362

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Да, там вызов скрипта. В скобках указывается id события, которое будет двигаться, и координаты. Вот чтобы была возможность вместо координат запихивать значения переменных (как в формулах навыков, v[1], например).
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61363

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Писатель 3 местоОрганизатор конкурсовПрограммист RubyВетеран3 местоПроект месяца 2 местоУчитель1 место в ГотвПроект месяца 1 место
1.Создаем две переменные - Temp_X,Temp_Y; заносим в них данные о положении игрока, запоминаем их номера.
2.Вызываем скрипт с параметрами find_path(id ивента,$game_variables[номер Temp_X],$game_variables[номер Temp_Y]). Уточни в демке, как там этот find path вызывается, у меня руки все не доберутся.
3.Запусти и протестируй как оно работает.
4....
5. Профит! Не? :whistle:
Последнее редактирование: 11 года 5 мес. назад от DeadElf79. Причина: что-то с тегами было не так
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Kolhe

Поиск пути 11 года 5 мес. назад #61364

  • Kolhe
  • Kolhe аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 348
  • Спасибо получено: 171
  • 2 место
Лол. Ну да.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61365

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 3 местоОрганизатор конкурсовПроект месяца 2 местоПрограммист RubyРазработчик2 место ГотвПроект месяца 1 местоПроект года 1 местоУчительПаладин
добавьте в начало этот вариант
class Game_Interpreter
  def find_path_var(char,var_x,var_y,wait=false)
    find_path(char,$game_variables[var_x],$game_variables[var_y],wait)
  end
тогда сможете вызывать find_path проставив вместо координат id переменных, не парясь.

PS: надо бы сделать аналог на XP
PPS: гребаные 60 сек :angry:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, strelokhalfer

Поиск пути 11 года 5 мес. назад #61366

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовДаритель Стимкея2 место Программист Ruby2 место Сбитая кодировкаПереводчик
Обновил скрипт. В демке тоже.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61367

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 3 местоОрганизатор конкурсовПроект месяца 2 местоПрограммист RubyРазработчик2 место ГотвПроект месяца 1 местоПроект года 1 местоУчительПаладин
Было чуток времени, так что переделал скрипт под XP.

Потестил на довольно непростом пути (см демка) - находит :)

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Демка доступна по ссылке yadi.sk/d/ZZoISskz5qoDo .
Просто поговорите с Кошкой, и она подойдет к бочке.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61368

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Организатор конкурсовДаритель Стимкея2 место Программист Ruby2 место Сбитая кодировкаПереводчик
Ты лучше темой отдельной сделай. И почини паузу у Ace версии)
мне кажется, или XP этим скриптом дольше грузится?
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 11 года 5 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61369

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 3 местоОрганизатор конкурсовПроект месяца 2 местоПрограммист RubyРазработчик2 место ГотвПроект месяца 1 местоПроект года 1 местоУчительПаладин
(Ах, не заметил подфорум у этой темы) сделаю. Не знаю насчет дольше, у меня XP всегда не быстро грузилась, и отличий со скриптом и без я не заметил.
В Асе я дуб дубом, чтобы чинить паузу)))
Администратор запретил публиковать записи гостям.

Поиск пути 11 года 5 мес. назад #61371

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 3 местоОрганизатор конкурсовПроект месяца 2 местоПрограммист RubyРазработчик2 место ГотвПроект месяца 1 местоПроект года 1 местоУчительПаладин
  def find_path(char,fx,fy,wait=false)
    $game_map.refresh if $game_map.need_refresh
    character = get_character(char)
    return if character.nil?
    return unless Path_Core.runnable?(character,fx,fy)
    path = Path_Core.run(character,fx,fy)
    return if path.nil?
    route = RPG::MoveRoute.new
    route.repeat = false
    route.wait = wait
    route.skippable = true
    route.list = []
    path << 0x00
    path.each { |code| route.list << RPG::MoveCommand.new(code)}
    character.force_move_route(route)
    Fiber.yield while character.move_route_forcing if wait
  end

Fiber.yield while character.move_route_forcing if wait - вот эту строку вместо той, что была, поставь, и пауза будет работать.
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Модераторы: NeKotZima
Время создания страницы: 0.316 секунд