设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5502|回复: 3
打印 上一主题 下一主题

[已经解决] 如何利用f5改变游戏窗口大小?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
1049
在线时间
16 小时
注册时间
2013-1-23
帖子
4
跳转到指定楼层
1
发表于 2013-12-8 21:22:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
许多日本游戏都可以依靠f5键改变游戏窗口大小 且放大后游戏画面不会变得模糊
例如:



也曾经找到过一些类似的脚本,但是效果都不理想
例如:



论坛上改分辨率的脚本也尝试过了,虽然效果很好 但是玩家无法自已改变窗口大小 很困扰。
请问大家有没有可以利用f5键或其它快捷键改变窗口的方法呢?

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2013-12-8 22:05:59 | 只看该作者
那些游戏用的是wolf editor不是rm,f5是wolf自带的功能.........

点评

wolf因为无法使用中文放弃了,没想到有这种功能 感谢解答(鞠躬)  发表于 2013-12-8 22:37
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

3
发表于 2013-12-8 22:12:37 | 只看该作者
本帖最后由 Sion 于 2014-1-15 23:12 编辑

这个试试
RUBY 代码复制
  1. # 按 F5 可以放大缩小窗口,存档记录玩家的偏好
  2. class << Input
  3.   alias_method :update_sion_zrscreen, :update
  4.   def update
  5.     Graphics.switch_room if trigger?(:F5)
  6.     update_sion_zrscreen
  7.   end
  8. end
  9. class << Graphics
  10.   FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'i')
  11.   GetSysMtr    = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')
  12.   KeybdEvent   = Win32API.new('user32', 'keybd_event', 'iill', 'v')
  13.   SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'liiiiip', 'i')
  14.   HWnd = FindWindowEx.call(0, 0, 'RGSS Player', 0)
  15.   #
  16.   def switch_room
  17.     zoom($game_system.zoom_rate == 2 ? 1 : 2)
  18.   end
  19.   def zoom(rate)
  20.     $game_system.zoom_rate = rate
  21.     __zoom__(width * rate, height * rate)
  22.   end
  23.   def reset
  24.     SetWindowPos.call(HWnd, 0, 0, 0, GetSysMtr.call(0), GetSysMtr.call(1), 0)
  25.   end
  26.   #
  27.   def full_screen
  28.     __toggle__ if GetSysMtr.call(0) > 640
  29.   end
  30.   def windowed
  31.     __toggle__ if GetSysMtr.call(0) < 640
  32.   end
  33. private
  34.   def __zoom__(w, h)
  35.     w += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2
  36.     h += (GetSysMtr.call(5) + GetSysMtr.call(45)) * 2 + GetSysMtr.call(4)
  37.     x = [0, GetSysMtr.call(0) - w].max / 2
  38.     y = [0, GetSysMtr.call(1) - h].max / 2
  39.     SetWindowPos.call(HWnd, 0, x, y, w, h, 0)
  40.   end
  41.   def __toggle__
  42.     KeybdEvent.call(0xA4, 0, 0, 0)
  43.     KeybdEvent.call(0x0D, 0, 0, 0)
  44.     KeybdEvent.call(0x0D, 0, 2, 0)
  45.     KeybdEvent.call(0xA4, 0, 2, 0)
  46.   end
  47. end
  48.  
  49. class Game_System
  50.   attr_accessor :zoom_rate
  51.   alias_method :on_after_load_sion_zrscreen, :on_after_load
  52.   def on_after_load
  53.     Graphics.zoom(@zoom_rate || 1)
  54.     on_after_load_sion_zrscreen
  55.   end
  56. end

点评

今周无时间尝试了 不过还是感谢提供脚本(鞠躬)  发表于 2013-12-8 22:38
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22958
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
4
发表于 2013-12-8 23:09:09 | 只看该作者
  1. #==============================================================================
  2. # ★ RGSS3-Extension
  3. # LNX25_ゲーム画面倍率切替
  4. #  ゲーム中、F5 キーでゲーム画面の表示倍率を切り替えます。
  5. #
  6. #  version   : 1.00 (12/02/27)
  7. #  author    : ももまる
  8. #  reference : [url]http://peachround.blog.fc2.com/blog-entry-20.html[/url]
  9. #
  10. #==============================================================================

  11. module LNX25
  12.   #--------------------------------------------------------------------------
  13.   # ● 切替キー
  14.   #--------------------------------------------------------------------------
  15.   RESIZE_KEY = :F5 # 規定値: :F5
  16. end

  17. #==============================================================================
  18. # ■ LNXスクリプト導入情報
  19. #==============================================================================
  20. $lnx_include = {} if $lnx_include == nil
  21. $lnx_include[:lnx25] = 100 # version
  22. p "OK:LNX25_ウィンドウサイズ変更"

  23. #==============================================================================
  24. # ■ Graphics
  25. #==============================================================================
  26. module Graphics
  27.   @screen_zoom = 1
  28.   #--------------------------------------------------------------------------
  29.   # ● ゲーム画面の表示倍率取得
  30.   #--------------------------------------------------------------------------
  31.   def self.screen_zoom
  32.     @screen_zoom
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● ゲーム画面の表示倍率変更
  36.   #--------------------------------------------------------------------------
  37.   def self.screen_zoom=(rate)
  38.     self.rgssplayer_resize(rate)
  39.     @screen_zoom = rate
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● ウィンドウハンドルの取得(Win32API)
  43.   #--------------------------------------------------------------------------
  44.   def self.rgssplayer
  45.     Win32API.new("user32", "FindWindow", "pp", "i").call("RGSS Player", 0)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● ウィンドウのリサイズ(Win32API)
  49.   #--------------------------------------------------------------------------
  50.   def self.rgssplayer_resize(rate)
  51.     move_w = Win32API.new("user32", "MoveWindow", "liiiil", "l")
  52.     get_sm = Win32API.new("user32", "GetSystemMetrics", "i", "i")
  53.     # サイズ計算
  54.     frame_w   = get_sm.call(7) * 2 # ウィンドウ枠(横方向)
  55.     frame_h   = get_sm.call(8) * 2 # ウィンドウ枠(縦方向)
  56.     caption_h = get_sm.call(4)     # タイトルバーの高さ
  57.     width  = self.width  * rate + frame_w
  58.     height = self.height * rate + frame_h + caption_h
  59.     x = (get_sm.call(0) - width ) / 2
  60.     y = (get_sm.call(1) - height) / 2
  61.     # ウィンドウ位置・サイズ変更(ウィンドウ, X, Y, 幅, 高さ, 更新フラグ)
  62.     move_w.call(self.rgssplayer, x, y, width, height, 1)
  63.   end
  64. end
  65. class << Graphics
  66.   #--------------------------------------------------------------------------
  67.   # ● フレーム更新
  68.   #--------------------------------------------------------------------------
  69.   alias :lnx25_update :update
  70.   def update
  71.     # 元のメソッドを呼ぶ
  72.     lnx25_update
  73.     # F5 キーが押されたらリサイズ
  74.     if Input.trigger?(LNX25::RESIZE_KEY)
  75.       self.screen_zoom = (self.screen_zoom == 1 ? 2 : 1)
  76.     end
  77.   end
  78. end
复制代码

点评

例二用的就是这个脚本…  发表于 2013-12-9 12:55
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 06:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表