Project1

标题: 求一个这样的插件或者代码实现方法 [打印本页]

作者: muharukahana    时间: 2023-6-19 01:14
标题: 求一个这样的插件或者代码实现方法
我想制作的游戏有一段开场剧情,但开场剧情在标题之前,且标题也是利用图片按钮插件在地图里拼出来的,所以直接就拿掉了
现在我的需求是,如果变量为true,那玩家打开的时候就要显示一次开场剧情,随后这个变量会指向false,除非后期手动改动,否则玩家不应以任何形式再次看到这段剧情
求解
作者: Zeldashu    时间: 2023-6-19 10:18
开关状态设定后永远不会变化,没太明白你的问题在哪?
作者: HM495    时间: 2023-6-19 11:49
本帖最后由 HM495 于 2023-6-19 12:13 编辑
  1. DataManager.makeSavefileInfo = function() {
  2.     const info = {};
  3.     info.title = $dataSystem.gameTitle;
  4.     info.characters = $gameParty.charactersForSavefile();
  5.     info.faces = $gameParty.facesForSavefile();
  6.     info.playtime = $gameSystem.playtimeText();
  7.     info.timestamp = Date.now();
  8.     info.isOpeningCleared = $gameSwitches.value(1);//记录该存档是否已通过序章
  9.     return info;
  10. };


  11. //判断存档中是否有已播过序章的存档
  12. DataManager.isAnySavefileOpeningCleared = function() {
  13.     for (var i=0;i<DataManager._globalInfo.length;i++)
  14.     {
  15.         if(DataManager._globalInfo[i] != null){
  16.             if(DataManager._globalInfo[i].isOpeningCleared )
  17.             {
  18.                 return true
  19.             }
  20.         }
  21.     }
  22.     return false;
  23. };
复制代码


如果我没理解错的话,你应该是跳过了默认的Title,自动新游戏进入某地图后,用地图场景伪装了一个标题界面吧

在你播序章的事件开头用DataManager.isAnySavefileOpeningCleared ()作为条件判定一次“是否存在已经看完序章的存档”
如果没有,就继续播序章
播完序章打开开关,做一次自动存档
同样这个思路你还可以判定你的游戏进度在标题做一些别的表现

如果你不想用游戏存档判定,那换个思路存进ConfigManager里,加一个跳过片头的选项,在播完序章后,将这个开关打开并保存
作者: ex悠米桑    时间: 2023-6-24 07:55
如果你不介意反过来的话,我倒是有个想法……有一个脚本,叫做全局开关。就是设定某几个开关为全局开关,一旦打开或者关闭,不会因为你重开游戏而修改。(我是拿来做二周目的。)

你要是反过来的话,就是这样,你先设定某个开关,比如100号,当开关100号为关闭的时候,必须看开头OP。但是当你选择进入游戏的时候,开始游戏会自动打开100号开关,以后就不会再看这个OP了。
作者: 小秋橙    时间: 2023-6-24 14:12
ex悠米桑 发表于 2023-6-24 07:55
如果你不介意反过来的话,我倒是有个想法……有一个脚本,叫做全局开关。就是设定某几个开关为全局开关,一 ...

DataManager._globalInfo.length>1
感觉用这个判定也不错,只要有手动存的档这个就会成立。
作者: sunhihi    时间: 2023-6-24 14:34
CGMZ-GlobalData
這腳本可可以做到跨遊戲與繼承





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1