本帖最后由 RyanBern 于 2015-10-23 14:10 编辑
感觉楼主并没有太听得进去大部分人的建议啊。
看了楼上的回帖,我大致猜一下楼主要的效果(不知道我的理解是否正确):首先档位只有一个的,并且玩家不能使用菜单进行随便存档(否则岂不是给玩家使用S&L大法的机会??)。然后,存档的时机为切换地图时或结束战斗后。最后,由于是有多周目,所以二周目的存档也要用一周目存档的地方。
个人觉得4楼和5楼的方法最好,6楼亚梦的办法适用于不太擅长使用脚本的人。具体来说,就是一个游戏只跟一个档位,以后所有的地方都用这个档位来存(这也是大型单机游戏常用做法)。但是,这样也不能完全防S&L大法,因为总有一些无聊之人利用复制+粘贴方法备份存档。不过,正常玩家也不会这么做。
另外,请不要随便对9楼的办法做出负面的评价。这个“会浪费系统资源”“拖慢游戏运行”的说法完全就没有依据,我相信楼主肯定没有亲自试验过这种办法,没有真正做过一个计时器。否则也不会出这样的结论。例如在XP中,默认脚本会显示一个“运行时间”,这个就是一个计时器,我并没看出运行完这个之后游戏就会卡。相比,倒是不断存档游戏会卡一点,因为对文件的操作要远远慢于对内存数据的操作。
最后,可能是楼主自身的原因,弄脚本麻烦极了,但是一个自动存档脚本并不是非常难弄。
class Scene_Save def autosave(index) filename = "Save#{index}.rxdata" file = File.open(filename, "wb") write_save_data(file) file.close end end
class Scene_Save
def autosave(index)
filename = "Save#{index}.rxdata"
file = File.open(filename, "wb")
write_save_data(file)
file.close
end
end
然后需要自动存档的时机是切换地图或者是战斗结束。那就请搜索这两个地方:
Scene_Map#transfer_player
Scene_Battle#battle_end
自动存档脚本使用方法:
save = Scene_Save.new save.autosave(存档档位)
save = Scene_Save.new
save.autosave(存档档位)
在适当的位置加上这两句就可以自动存档。
那我重新写一下回帖。
楼主的要求:游戏只有一个档位,但是不小心点击“新游戏”会覆盖之前打过的存档,这样的话会造成进度的丢失。
楼主的解决办法:另外开一个单独的存档,实际则使用游戏中的道具进行储存(道具必须为消耗品,或者是在指定场合下才能使用,否则没有意义),这样一不小心点了“新游戏”,旧档被覆盖了还有备用档可用。
评价楼主的解决办法:除了使用道具存档这个设定比较奇怪以外,其余都还好。缺点在于游戏只有一个存档,如果哪天玩家心血来潮想从一周目重新打,又不想失去原来的进度,这样迫使玩家只能对存档进行复制粘贴。
6L亚梦的解决办法:在点击“新游戏”时游戏会给出警告,由玩家觉得是否继续。
评价亚梦的解决办法:这样可以极大减小错误操作发生频率,也省去了“使用道具存档”的麻烦设定,但是缺点还是游戏只能有一个档,没有办法做到在保留旧存档的前提下重新开始游戏。
4L5L的解决办法:对每个新开的游戏设定固定档位,以后再这个游戏中的自动存档都存在那个位置上。
评价:可以解决楼主提出的问题,但是不知道为什么楼主觉得这样增加档位很不好,每个档位都是独立的,不会互相影响。在一个档上的进度也不会覆盖到另一个档去。许多大型单机游戏不都是这个机制么?楼主难道是觉得这个方案增加了技术难度?好吧,当这些人都没说。
9L的解决办法:更改存档机制。感觉略微跑题。但是我在这里重申一遍:小小的计时器不会影响游戏的运行,更不会出现楼主所说的卡顿的情况,你听说的传闻只能说明那个人实现的计时器效率低下,请不要一概而论,并且我个人感觉做一个能让游戏变卡的计时器也是非常困难的。偶尔的存档当然不会卡顿,实际上我自己也比较喜欢在切地图的时候放自动存档上去。总之,请楼主摆正你的观念。实践出真知
最后,以上的方法实现起来都非常简单。如果楼主依然觉得这些方法都不好(或者是费力不讨好),那么大可不必理会我说的东西。 |