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
File.open
复制代码
作者:
凌童鞋
时间:
2011-10-29 21:15
f = File.open("a.ini")
$ini_hash = {}
f.each {|line|
line.gsub!(/\n/,"")
k,v = line.split(/=/)
$ini_hash[k] = v if v !=nil
}
p $ini_hash["FullScreen"]
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
# ini的文件名
ini_name = ".\\A.ini"
# 生成读取ini的API对象
gps = Win32API.new('kernel32', 'GetPrivateProfileString','pppplp', 'l')
# 设置一个长度 256 的字符串用于接受读取的信息
val = "\0" * 256
# 读取节名为 Game 项名为 FullScreen 的信息
gps.call("Game", "FullScreen", "", val, 256, ini_name)
# 删除多余的部分
val.delete!("\0")
# 这就是想要读取的内容了 要注意这是一个字符串对象 长度要注意别超过 256
p val
val = "\0" * 256
gps.call("Game", "AutoPlay", "", val, 256, ini_name)
val.delete!("\0")
p val
# 生成写ini的API对象
wps = Win32API.new("kernel32", "WritePrivateProfileString", "pppp", "l")
# 写入 字符串 数据
wps.call("Game", "FullScreen", "写入的内容 注意要是字符串", ini_name)
wps.call("Game", "AutoPlay", "写入的内容 注意要是字符串", ini_name)
复制代码
作者:
gamedev0001
时间:
2011-10-30 07:44
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1