Войти на сайт

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

ТЕМА: Создаем опцию по смене разрешения в игре на лету.

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70577

  • greyf24
  • greyf24 аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 65
  • Спасибо получено: 34
Итак, как и обещал - вот гайд. Просьба к модераторам закрепить топик, чтобы не потерялся.


Важный момент. Я подчеркиваю, что речь идет не об увеличении максимального разрешения вообще, для этого есть свои способы (взломанная ДЛЛ, скрипты), а о том, как создать в самой игре опцию по изменению разрешения.

Требования: разрешение в вашей игре должно прописываться командой Graphics.resize_screen(х,у).
Это может быть как ДЛЛка, так и скрипт, или даже у вас может не быть ни того ни другого - тогда вы сможете менять разрешение до 640*480 включительно. Способ работать будет все равно.

Итак, приступаем.

1. Открываем Скрипт Эдитор.
2. Заходим в скрипт Window_TitleCommand
3. Ищем участок кода
def make_command_list
    add_command(Vocab::new_game, :new_game)
    add_command(Vocab::continue, :continue, continue_enabled)
    add_command(Vocab::shutdown, :shutdown)
end

это наше стартовое меню. Меняем его на
def make_command_list
    add_command(Vocab::new_game, :new_game)
    add_command(Vocab::continue, :continue, continue_enabled)
    add_command("800*600", :Res800x600)
    add_command("1024*768", :Res1024x768)
    add_command("1024*600", :Res1024x600)
    add_command(Vocab::shutdown, :shutdown)
end

После этого у нас в меню появятся пункты с новыми разрешениями (цифры подставляете свои)

4. Далее ищем скрипт Scene_Title (он немного ниже).
5. В этом скрипте ищем участок кода
def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.set_handler(:continue, method(:command_continue))
    @command_window.set_handler(:shutdown, method(:command_shutdown))
  end
Он отвечает за действия, которые предпринимает игра при выборе любого пункта стартового меню
Меняем этот код на
def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:new_game, method(:command_new_game))
    @command_window.set_handler(:continue, method(:command_continue))
    @command_window.set_handler(:Res800x600, method(:command_800600))
    @command_window.set_handler(:Res1024x768, method(:command_1024768))
    @command_window.set_handler(:Res1024x600, method(:command_1024600))
    @command_window.set_handler(:shutdown, method(:command_shutdown))
  end

Тем самым мы указываем игре при выборе пунктов с разными разрешениями задействовать соответствующие им процедуры. Однако самих процедур еще нет.

6. Ищем участок кода
def command_continue
    close_command_window
    SceneManager.call(Scene_Load)
  end
Теперь НИЖЕ НЕГО вставляем
  def command_800600
    Graphics.resize_screen(800,600)
    close_command_window
    create_command_window
  end
  def command_1024768
    Graphics.resize_screen(1024,768)
    close_command_window
    create_command_window
  end
  def command_1024600
    Graphics.resize_screen(1024,600)
    close_command_window
    create_command_window
  end

Каждая из этих трех процедур меняет разрешение и заново пересоздает стартовое меню.

Все, у нас появились пункты меню с новыми разрешениями.



По поводу окон.
Из-за индивидуальных разрешений другие окна приходится подгонять. на данном этапе разработки я не столкнулся с этой проблемой, когда разрешение увеличивается, окна в разделе персонажа, инвентарь и тд остаются на своих местах в тех же пропорциях. Только размеры становятся больше.
Если столкнусь с проблемами - буду описывать, как я их решал.
Последнее редактирование: 9 года 9 мес. назад от Cerberus. Причина: поместил куски кода под теги
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, Dprizrak1

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70581

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

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70582

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

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


(специально сократил все скрипты до максимально простого)

Прошу дописать про это и прикрепить демку, по возможности))
Последнее редактирование: 9 года 9 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70584

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

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70585

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

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70586

  • greyf24
  • greyf24 аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 65
  • Спасибо получено: 34
Cerberus пишет:
Эльф, сказано же вроде: без дополнительного скрипта и без хакнутой dll больше чем 640x480 не сделать.

Неверно. Без скрипта ИЛИ длл. Надо ИЛИ то, ИЛИ другое. Я выбрал скрипт, потому что длл-ку нельзя юзать в коммерческой игре.
Администратор запретил публиковать записи гостям.

Создаем опцию по смене разрешения в игре на лету. 9 года 9 мес. назад #70587

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