查看: 6498|回复: 3

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

[复制链接]
梦石
0
星屑
1049
在线时间
16 小时
注册时间
2013-1-23
回帖
3
发表于 2013-12-8 21:22:57 | 显示全部楼层 |阅读模式

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

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

×
许多日本游戏都可以依靠f5键改变游戏窗口大小 且放大后游戏画面不会变得模糊
例如:
QQ截图20131208211026.png
QQ截图20131208211034.png

也曾经找到过一些类似的脚本,但是效果都不理想
例如:
QQ截图20131208212050.png
QQ截图20131208212103.png

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

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2013-12-8 22:05:59 | 显示全部楼层
那些游戏用的是wolf editor不是rm,f5是wolf自带的功能.........

点评

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

使用道具 举报

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

贵宾

发表于 2013-12-8 22:12:37 | 显示全部楼层
本帖最后由 Sion 于 2014-1-15 23:12 编辑

这个试试
[pre lang="ruby" line="1"]# 按 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[/pre]

点评

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

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 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
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部