Project1

标题: RGSS里怎么获取RTP路径 [打印本页]

作者: zh99998    时间: 2009-2-9 15:28
标题: RGSS里怎么获取RTP路径
路径带中文的……
[LINE]1,#dddddd[/LINE]
RGSSGetRTPPath
RGSSGetPathWithRTP
有这两个API函数,在RMXP里成功获取出来,VX不会用
RGSSGetRTPPath = Win32API.new("RGSS103J", "RGSSGetRTPPath", "l", "l")
RGSSGetPathWithRTP = Win32API.new("RGSS103J", "RGSSGetPathWithRTP", "l", "p")
p RGSSGetPathWithRTP.call(RGSSGetRTPPath.call(1))
VX里把那个103J换成200J或202E都只出个盘符("C"或"D")
[LINE]1,#dddddd[/LINE]
RGSSClearRTPPath之后,游戏还能正常运行
这是不是说明程序在一开始读取了RTP路径之后,就保存到某个变量里而不需要再次进行读取了
那么,用脚本能不能把程序已经读取到的RTP路径给读出来
作者: chenyin    时间: 2009-2-9 15:36
HKEY_LOCAL_MACHINE\SOFTWARE\Enterbrain\RGSS2\RTP
在该键值设定RTP目录
回LX,问题是怎么获取?
作者: Aligatou    时间: 2009-2-9 15:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-9 16:37
那,怎么读
Ruby的Win32::Registry支持中文吗
作者: RXVincent    时间: 2009-2-9 16:45
http://rpg.blue/viewthread.php?tid=98663&ntime=2009%2D2%2D9+8%3A44%3A47
这是XP的,可以看看VX能不能用 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: zh99998    时间: 2009-2-9 16:48
不支持中文路径

Ruby的Registry也是这样
作者: zh99998    时间: 2009-2-9 23:06
顶起……
作者: 光的圆周率    时间: 2009-2-10 00:01
获得地址后是使用这个脚本转转码?

  1. #------------------------------------------------------------------------------
  2. # Moonlight INN
  3. # http://cgi.members.interq.or.jp/aquarius/rasetsu/
  4. # RaTTiE
  5. # [email protected]
  6. #------------------------------------------------------------
  7. # EasyConv::s2u(text) : S-JIS -> UTF-8
  8. # EasyConv::u2s(text) : UTF-8 -> S-JIS
  9. #==============================================
  10. module EasyConv
  11. # API梡掕悢掕媊
  12.    CP_ACP = 0
  13.    CP_UTF8 = 65001

  14. #--------------------------------------------------------------------------
  15. # 仠 S-JIS -> UTF-8
  16. #--------------------------------------------------------------------------
  17. def s2u(text)
  18. # API掕媊
  19.    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  20.    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  21. # S-JIS -> Unicode
  22.    len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
  23.    buf = "\0" * (len*2)
  24.    m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);

  25. # Unicode -> UTF-8
  26.   len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  27.   ret = "\0" * len
  28.   w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);
  29.    
  30.    return ret
  31. end
  32. # module_function偲偟偰岞奐
  33. module_function :s2u
  34. #--------------------------------------------------------------------------
  35. # 仠 UTF-8 -> S-JIS
  36. #--------------------------------------------------------------------------
  37. def u2s(text)
  38. # API掕媊
  39.    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  40.    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  41. # UTF-8 -> Unicode
  42.    len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
  43.    buf = "\0" * (len*2)
  44.    m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);

  45. # Unicode -> S-JIS
  46.   len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  47.   ret = "\0" * len
  48.   w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);   
  49.    return ret
  50. end
  51. # module_function偲偟偰岞奐
  52. module_function :u2s
  53. end
复制代码

作者: zh99998    时间: 2009-2-10 00:47
LS的失败……转出来还是有问号
作者: 疯鸡瘫圣老贱    时间: 2009-2-10 02:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2009-2-10 03:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-10 04:43
是的,没法Require可以直接粘贴到脚本编辑器里
貌似有
RGSSGetRTPPath
RGSSGetPathWithRTP
两个API函数,在RMXP里能用(楼顶),VX不会用
作者: zh99998    时间: 2009-2-10 19:14
顶起……
作者: 美兽    时间: 2009-2-10 19:46
RGSSGetRTPPath = Win32API.new("RGSS102J", "RGSSGetRTPPath", "l", "l")
RGSSGetPathWithRTP = Win32API.new("RGSS102J", "RGSSGetPathWithRTP", "l", "p")

p RGSSGetPathWithRTP.call(RGSSGetRTPPath.call(1))
作者: 美兽    时间: 2009-2-10 19:49
VX的DLL文件在哪里?
作者: zh99998    时间: 2009-2-10 19:55
我放在系统的%Path%里了
从100J到202E全有

上面那个命令可以成功获取RMXP的RTP,但是对于RMVX无效
作者: 美兽    时间: 2009-2-10 20:13
我看了一下,VX的DLL里确实存在这个函数,至于为何不生效不得而知,没时间试了,不好意思。

作者: zh99998    时间: 2009-2-10 20:14
thanks the same
作者: yangff    时间: 2009-2-11 01:27
查VX的到处函数
作者: zh99998    时间: 2009-2-11 01:29
【到处】函数????
作者: 哈根达斯    时间: 2009-2-11 01:33
应该是导出函数- -b
作者: yangff    时间: 2009-2-11 01:42
module UacTest
  def self.Test
    File.open("C:\1gGHADSGDFGFHrgedg.txt","wb") rescue(return false)
    GC.start
    File.delete("C:\1gGHADSGDFGFHrgedg.txt") rescue(return false)
    GC.start
    return true
  end
end
if not UacTest.Test
  print "权限不足"
  exit
end
作者: zh99998    时间: 2009-2-11 02:06
楼上的无效

弄出来个盘符{/pz}
[LINE]1,#dddddd[/LINE]
RGSSGetRTPPath = Win32API.new("RGSS202E.dll", "RGSSGetRTPPath", "l", "l")
RGSSGetPathWithRTP = Win32API.new("RGSS202E.dll", "RGSSGetPathWithRTP", "l", "p")
p RGSSGetPathWithRTP.call(RGSSGetRTPPath.call(1))
作者: 沉影不器    时间: 2009-2-11 03:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-11 03:41
RGSSGetPathWithRTP有用的,RGSSGetRTPPath返回的只是一个数字,交给RGSSGetPathWithRTP来解析
[LINE]1,#dddddd[/LINE]确实……新增的这个能读出来,默认的那个就只能读出盘符
会不会是……参数改了
XP的可以多个RTP,VX的只有一个,是不是函数的参数不同呢
上面那些脚本都是按照XP的来写的
作者: 沉影不器    时间: 2009-2-11 04:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-11 20:36
"D"是盘符,某人的RTP装在C盘就显示"C"

RGSSClearRTPPath之后,游戏还能正常运行
这是不是说明程序在一开始读取了RTP路径之后,就保存到某个变量里而不需要再次进行读取了
那么,用脚本能不能把程序已经读取到的RTP路径给读出来

貌似越来越复杂了{/pz}
作者: 水蓝    时间: 2009-2-12 00:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-14 02:29
以下引用水蓝于2009-2-11 16:23:14的发言:

我只问怎么知道RGSSGetRTPPath这个函数的

本帖第二页6楼
作者: 水蓝    时间: 2009-2-14 05:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-14 20:20
我也不知道那是啥……大概是某个dll分析工具
作者: dbshy    时间: 2009-2-15 03:48
= =哪位前辈知道?
作者: 沉影不器    时间: 2009-2-15 06:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: zh99998    时间: 2009-2-15 15:01
>.<跑题了




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