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

Project1

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

[已经解决] 关于调用和修改外部INI文件

 关闭 [复制链接]

Lv1.梦旅人

Dancer-

梦石
0
星屑
55
在线时间
76 小时
注册时间
2006-11-9
帖子
3551

开拓者贵宾

跳转到指定楼层
1
发表于 2011-10-29 19:25:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问,如何在游戏中调用外部的INI文件,从中读出变量值并放置到游戏里呢。

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

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


Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-10-29 19:35:52 | 只看该作者
  1. File.open
复制代码

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

3
发表于 2011-10-29 21:15:23 | 只看该作者
  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
至于怎么放进变量不解释吧。。

点评

非常感谢~ ^ ^  发表于 2011-10-30 19:30
eval直接导入成变量  发表于 2011-10-29 22:44
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
43 小时
注册时间
2010-7-18
帖子
14
4
发表于 2011-10-29 21:21:45 | 只看该作者
可以用API:GetPrivateProfileString和WritePrivateProfileString(我以前搞过这个,但没有成功- -)
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2011-10-30 00:55:08 | 只看该作者
  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)
复制代码











你知道得太多了

回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2011-10-16
帖子
81
6
发表于 2011-10-30 07:44:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 02:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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