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

Project1

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

[讨论] 一個VA的拉伸遊戲視窗腳本,想跟各位請教...

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
1730 小时
注册时间
2009-7-12
帖子
443
跳转到指定楼层
1
发表于 2012-9-26 21:40:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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


這是我在日站上翻到的一個腳本,來源:http://peachround.blog.fc2.com/blog-entry-20.html

作用在於插入遊戲後,於遊戲內按下F5會將遊戲視窗拉伸至兩倍大
跟擴展分辨率不太相同的是,他是將遊戲內畫面也跟著拉伸,有點像全屏化,但只是將畫面擴展為兩倍

我個人想將這個腳本也能使用在RGSS1上,該腳本放進XP也不會報錯,但就是沒有效果
本來想嘗試自己修改一翻,但這腳本似乎有動到API,而我對API整個一竅不通
膚淺的我想著API基本上三個版本的使用方法應該是不會差太多,所以我並沒有管這部分
我以為問題可能出在Graphic上,但開了RGSS3的F1,裡面似乎除了self.rgssplayer_resize這個語法外好像沒有其他改動
我有用本站上的某個腳本(找不到連結...),在RGSS1上模擬了RGSS2的效果,裡面也包含了上面那個語法

我個人覺得這個腳本十分有用,畢竟擴展分辨率後畫面實在卡的不行,只好用這種偽‧分辨率...
不強求各位高手弄出該腳本的XP板給我
但不知道有沒有人可以幫我解釋下該腳本的原理(尤其是前面API的部分,完全看不懂...)
謝謝各位了...

那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜

Lv1.梦旅人

梦石
0
星屑
100
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

2
发表于 2012-9-28 06:13:07 | 只看该作者
本帖最后由 凌童鞋 于 2012-9-28 06:14 编辑

大概跟48行获取hWnd的东西有关
  1. Win32API.new("user32", "FindWindow", "pp", "i").call("RGSS Player", 0)
复制代码
今天考完试帮你看看

点评

所以可能是在一開始沒有找到窗口所以導致接下來的效果都無法執行?  发表于 2012-9-29 16:15
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
发表于 2012-9-28 21:02:42 | 只看该作者
XP不能这样放大……XP这样放大不会拉伸貌似
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
1730 小时
注册时间
2009-7-12
帖子
443
4
 楼主| 发表于 2012-9-29 16:17:29 | 只看该作者
yangff 发表于 2012-9-28 21:02
XP不能这样放大……XP这样放大不会拉伸貌似

所以真的可能是Graphic的問題了?
但是全屏化的拉伸效果又是怎麼做到的呢……
網路上好像找不到Graphic的源碼…谷歌和百度都找不到
如果可以知道XP或VX的源碼,或許還可以依樣畫葫蘆了

点评

我覺得只是調整視窗位置和電腦本身的解析度....不過確切的我也不知道什麼原因就是了(汗  发表于 2013-7-25 09:49

那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

5
发表于 2012-9-29 20:40:39 | 只看该作者
serena718 发表于 2012-9-29 16:17
所以真的可能是Graphic的問題了?
但是全屏化的拉伸效果又是怎麼做到的呢……
網路上好像找不到Graphic的 ...

和这个没关系,只是XP和VX描绘方式的不同罢了。
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
589
在线时间
332 小时
注册时间
2011-11-19
帖子
194
6
发表于 2012-10-20 12:56:20 | 只看该作者
这个貌似好一点,但是只是分享或者对比一下你先试试吧。
RUBY 代码复制
  1. #给下面高度宽度赋值,就是分辨率的大小。
  2. 宽度=800 #1018
  3. 高度=600 #746
  4. 游戏ini名=".\\Game.ini"
  5. #============================================================================
  6. val = "\0"*256
  7. gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
  8. gps.call("Game", "Title", "", val, 256, 游戏ini名)
  9. title = val
  10. fw = Win32API.new('user32', 'FindWindow', %(p, p), 'i')
  11. hWnd = fw.call("RGSS Player", title)
  12. swp = Win32API.new('user32', 'SetWindowPos', %(l, l, i, i, i, i, i), 'i')
  13. ok = swp.call(hWnd, 0, 0, 0, 宽度, 高度, 2)
支持《彼岸之光》系列!加油!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 23:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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