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

Больше
11 года 10 мес. назад - 11 года 10 мес. назад #70577 от greyf24
Итак, как и обещал - вот гайд. Просьба к модераторам закрепить топик, чтобы не потерялся.


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

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

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

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

это наше стартовое меню. Меняем его на
Code:
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. В этом скрипте ищем участок кода
Code:
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
Он отвечает за действия, которые предпринимает игра при выборе любого пункта стартового меню
Меняем этот код на
Code:
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. Ищем участок кода
Code:
def command_continue close_command_window SceneManager.call(Scene_Load) end
Теперь НИЖЕ НЕГО вставляем
Code:
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

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

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



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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
11 года 10 мес. назад #70581 от Cerberus
Перебросил в Академию, насчёт прикрепления - под вопросом.

Жуть болотная, на лапках, в тапках и с пулемётом...
Спасибо сказали: AnnTenna, DeadElf79

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 10 мес. назад - 11 года 10 мес. назад #70582 от DeadElf79
А теперь можно описание, как сделать так, что resize_screen принимал эти значения на самом деле?

ВНИМАНИЕ: Спойлер!


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

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
11 года 10 мес. назад #70584 от Cerberus
Эльф, сказано же вроде: без дополнительного скрипта и без хакнутой dll больше чем 640x480 не сделать.

Жуть болотная, на лапках, в тапках и с пулемётом...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
11 года 10 мес. назад #70585 от DeadElf79
о, прошу прощения, читал скрипты, а не текст))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 10 мес. назад #70586 от greyf24

Cerberus пишет: Эльф, сказано же вроде: без дополнительного скрипта и без хакнутой dll больше чем 640x480 не сделать.


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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
11 года 10 мес. назад #70587 от Cerberus
Я не очень удачно выразился, но имел в виду именно это, да: что если нет одного и нет другого, то не получится.

Жуть болотная, на лапках, в тапках и с пулемётом...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.100 секунд
Работает на Kunena форум