Project1

标题: 关于调用和修改外部INI文件 [打印本页]

作者: 叶舞枫    时间: 2011-10-29 19:25
标题: 关于调用和修改外部INI文件
请问,如何在游戏中调用外部的INI文件,从中读出变量值并放置到游戏里呢。

比如游戏根目录有个 A.ini,里边是
[Game]
FullScreen = 1
AutoPlay = 0

游戏里把这些内容读进来,然后对应地把两个指定变量的值改为 1 和 0。
请问可以实现么?


dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2011-10-29 19:35
  1. File.open
复制代码

作者: 凌童鞋    时间: 2011-10-29 21:15
  1. f = File.open("a.ini")
  2. $ini_hash = {}

  3. f.each {|line|
  4. line.gsub!(/\n/,"")
  5. k,v = line.split(/=/)
  6. $ini_hash[k] = v if v !=nil
  7. }
  8. p $ini_hash["FullScreen"]
  9. p $ini_hash["AutoPlay"]
复制代码
不过有一点要注意,空格的不要。。
[Game]
FullScreen = 1
AutoPlay = 0
你要把空格删掉才正常
[Game]
FullScreen=1
AutoPlay=0
至于怎么放进变量不解释吧。。
作者: h907308901    时间: 2011-10-29 21:21
可以用API:GetPrivateProfileString和WritePrivateProfileString(我以前搞过这个,但没有成功- -)
作者: 后知后觉    时间: 2011-10-30 00:55
  1. # ini的文件名
  2. ini_name = ".\\A.ini"
  3. # 生成读取ini的API对象
  4. gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
  5. # 设置一个长度 256 的字符串用于接受读取的信息
  6. val = "\0" * 256
  7. # 读取节名为 Game 项名为 FullScreen 的信息
  8. gps.call("Game", "FullScreen", "", val, 256, ini_name)
  9. # 删除多余的部分
  10. val.delete!("\0")
  11. # 这就是想要读取的内容了 要注意这是一个字符串对象 长度要注意别超过 256
  12. p val

  13. val = "\0" * 256
  14. gps.call("Game", "AutoPlay", "", val, 256, ini_name)
  15. val.delete!("\0")
  16. p val

  17. # 生成写ini的API对象
  18. wps = Win32API.new("kernel32", "WritePrivateProfileString", "pppp", "l")
  19. # 写入 字符串 数据
  20. wps.call("Game", "FullScreen", "写入的内容 注意要是字符串", ini_name)
  21. wps.call("Game", "AutoPlay", "写入的内容 注意要是字符串", ini_name)
复制代码

作者: gamedev0001    时间: 2011-10-30 07:44
提示: 作者被禁止或删除 内容自动屏蔽




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