Project1

标题: rm实现输入信息筐 [打印本页]

作者: sizz123    时间: 2007-7-7 21:49
标题: rm实现输入信息筐
   如果rm有输入信息筐该多好!如果rm有控件改多好!可惜,自己学艺不精,连分析别人写的脚本都很困难,就更别说创新了。
  “山穷水尽疑无路,柳暗花明又一村”在这苦劳之际,api出现了!说简单点, api的她可以连接任何在window上的任何程序.rm没有输入筐,但其他语言有啊,比如vb.
   
我要实现的功能是:用输入信息筐来写主角的名字

1,用vb做个输入筐
  这个很基础了,注意窗体的大小和颜色,以及把form的字样修改成姓名,设置一个确定按钮.总之就是要把
vb的那个窗体,尽量做得合理,比如禁止移动,禁止放大缩小等.

2,写命令按钮的程序
  Open "c:\aaa.txt" For Output As #1
  Print #1, text1.text            
  Close #1
  unload me
你不是输入了名字吗?以上的程序是将名字保存在记事本中(路径设置在游戏目录下)

3,用ruby连接这个程序
require 'Win32API'
sizz = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
sizz.call(0, 'open', 'D:\程序.exe',0, 0, 1)
以上是让ruby调用这个vb程序

于是,一个输入名字的筐子就出来了,输入名字,确定,信息保存到记事本

然后用ruby读取
   f = File.open("aaa.txt")
   s = f.read
于是ruby中的变量s,就读取了vb中的变量text.text.最后将这个s变量,赋予给角色的姓名.xxx.name这个变量.

作者: sizz123    时间: 2007-7-7 21:49
标题: rm实现输入信息筐
   如果rm有输入信息筐该多好!如果rm有控件改多好!可惜,自己学艺不精,连分析别人写的脚本都很困难,就更别说创新了。
  “山穷水尽疑无路,柳暗花明又一村”在这苦劳之际,api出现了!说简单点, api的她可以连接任何在window上的任何程序.rm没有输入筐,但其他语言有啊,比如vb.
   
我要实现的功能是:用输入信息筐来写主角的名字

1,用vb做个输入筐
  这个很基础了,注意窗体的大小和颜色,以及把form的字样修改成姓名,设置一个确定按钮.总之就是要把
vb的那个窗体,尽量做得合理,比如禁止移动,禁止放大缩小等.

2,写命令按钮的程序
  Open "c:\aaa.txt" For Output As #1
  Print #1, text1.text            
  Close #1
  unload me
你不是输入了名字吗?以上的程序是将名字保存在记事本中(路径设置在游戏目录下)

3,用ruby连接这个程序
require 'Win32API'
sizz = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
sizz.call(0, 'open', 'D:\程序.exe',0, 0, 1)
以上是让ruby调用这个vb程序

于是,一个输入名字的筐子就出来了,输入名字,确定,信息保存到记事本

然后用ruby读取
   f = File.open("aaa.txt")
   s = f.read
于是ruby中的变量s,就读取了vb中的变量text.text.最后将这个s变量,赋予给角色的姓名.xxx.name这个变量.

作者: 亿万星辰    时间: 2007-7-7 22:19
这个思路确实是比较独特。。。。{/dy}变相的支持输入法了……
作者: 幻の飞鱼    时间: 2007-7-7 22:43
算了,自我屏蔽,我觉得我在犯傻
作者: sizz123    时间: 2007-7-8 02:17
   问题就在于,不能直接将vb中的变量传给ruby,必须分两步:首先要保存记事本,然后用ruby调用,虽然可以用过度性的语言来圆滑这种不合理的地方,但还是很别扭.
作者: 亿万星辰    时间: 2007-7-8 03:36
以下引用sizz123于2007-7-7 18:17:50的发言:

  问题就在于,不能直接将vb中的变量传给ruby,必须分两步:首先要保存记事本,然后用ruby调用,虽然可以用过度性的语言来圆滑这种不合理的地方,但还是很别扭.

可以再研究研究,没准儿有这个方法呢{/hx}
作者: sizz123    时间: 2007-7-8 19:29
rm--记事本---vb,可以将rm的句柄传递给vb.虽然还是和"vb--记事本---rm"一样分两步
(首先将信息保持txt,然后用vb调用),但是vb调用的时候,可以很隐蔽,可以在按下确定的时候调用这个句柄函数.
   用v记录rm的句柄,首先是为了vb将游戏窗口激活,然后看能不能对这个rm窗体传输变量.
  

作者: 小真·爱舞    时间: 2007-7-9 05:21
发布完毕,
http://rpg.blue/web/htm/news770.htm
VIP 2
            by 叶舞枫
小真·爱舞代发。
作者: 叶舞枫    时间: 2007-7-9 06:03
自蔽..
作者: sizz123    时间: 2007-7-9 19:07
现在要解决的问题是:"当vb程序按下确定后,rm能接受vb的变量."

一,我们可以通过GetActiveWindow来获得rm的窗体句柄
require 'Win32API'
rm_hwnd = Win32API.new('user32.dll','GetActiveWindow"',nil,'l')
rm_hwnd.call
那么这个rm_hwnd就是窗体句柄,然后把数据传给记事本
f = open("rm句柄.txt","w")
f.write("f = open("rm句柄.txt","w")
f.close
调用vb程序,执行变量输入后,保存记事本----顶楼的方法
然后当vb按下确定后,从"rm句柄.txt"中获得rm句柄:这样做的目的是在退出vb程序后将rm窗口激活(有时候很容易弹出个网页打扰)

作者: sizz123    时间: 2007-7-10 00:58
以下引用亿万星辰于2007-7-7 19:36:02的发言:
可以再研究研究,没准儿有这个方法呢


目前要解决的问题是:"从vb不通过记事本,直接将数据传诵给rm."

小攻是可以变成小受的-----既然vb作为攻方无法将数据传输给rm,但rm做为受方可以主动的从记事本接受数据啊(自动执行读取记事本,当有变量数据的时候就终止程序)

这样,从表面上看就是:当vb按下按钮,rm就接受的数据


作者: jliji    时间: 2007-7-10 16:53
还不错。{/qiang}
作者: 邪神    时间: 2007-7-11 20:52
我下不下来vb,谁能给我个范例?
作者: xgm    时间: 2007-7-13 08:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雷欧纳德    时间: 2007-7-13 22:26
{/gg}最早的时候就输入在记事本里、然后RM读取->然后接着直接CreateWindow弹输入框返回字符传给RM->再接着内置输入框在RM里->接着这又到第一步了- -

8过还素鼓励下= =b
作者: 琪淇    时间: 2007-7-14 18:21
不错的方法,这样在刚开始时确定玩家的姓名后,那么在今后的游戏对话中,能让系统自动显示之前确定的名字吗?比如在游戏中途某某跟你说话,会直接叫你的名字吗?就叫你之前输入的那个名字。这个又如何实现呢?
作者: sizz123    时间: 2007-7-15 05:11
以下引用琪淇于2007-7-14 10:21:24的发言:

不错的方法,这样在刚开始时确定玩家的姓名后,那么在今后的游戏对话中,能让系统自动显示之前确定的名字吗?比如在游戏中途某某跟你说话,会直接叫你的名字吗?就叫你之前输入的那个名字。这个又如何实现呢?


可以的,记得某个叫《二周目的制作》教学录象中,有判断数据是否存在的方法
作者: oksh    时间: 2007-7-15 05:34
直接喊姓名的话不是用\n[]就行了吗?
作者: gpra8764    时间: 2007-7-16 22:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: sizz123    时间: 2008-4-29 23:03
问题还是太多
1,vb如何切换到rm游戏进程
  我实验了shell函数---运行不了game.exe(运行后,出错退出)
2,如何解决vb与rm是两个软件的问题,如果用tab+alt切换的话,那不就没有意思了吗?





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1