| 赞 | 91 |
| VIP | |
| 好人卡 | |
| 积分 | 104 |
| 经验 | |
| 最后登录 | 2024-6-24 |
| 在线时间 | 5019 小时 |
无限の剣制
- 梦石
- 0
- 星屑
- 10445
- 在线时间
- 5019 小时
- 注册时间
- 2013-2-28
- 回帖
- 4942
 
|
发表于 2014-10-30 16:46:41
|
显示全部楼层
Jousun 发表于 2014-10-30 16:32 
谢谢你,可以直接弄成默认放大 吗? - # 按 F5 可以放大缩小窗口,存档记录玩家的偏好
- class << Input
- @@ok_room = true
- alias_method :update_sion_zrscreen, :update
- def update
- Graphics.switch_room if @@ok_room || 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)
- @@ok_room = nil
- 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
复制代码 随意改的,未测试 |
|