|
系统原理
利用Preload系列函数在本地储存与读取数据
系统作用
在本地储存与读取数据,使地图可以接着上次玩
使用环境
1)支持多玩家
2)支持魔兽所有版本
3)不需要使用ORPG登陆器
4)读档必须开启Allow Local Files注册表项
使用方法
本系统包含两个基础函数,读取文件:LoadFile 和 保存文件:SaveFile
每个函数都包括两个参数,存档文件路径:fn 和 储存数据的游戏缓存 gc
[jass]
function LoadFile takes string fn,gamecache gc returns nothing
function SaveFile takes string fn,gamecache gc returns nothing
[/jass]
使用前必须将函数的定义代码复制到地图的自定义代码区,然后通过自定义代码调用。
本系统只能存取整数,其中“类别名”为玩家序号,“使用名称”为数据序号,其中“0”号数据储存数据数量。
使用读档函数之前,我们首先需要建立用来读档的游戏缓存,然后还要设置好存档文件路径
由于读档需要消耗一段时间,所以我们一般选择在“游戏开始0.00秒”的时候进行读档
但是如果想要一个英雄一个存档,也可以使用英雄的名字作为存档名,在选择英雄的时候进行读档
这样,在玩家输入读档指令的时候,就可以瞬间将这些数据从游戏缓存中读取出来了
[trigger]Init
事件
地图初始化
条件
动作
游戏缓存 - 创建游戏缓存,使用文件名: ORPGSL.w3v
游戏缓存 - 删除 (最后创建的游戏缓存)
游戏缓存 - 创建游戏缓存,使用文件名: ORPGSL.w3v
设置 gc = (最后创建的游戏缓存)
自定义代码: call sl_loadfile("save\\orpgsl\\test.sav",udg_gc)
[/trigger]
本系统只能存取整数,其中“类别名”为玩家序号,“使用名称”为数据序号,其中“0”号数据储存数据数量
在玩家输入读档指令之后,我们首先检查“0”号数据储存的数据数量是否等于我们需要读取的数据的数量
如果相等,说明读档成功,然后就可以将这些数据拿出来使用了;
如果不相等,说明读档失败,这时候注意提醒玩家,检查是否开启了Allow Local Files注册表项
[trigger]Load
事件
玩家 - 玩家1(红色) 输入的聊天信息包含 load ,匹配方式: 完全匹配
玩家 - 玩家2(蓝色) 输入的聊天信息包含 load ,匹配方式: 完全匹配
条件
动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(从游戏缓存读取整数,名称: 0 类别: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc) 等于 2
Then - 动作
英雄 - 设置 (触发玩家) 的血魔法师 的经验值为 (从游戏缓存读取整数,名称: 1 类别: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc) , 隐藏 升级动画
单位组 - 选取 (触发玩家) 的火凤凰 内所有单位 (单位 - 删除 (选取单位))
单位 - 创建 (从游戏缓存读取整数,名称: 2 类别: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc) 个 火凤凰 给 (触发玩家) 在 (游戏开始位置)
游戏 - 对 (所有玩家) 发送文本信息: 读取成功!
Else - 动作
游戏 - 对 (所有玩家) 发送文本信息: 读取失败!
[/trigger]
[trigger]Save
事件
玩家 - 玩家1(红色) 输入的聊天信息包含 save ,匹配方式: 完全匹配
玩家 - 玩家2(蓝色) 输入的聊天信息包含 save ,匹配方式: 完全匹配
条件
动作
游戏缓存 - 记录 2 ,使用名称: 0 类别名: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc
游戏缓存 - 记录 (触发玩家) 的血魔法师 的经验值 ,使用名称: 1 类别名: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc
游戏缓存 - 记录 (触发玩家) 的火凤凰 中的单位数量) ,使用名称: 2 类别名: (转换 ((触发玩家) 的玩家索引号) 为字符串) 缓存: gc
如果所有条件成立则做动作1,否则做动作2
If - 条件
(触发玩家) 等于 (本地玩家)
Then - 动作
自定义代码: call sl_savefile("save\\orpgsl\\test.sav",udg_gc)
游戏 - 对 (所有玩家) 发送文本信息: 储存成功!
Else - 动作
[/trigger]
本系统使用简单,自定义代码区只有两个函数的定义,分别为:
function sl_loadfile takes string f,gamecache g returns nothing//读档函数
function sl_savefile takes string f,gamecache g returns nothing//存档函数
其中两个参数string f和gamecache g分别为“文件路径”和“缓存变量名”
如:
call sl_savefile("save\\orpgsl\\test.sav",udg_gc)
即可将自定义游戏缓存变量gc中储存的数据
储存在魔兽安装目录中的save\orpsl路径下的test.sav文件中
移植时请根据地图名进行修改,避免冲突
储存缓存数据的格式如下:
//“使用名称”为数据序号,“1”即为第一号数据
//“类别名”类别即为玩家序号,“1”表示玩家一
//其中“0”号数据用来储存数据总数,“2”表示共两个数据
游戏缓存 - 记录 2 ,使用名称: 0 类别名: 1 缓存: gc
游戏缓存 - 记录 100 ,使用名称: 1 类别名: 1 缓存: gc
游戏缓存 - 记录 100 ,使用名称: 2 类别名: 1 缓存: gc
//为玩家一储存1:100,2:100共两个数据
游戏缓存 - 记录 2 ,使用名称: 0 类别名: 2 缓存: gc
游戏缓存 - 记录 200 ,使用名称: 1 类别名: 2 缓存: gc
游戏缓存 - 记录 200 ,使用名称: 2 类别名: 2 缓存: gc
//为玩家二储存1:200,2:200共两个数据
演示地图在此下载:
最新版Beta
可以直接储存字符串的演示
注意事项:
1)使用前需先开启魔兽争霸Allow Local Files注册表项
2)为避免超过魔兽执行限制,如果储存数据的数量大于100,最好分成几个文件储存
|
|