许多日本游戏都可以依靠f5键改变游戏窗口大小 且放大后游戏画面不会变得模糊 例如: 论坛上改分辨率的脚本也尝试过了,虽然效果很好 但是玩家无法自已改变窗口大小 很困扰。 请问大家有没有可以利用f5键或其它快 ...
# 按 F5 可以放大缩小窗口,存档记录玩家的偏好class << Input alias_method :update_sion_zrscreen, :update def update Graphics.switch_room if trigger?(:F5) update_sion_zrscreen endendclass << Graphics FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'i') GetSysMtr = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i') KeybdEvent = Win32API.new('user32', 'keybd_event', 'iill', 'v') SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'liiiiip', 'i') HWnd = FindWindowEx.call(0, 0, 'RGSS Player', 0) # def switch_room zoom($game_system.zoom_rate == 2 ? 1 : 2) end def zoom(rate) $game_system.zoom_rate = rate __zoom__(width * rate, height * rate) end def reset SetWindowPos.call(HWnd, 0, 0, 0, GetSysMtr.call(0), GetSysMtr.call(1), 0) end # def full_screen __toggle__ if GetSysMtr.call(0) > 640 end def windowed __toggle__ if GetSysMtr.call(0) < 640 endprivate def __zoom__(w, h) w += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 h += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 + GetSysMtr.call(4) x = [0, GetSysMtr.call(0) - w].max / 2 y = [0, GetSysMtr.call(1) - h].max / 2 SetWindowPos.call(HWnd, 0, x, y, w, h, 0) end def __toggle__ KeybdEvent.call(0xA4, 0, 0, 0) KeybdEvent.call(0x0D, 0, 0, 0) KeybdEvent.call(0x0D, 0, 2, 0) KeybdEvent.call(0xA4, 0, 2, 0) endend class Game_System attr_accessor :zoom_rate alias_method :on_after_load_sion_zrscreen, :on_after_load def on_after_load Graphics.zoom(@zoom_rate || 1) on_after_load_sion_zrscreen endend
# 按 F5 可以放大缩小窗口,存档记录玩家的偏好 class << Input alias_method :update_sion_zrscreen, :update def update Graphics.switch_room if trigger?(:F5) update_sion_zrscreen end end class << Graphics FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'i') GetSysMtr = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i') KeybdEvent = Win32API.new('user32', 'keybd_event', 'iill', 'v') SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'liiiiip', 'i') HWnd = FindWindowEx.call(0, 0, 'RGSS Player', 0) # def switch_room zoom($game_system.zoom_rate == 2 ? 1 : 2) end def zoom(rate) $game_system.zoom_rate = rate __zoom__(width * rate, height * rate) end def reset SetWindowPos.call(HWnd, 0, 0, 0, GetSysMtr.call(0), GetSysMtr.call(1), 0) end # def full_screen __toggle__ if GetSysMtr.call(0) > 640 end def windowed __toggle__ if GetSysMtr.call(0) < 640 end private def __zoom__(w, h) w += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 h += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 + GetSysMtr.call(4) x = [0, GetSysMtr.call(0) - w].max / 2 y = [0, GetSysMtr.call(1) - h].max / 2 SetWindowPos.call(HWnd, 0, x, y, w, h, 0) end def __toggle__ KeybdEvent.call(0xA4, 0, 0, 0) KeybdEvent.call(0x0D, 0, 0, 0) KeybdEvent.call(0x0D, 0, 2, 0) KeybdEvent.call(0xA4, 0, 2, 0) end end class Game_System attr_accessor :zoom_rate alias_method :on_after_load_sion_zrscreen, :on_after_load def on_after_load Graphics.zoom(@zoom_rate || 1) on_after_load_sion_zrscreen end end
折叠内容标题(非必须)
折叠内容
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-17 06:25
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.