RPG_Basic(25): 储存游戏的简单方式
游戏存盘文件需要加密,不然就会有人破解掉,随意的在存档文件进行数据的修改哦。
根据按下确认键时,menu_index的值进行操作
移除obj_input对象内的储存previous_room的代码
将其移动到obj_player_status的create事件里面去
将整个obj_input的Step事件中负责暂停游戏的代码,全部移除掉,并移动到obj_player_status对象的step事件中去。
保持obj_input的独立,使其只负责输入,并不执行暂停和读取功能。而放在obj_player_status对象里纯粹是个人的偏好而已。
在返回按钮被选中时,按下确认,调用变量来返回上一个房间
然后添加
save存档功能:这里就需要自行编写脚本来存档自己想要保存的数据了
游戏结束功能:直接使用gamemaker内置的函数 game_end()即可
所以新建一个脚本scr_game_save()来进行存档,这里先打印一个字符串来标识调用脚本成功,脚本具体的代码内容后续补上
然后运行游戏会发现有一个报错的地方,是在obj_play_status的step事件中,忘记修改了psuse_key的调用需要加上前缀的“obj_input.”
为了方便起见,这里修改了以下暂停按钮的输入为z键
运行游戏,按下Z键,发现并没有进入游戏暂定界面(房间),观察暂停事件触发的代码,发现有一个死循环
(为什么使用pause_key = keyboard_check_pressed(ord("Z"));//暂停-Z)来检测输出,会使得pause_key一直为0的问题
修改同样的错误:在obj_pause_menu对象中的step事件中,将dash_key确认菜单后,也重置为false
DS maps:一种储存信息的数据结构
Json编码:将数据结构转为字符串
将需要的存档的转为Ds_map结构,并使用Json编码转化为字符串
然后写入到存档文件中
保存脚本,运行游戏,在选中Save的情况下,按下dash_key,可以在缓存地址下,看到存档文件
为防止有人对存档文件进行修改,从而作弊,这里采用Base64加密(具体的加密算法请自定google,简而言之,就是类似摩斯密码,通过一个对应规则,将字母和数字转换为其他密文字母)
再次运行游戏,进行存档,可以在存档路径下,看到存档文件已经变成了“乱码”
到这里就完成了游戏存档