铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 863|回复: 2

[求助]如何把一个不规则数组在存档中保存下来?

[复制链接]
发表于 2012-10-16 18:54 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
注意是随存档保存下来.如果要新增文件我也不介意,只不过一定要随存档.数组类似这样:
{
{1,32769,11001,"弟子袁隆平成功完成种田任务,请师尊验收"},
{0,0,0,""},
{1,35100,11002,"弟子太上老君成功完成炼丹任务,请师尊验收"},
}
我知道论坛币不值一分钱,但为了表示我的一点心意,我可以悬赏300银两给解决问题者。。。。。。
(不知道2大还记得不记得“不负责任的教程”的作业。。。。。。)
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-17 00:06 | 显示全部楼层
本帖最后由 hnc 于 2012-10-17 00:06 编辑

帮忙顶上去,求助,顺便挽尊~~
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-10-17 04:01 | 显示全部楼层
  1. --查利猫存档系统
  2. function SaveTableContent(file, obj)  --不包含物品数据的存档数据类型判断
  3.         local szType = type(obj);          --判断对象类型
  4.         if szType == "number" then  --如果类型是数字
  5.                 file:write(obj);  --直接写入
  6.         elseif szType == "string" then  --如果类型是字符串
  7.                 file:write(string.format(""%s"", obj)); --以字符串形式写入
  8.         elseif szType == "table" then  --如果类型是表格
  9.                 --把table的内容格式化写入文件
  10.                 file:write("{"); --首先写入一个{
  11.                 for i, v in pairs(obj) do  --逐个元素判断
  12.                         SaveTableContent(file, v);
  13.                         file:write(",");
  14.                 end
  15.                 file:write("}");  --写入最后一个表格数据的时候换行
  16.         else
  17.                 error("can't serialize a "..szType);
  18.         end
  19. end

  20. --以上是查理猫写的函数,我进行修改后的版本
  21. --由于是递归调用函数,'\n'最好是自己添加

  22. ———————————————————————————————————————————

  23. --要做到随存档存档,那么找到function SaveRecord(id)添加代码即可
  24. --打开一个文件,id是存档编号
  25. local file = io.open(CONFIG.DataPath.."someData"..id..".lua", "w");
  26. --运用方法:
  27. --1维Table保存
  28. CC.oneDimTable={1,2,3};
  29. file:write("CC.oneDimTable="); --需要手写table名字
  30. SaveTableContent(file,CC.oneDimTable);
  31. --2维table保存
  32. CC.twoDimTable={{"hello",123},{"world",456}};
  33. file:write("\nCC.twoDimTable="); --加上自己写的\n
  34. SaveTableContent(file,CC.twoDimTable);
  35. file:close(); --最后记得close file

  36. ———————————————————————————————————————————

  37. --存档就需要读档,那么找到function LoadRecord(id)添加
  38. dofile(CONFIG.DataPath.."someData"..id..".lua");
  39. --这里要注意,新开始游戏会读id为0的档,所以要么写一个初始档,要么加一个判断
复制代码
这只是一个方法,还可以修改数据结构将数据存入r,请参考苍龙lua源码jyconst.lua。

点评

谢谢哦,保存单独的lua实在不错  发表于 2012-10-17 11:04
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-23 20:04

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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