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

Project1

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

[已经过期] 如何添加开关

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3526
在线时间
1887 小时
注册时间
2010-6-19
帖子
1210
跳转到指定楼层
1
发表于 2014-7-12 11:49:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如何给下面的脚本添加个开关,当7号开关打开的时候,运行该脚本
  1. if $myfirst == nil

  2.   $myfirst = 'myGod'  
  3.   宽度=640+300
  4.   高度=480
  5.   游戏ini名=".\\Game.ini"
  6.   val = "\0"*256
  7.   gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
  8.   gps.call("Game", "Title", "", val, 256, 游戏ini名)
  9.   val.delete!("\0")
  10.   title = val
  11.   fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
  12.   hWnd = fw.call("RGSS Player", title)
  13.   swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')

  14.   pointwds = [0,0,0,0].pack('llll')
  15.   pointcet = [0, 0].pack('ll')

  16.   wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
  17.   client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')

  18.   wdsrect.call(hWnd,pointwds)
  19.   client_screen.call(hWnd, pointcet)

  20.   wds = pointwds.unpack('llll')
  21.   cet = pointcet.unpack('ll')

  22.   addw =  wds[2] - wds[0] - 640
  23.   addh =  wds[3] - wds[1] - 480

  24.   x = wds[0] - (宽度 - 640) / 2
  25.   y = wds[1] - (高度 - 480) / 2

  26.   swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
  27.   
  28. end
复制代码

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

2
发表于 2014-7-12 22:15:39 | 只看该作者
本帖最后由 myownroc 于 2014-7-13 10:14 编辑

在最前面加上if $game_switches[7] == true
在最后面相应的加上一个end
如下
RUBY 代码复制
  1. if $game_switches[7] == true
  2. if $myfirst == nil
  3.  
  4.  
  5.   $myfirst = 'myGod'  
  6.  
  7.   宽度=640+300
  8.  
  9.   高度=480
  10.  
  11.   游戏ini名=".\\Game.ini"
  12.  
  13.   val = "\0"*256
  14.  
  15.   gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
  16.  
  17.   gps.call("Game", "Title", "", val, 256, 游戏ini名)
  18.  
  19.   val.delete!("\0")
  20.  
  21.   title = val
  22.  
  23.   fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
  24.  
  25.   hWnd = fw.call("RGSS Player", title)
  26.  
  27.   swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')
  28.  
  29.  
  30.   pointwds = [0,0,0,0].pack('llll')
  31.  
  32.   pointcet = [0, 0].pack('ll')
  33.  
  34.  
  35.   wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
  36.  
  37.   client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')
  38.  
  39.  
  40.   wdsrect.call(hWnd,pointwds)
  41.  
  42.   client_screen.call(hWnd, pointcet)
  43.  
  44.  
  45.   wds = pointwds.unpack('llll')
  46.  
  47.   cet = pointcet.unpack('ll')
  48.  
  49.  
  50.   addw =  wds[2] - wds[0] - 640
  51.  
  52.   addh =  wds[3] - wds[1] - 480
  53.  
  54.  
  55.   x = wds[0] - (宽度 - 640) / 2
  56.  
  57.   y = wds[1] - (高度 - 480) / 2
  58.  
  59.  
  60.   swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
  61.  
  62.  
  63. end
  64. end



@RyanBern 能不能帮忙先看一下……正在改卷中……

点评

现在开关还不是数组诶,没有[]一说。。。  发表于 2014-7-14 09:20
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3526
在线时间
1887 小时
注册时间
2010-6-19
帖子
1210
3
 楼主| 发表于 2014-7-13 08:24:40 | 只看该作者
myownroc 发表于 2014-7-12 22:15
在最前面加上if $game_switches[7] == true
在最后面相应的加上一个end
如下

貌似放游戏里还是不行

点评

最好上传你的工程,这样可以让回答者知道这段脚本起作用的位置,以便能更快解决问题。  发表于 2014-7-13 08:51
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3526
在线时间
1887 小时
注册时间
2010-6-19
帖子
1210
4
 楼主| 发表于 2014-7-13 09:55:44 | 只看该作者
myownroc 发表于 2014-7-12 22:15
在最前面加上if $game_switches[7] == true
在最后面相应的加上一个end
如下

范例
Project1.rar (187.85 KB, 下载次数: 26)
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2014-7-13 10:22:26 | 只看该作者
黑米馒头 发表于 2014-7-13 09:55
范例

这个调节分辨率的脚本没有办法用开关控制的。因为这个是游戏一开始就要运行的脚本,那时候的开关$game_switches都不存在的。LZ要想实现什么效果?是用一个开关来切换两个分辨率么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3526
在线时间
1887 小时
注册时间
2010-6-19
帖子
1210
6
 楼主| 发表于 2014-7-13 12:36:30 | 只看该作者
RyanBern 发表于 2014-7-13 10:22
这个调节分辨率的脚本没有办法用开关控制的。因为这个是游戏一开始就要运行的脚本,那时候的开关$game_sw ...

是的。。。。。

点评

知道了,我再想想效果  发表于 2014-7-13 14:43
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
332 小时
注册时间
2013-7-6
帖子
356
7
发表于 2014-7-14 09:18:46 | 只看该作者
经测试没办法变回原来的分辨率,对Win32API不太熟,看不太懂脚本,只能改变一次分辨率。二次改变没有效果。这是改完的脚本。。。游戏中调用alex = Fenbianlv.new(800,600)就能改变分辨率,不过只能改一次。
  1. class Fenbianlv
  2. def initialize(a,b)
  3.   
  4.   宽度=a
  5.   高度=b
  6.   
  7.   游戏ini名=".\\Game.ini"
  8.   
  9.   val = "\0"*256
  10.   gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
  11.   gps.call("Game", "Title", "", val, 256, 游戏ini名)
  12.   val.delete!("\0")
  13.   title = val
  14.   fw = Win32API.new('user32', 'FindWindow', 'pp', 'i')
  15.   hWnd = fw.call("RGSS Player", title)
  16.   swp = Win32API.new('user32', 'SetWindowPos', 'lliiiii', 'i')

  17.   pointwds = [0,0,0,0].pack('llll')
  18.   pointcet = [0, 0].pack('ll')

  19.   wdsrect = Win32API.new('user32.dll', 'GetWindowRect', 'lp', 'l')
  20.   client_screen = Win32API.new("user32", "ClientToScreen", 'ip', 'i')

  21.   wdsrect.call(hWnd,pointwds)
  22.   client_screen.call(hWnd, pointcet)

  23.   wds = pointwds.unpack('llll')
  24.   cet = pointcet.unpack('ll')
  25. p wds
  26. p cet
  27.   addw =  wds[2] - wds[0] - 640
  28.   addh =  wds[3] - wds[1] - 480

  29.   x = wds[0] - (宽度 - 640) / 2
  30.   y = wds[1] - (高度 - 480) / 2

  31.   swp.call(hWnd, 0, x, y, 宽度 + addw, 高度 + addh, 0x20)
  32.   
  33. end
  34. end
复制代码
偶是熬夜学编程的傻子
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 22:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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