iiingest 发表于 2023-9-7 14:32:38

如何在游戏中删除游戏存档

抱歉不知道该分到哪个类……

我想设置一个选项,玩家选择后游戏数据会回复到初始状态,具体来说:
1.重置所有变量
2.清除所有存档
3.已经解锁的CG可以重置也可以不重置

目前的问题是不会清除存档,看KAG文档说用erasebookmark,于是试了一下,发现清除不彻底,仍然会显示截图、最近对话和新档标记,并且在读档界面可以点击,然后整个就游戏卡死了

求解决方法,或者有没有什么更好的方案(把CG啥的都一起重置了也没关系)

版本:THE_NVL_Maker_ver3.87_sim

VariableD 发表于 2023-9-12 18:53:07

倒是有一个clearvar之类的指令可以删除变量,但删除玩家电脑里的截图权限太高了……建议是给玩家打开一下存档路径让玩家手动删除……

iiingest 发表于 2023-9-17 23:03:35

谢谢D大解答,我研究了一会儿,现在已经基本上解决这个问题了,分享下思路:

就是不删除文件,而是增加一个数组,用来记录各个存档是否作废,如果作废,那么就不显示它

1.
游戏初始时声明数组(只能声明一次),其中void为有效,1为废档
sf.废档标记 = new Array();

2.
存读档界面,判断存档是否存在时增加一个条件
(macro_sl.ks,第13~26行)

function storagedata(num)
{
        var sd=kag.saveDataLocation+'/data'+num+'.bmp';
        if(sf.废档标记==1){sd=void;}//新增的条件
        return sd;
}
function checkdata(num)
{
        var cd=Storages.isExistentStorage(kag.saveDataLocation+'/data'+num+'.bmp');
        if(sf.废档标记==1){cd=false;}//新增的条件
        return cd;
}


3.
当玩家选择重置游戏时,清除全部存档信息,并标记为废档
for(var i=0;i<20;i++)//我这边最大存档数是20
{
        kag.eraseBookMark(i);
        sf.历史 = "……";
        sf.最近档案= void ;
        sf.废档标记 = 1;
}

4.
存档时,清除废档标记,把该档位重新设置为可见
(MySaveLoadFunction.tjs,第17~22行)
if (num < 999)
        {
          sf.废档标记= void ;//增加一行
          sf.最近档案= num ;
          Debug.message("最近保存档案名刷新");
        }

可能还要再调试一下,但大体上应该是对的,可以实现想要的功能,希望能帮到有需要的小伙伴_(:з」∠)_

VariableD 发表于 2023-9-17 23:09:31

但其实最近对话和新档标记都是单独的sf变量…只想去掉那些的话删除这俩对应的值就行?…

iiingest 发表于 2023-9-17 23:15:30

VariableD 发表于 2023-9-17 23:09
但其实最近对话和新档标记都是单独的sf变量…只想去掉那些的话删除这俩对应的值就行?… ...

是的嘞,主要还是截图的问题
页: [1]
查看完整版本: 如何在游戏中删除游戏存档