Project1
标题:
游戏中使画面全屏脚本
[打印本页]
作者:
创造达人
时间:
2013-2-8 09:24
标题:
游戏中使画面全屏脚本
可以使画面变成全屏
而且比系统原来的全屏好一些
直接插入main前面
[quote] # 全屏脚本by yayapipi
# 解释 :
#这个脚本比原来的全屏模式更好
# 使用方法 :
# Graphics.fullscreen? : 回到全屏
# Graphics.fullscreen_mode : 进入全屏.
# Graphics.windowed_mode : 窗口模式
# Graphics.toggle_fullscreen : 从一个切换到其他
class << Graphics
fullscreen_start = false
FindWindow = Win32API.new('user32', 'FindWindow' , 'pp' , 'l')
CreateWindowEx = Win32API.new('user32', 'CreateWindowEx' , 'lpplllllllll', 'l')
UpdateWindow = Win32API.new('user32', 'UpdateWindow' , 'l' , 'l')
ShowWindow = Win32API.new('user32', 'ShowWindow' , 'll' , 'l')
SetWindowLong = Win32API.new('user32', 'SetWindowLong' , 'lll' , 'l')
SetWindowPos = Win32API.new('user32', 'SetWindowPos' , 'lllllll' , 'l')
GetSystemMetrics = Win32API.new('user32', 'GetSystemMetrics', 'l' , 'l')
GetDC = Win32API.new('user32', 'GetDC' , 'l' , 'l')
FillRect = Win32API.new('user32', 'FillRect' , 'lpl' , 'l')
CreateSolidBrush = Win32API.new('gdi32' , 'CreateSolidBrush', 'l' , 'l')
if first_start = !method_defined?(:zeus81_fullscreen_update)
@@MainWindow = FindWindow.call('RGSS Player', 0)
@@BackWindow = CreateWindowEx.call(0x08000008, 'Static', '', 0x80000000, 0, 0, 0, 0, 0, 0, 0, 0)
@@FillRectArgs = [GetDC.call(@@BackWindow), [0,0,0xFFFF,0xFFFF].pack('L4'), CreateSolidBrush.call(0)]
@@fullscreen = false
alias zeus81_fullscreen_resize_screen resize_screen
alias zeus81_fullscreen_update update
end
def update
zeus81_fullscreen_update
toggle_fullscreen if Input.trigger?(Input::F5)
end
def resize_screen(width, height)
zeus81_fullscreen_resize_screen(width, height)
fullscreen_mode if fullscreen?
end
def fullscreen?() @@fullscreen end
def toggle_fullscreen() fullscreen? ? windowed_mode : fullscreen_mode end
def fullscreen_mode
client_w, client_h = GetSystemMetrics.call(0), GetSystemMetrics.call(1)
w, h = client_w, client_w * height / width
h, w = client_h, client_h * width / height if h > client_h
ShowWindow.call(@@BackWindow, 3)
UpdateWindow.call(@@BackWindow)
FillRect.call(*@@FillRectArgs)
SetWindowPos.call(@@MainWindow, -1, (client_w-w)/2, (client_h-h)/2, w, h, 0)
SetWindowLong.call(@@MainWindow, -16, 0x14000000)
@@fullscreen = true
end
def windowed_mode
client_w, client_h = GetSystemMetrics.call(0), GetSystemMetrics.call(1)
w = width + GetSystemMetrics.call(5)*2 + 4
h = height + GetSystemMetrics.call(6)*2 + 4 + GetSystemMetrics.call(4)
ShowWindow.call(@@BackWindow, 0)
SetWindowPos.call(@@MainWindow, -2, (client_w-w)/2, (client_h-h)/2, w, h, 0)
SetWindowLong.call(@@MainWindow, -16, 0x14CA0000)
@@fullscreen = false
end
Graphics.fullscreen_mode if first_start and fullscreen_start
end[/quote]
复制代码
使用方法在脚本里有注明
作者:
八宝粥先生
时间:
2013-2-8 11:02
本帖最后由 八宝粥先生 于 2013-2-8 11:04 编辑
大叔,看好本区的名称了吗?
原创
技术发布区
可能是第11次应了签名档
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1