Project1

标题: 请问能不能做一个假的GAMEOVER,如果能怎么做 [打印本页]

作者: xuexizhanghao    时间: 2021-7-19 18:34
标题: 请问能不能做一个假的GAMEOVER,如果能怎么做
本帖最后由 xuexizhanghao 于 2021-7-19 20:12 编辑

对不起,大家说我写的太混乱了,于是我重新写一遍吧
总之先从第一个问题开始
有没有办法做到
先显示GAMEOVER图片(就是那个GAMEOVER界面的那个图)同时播放GAMEOVER的音乐,然后再回到标题界面,以此造成GAMEOVER的假象
其实在显示图片的时候完成移动到另一张地图并自动存档的操作
然后此后在标题界面打开继续游戏选项,进入那个存档,就会从那个前面提到的那个另一张地图继续游戏
以上这些用事件能否写出来
我自己写的倒是能自动存档,不过进去之后进行的内容是:那张图片还在,音乐也在播放,过一会标题界面了
总之就是,怎么弄才能在,从继续游戏的存档那里进去的时候,之前为了假装GAMEOVER而做的那一部分不进行了
……就是……剧情杀?
不知道我这次说清没有


后边是最开始发帖时写的,因为有人看过了我就不删了

就是一顿操作之后,显示GAMEOVER的图和GAMEOVER音乐,之后直接进标题界面
在显示图的期间自动存档,然后下次点继续游戏进这个自动存档的时候直接在一个新的地图继续游戏。
我的构思是从第二周目开始,每个周目最开始的时候把人移到一个专门的地图,然后在这个图里选本周目的操作角色,根据选的人不同,会进行完全不同的剧情。然后大概每周目结尾都会进行类似的操作(只不过是正经的结局ppt)
我看有一个yep的newgame+插件,不过我看形容好像是继承绝大部分数据,然后正常从头开始,感觉和我想做的不太一样
我这个应该是绝大部分都不继承,而且一周目和别的周目是完全不一样的(起始地点都不一样),还是说,做成如果是一周目直接跳到另一个地图开始?
不过我这个周目是不是和传统意义上说的几周目不太一样啊……另外,如果可能的话我还真的确实希望之后各个周目都是从继续游戏进去,啊不过要是是在难只要不是从“开始游戏”进去就行,(因为那个选项我想做成会重置游戏的,哦,对了,如果用了插件,我这个要怎么写,我会写1~20号存档删除,就这个就行了吗?还是还要加别的)

另外还有一件事,我要是想GAMEOVER(正常的GAMEOVER)之后,得到某个物品,然后再打开GAMEOVER之前读取的那个存档的时候直接放进包里,是要怎么做?插件吗?

就是这样,我的问题有点多,我表达还不好,如果我有哪里说的不清楚或者说了不好的话请告诉我,我先说句对不起。谢谢大家
作者: RyanYe    时间: 2021-7-19 19:09
我看了标题信心满满的进来准备回答楼主的问题

看了正文以后,我的妈呀。。。
作者: xuexizhanghao    时间: 2021-7-19 19:37
RyanYe 发表于 2021-7-19 19:09
我看了标题信心满满的进来准备回答楼主的问题

看了正文以后,我的妈呀。。。 ...

对不起,我想想我该怎么说的精简一下
作者: 任小雪    时间: 2021-7-19 20:19
太简单了,根本不需要插件,也不需要脚本。
关键是思路。
既然你能想到结局需要中转,为什么不考虑开局也弄张空白图作为中转呢?(好像这么表述不是很对)
如果是真开局,则走事件一,
如果是死后重新开局,则走事件二(记得提示玩家是新的周目哦)
作者: xuexizhanghao    时间: 2021-7-19 21:32
任小雪 发表于 2021-7-19 20:19
太简单了,根本不需要插件,也不需要脚本。
关键是思路。
既然你能想到结局需要中转,为什么不考虑开局也弄 ...

所以……请问是……怎么整
作者: 小怪兽奇奇侠    时间: 2021-7-19 22:47
本帖最后由 小怪兽奇奇侠 于 2021-7-19 22:48 编辑

。。。你自己说的流程就是实现方法啊。

显示gameover图片可以做到,播放音乐也可以做到,显示图片以后只要不消除图片gameover图片会一直盖在画面上,这时候场景跳转只要不设置转场效果,玩家看见的就一直是gameover图片,你所说的实则偷偷换场景也能做到,这时候自动存档你也能做到,看你的描述换到新场景的一系列事件是自动执行做的。


你所做不到的是,对二周目的判定,进了这个存档以后,你先前设定的自动执行事件会再次执行一遍。我这边没有试,我想出了两种解决方案,你可以试一试:

1.自动存档前,返回标题前加一个独立开关为ON,然后新建事件页,条件是独立开关为ON,自动执行,里边写你要执行的新内容。

2.开头放一个条件分歧,条件分歧的条件用脚本判定,aaa==1和不是的情况,把先前的所有事件放在不是的情况里,并用事件脚本,在先前事件基础上声明一个aaa变量,你可以这样写aaa=1,放在自动存档和返回标题前,然后把要执行的新内容放进是的情况里。

两种方法应该都可行,相对来讲第二种我认为会靠谱一点,因为声明了全局变量,你可以都试一试,然后告诉我可行不可行。
作者: 开关关    时间: 2021-7-19 23:59
本帖最后由 开关关 于 2021-7-20 10:25 编辑

这是我的实现方法:



其实这就是6楼的解决方案2。

搞错但删不掉的截图

作者: xuexizhanghao    时间: 2021-7-20 10:08
开关关 发表于 2021-7-19 23:59
这是我的实现方法:

这个要实现的话是不是需要玩家本身不可以使用那个12345号存档的存档格子?
作者: xuexizhanghao    时间: 2021-7-20 10:16
小怪兽奇奇侠 发表于 2021-7-19 22:47
。。。你自己说的流程就是实现方法啊。

显示gameover图片可以做到,播放音乐也可以做到,显示图片以后只要 ...

我想了一下,如果这个变量修改是在自动保存之前,那第一次执行的时候可能就直接跳过假的GAMEOVER直接去下一个地图了吧
但是放在后边又存不进去
总之我先试试,谢谢
作者: 小怪兽奇奇侠    时间: 2021-7-20 11:18
xuexizhanghao 发表于 2021-7-20 10:16
我想了一下,如果这个变量修改是在自动保存之前,那第一次执行的时候可能就直接跳过假的GAMEOVER直接去下 ...

变量修改你说的是第二种解决办法吧,第二种解决办法是要在事件页的开头就放条件分歧的,条件分歧的条件是脚本aaa==1,而aaa=1的赋值操作是在条件分歧的条件为假的时候才赋值的,不会第一次执行就进行新剧情,因为第一次进行aaa是空值,分歧条件只会为假。你可以试试看。
作者: xuexizhanghao    时间: 2021-7-20 12:07
小怪兽奇奇侠 发表于 2021-7-20 11:18
变量修改你说的是第二种解决办法吧,第二种解决办法是要在事件页的开头就放条件分歧的,条件分歧的条件是 ...

我看了你和七楼,请问是这么写吗?
我试了一下,从自动存档进去之后还是GAMEOVER图,然后回标题画面

QQ截图20210720120617.png (182.72 KB, 下载次数: 9)

QQ截图20210720120617.png

作者: xuexizhanghao    时间: 2021-7-20 12:10
开关关 发表于 2021-7-19 23:59
这是我的实现方法:

我因为想完全做好游戏之后在开头的时候
DataManager.maxSavefiles = function() {
     return 1;
};
我怕冲突所以用的变量,但是好像不太行(11楼),或者是我没理解你们的意思还是没写对吗
作者: 小怪兽奇奇侠    时间: 2021-7-20 12:14
xuexizhanghao 发表于 2021-7-20 12:07
我看了你和七楼,请问是这么写吗?
我试了一下,从自动存档进去之后还是GAMEOVER图,然后回标题画面 ...

我说的变量,不是用事件设置的变量。我一直在说事件脚本,就是你设置自动存档用的事件脚本,在那里边写aaa=1,替换掉你的变量操作#0017=1,条件分歧的条件改成脚本aaa==1,这样子就可以了。
作者: 开关关    时间: 2021-7-20 12:50
本帖最后由 开关关 于 2021-7-20 13:03 编辑
xuexizhanghao 发表于 2021-7-20 12:07
我看了你和七楼,请问是这么写吗?
我试了一下,从自动存档进去之后还是GAMEOVER图,然后回标题画面 ...


11楼截图中的执行内容大致没问题,不过出了点小偏差。6楼说的是用脚本新建一个变量,名字叫“aaa”,而不是用事件里的变量。13楼也说得很清楚了。

只需稍微改一下,就是6楼说的方案。


“变量操作:#0017已播放结局 = 1”
改成
“脚本:aaa = 1”


“如果:已播放结局 = 1”
改成
“如果:脚本:aaa == 1”

要注意赋值的时候用单个等号“=”,条件判断要用两个等号“==”哦。
改完了,运行下试试。O(∩_∩)O

另外,我在7楼之所以不用全局变量,而是用写入硬盘的存档,是考虑到一个问题。如果不写入硬盘,重启游戏会导致全局变量直接清空。
玩家如果打完假结局,回到了标题,还没读档,就直接退出了游戏,那么下次进入游戏的时候,全局变量就没了,此时读档就会再进一次假结局。这会造成玩家误以为没有真结局。换做用存档来记录是否已经通过了假结局,就可以保证即使重启游戏,也不会出问题。
7楼截图的事件是测试无误的。
作者: xuexizhanghao    时间: 2021-7-20 13:39
开关关 发表于 2021-7-20 12:50
11楼截图中的执行内容大致没问题,不过出了点小偏差。6楼说的是用脚本新建一个变量,名字叫“aaa”,而不 ...

我把所有的“变量17=1”改成了“脚本:aaa==1”然后进游戏测试,他说aaa is not defind
之后我试着在自动保存那句之前加了一句
var aaa
aaa=0
但是还是报这个错,我想试着全都写进一个脚本,但是貌似有行数限制
对不起我不太会编程,请问我是哪里落了什么吗

QQ截图20210720133834.png (173.75 KB, 下载次数: 12)

QQ截图20210720133834.png

作者: 小怪兽奇奇侠    时间: 2021-7-20 13:57
本帖最后由 小怪兽奇奇侠 于 2021-7-20 14:15 编辑

...var声明变量会让变量变成局部变量。注意一个等号两个等号的区分后,不用var还出现not defined的话,可以在本页事件头部定义aaa=0。


开关关同志说的问题其实也是真实存在的,一旦销毁窗口变量也会跟着销毁,实在不想用存档判定的话...你自己想办法吧。。。


作者: xuexizhanghao    时间: 2021-7-20 14:48
本帖最后由 xuexizhanghao 于 2021-7-20 14:58 编辑
小怪兽奇奇侠 发表于 2021-7-20 13:57
...var声明变量会让变量变成局部变量。注意一个等号两个等号的区分后,不用var还出现not defined的话,可以 ...


对,对不起
其实我只是担心用存档判定和我存档上限1是不是冲突
作者: xuexizhanghao    时间: 2021-7-20 14:51
xuexizhanghao 发表于 2021-7-20 13:39
我把所有的“变量17=1”改成了“脚本:aaa==1”然后进游戏测试,他说aaa is not defind
之后我试着在自动 ...

这个倒是可以,但是GAMEOVER以后要是重启游戏再进1号存档就会aaa is not defind
话说我忽然想到onbeforesave那句其实是不是没啥用……

QQ截图20210720143136.png (51.16 KB, 下载次数: 14)

QQ截图20210720143136.png

作者: 开关关    时间: 2021-7-20 15:22
本帖最后由 开关关 于 2021-7-20 15:41 编辑
xuexizhanghao 发表于 2021-7-20 14:51
这个倒是可以,但是GAMEOVER以后要是重启游戏再进1号存档就会aaa is not defind
话说我忽然想到 ...


我在7楼发的方法不会受到DataManager.maxSaveFiles的限制,放心用就行。

怕冲突,试试不就知道了。我用的工程存档上限是20,测试用存档判定,存档编号是12345,照样没问题。

$gameSystem.onBeforeSave() 是存档的步骤之一,你可以去掉试试,看看报不报错。什么都是可以试出来的。
作者: xuexizhanghao    时间: 2021-7-20 16:00
本帖最后由 xuexizhanghao 于 2021-7-20 16:01 编辑
开关关 发表于 2021-7-20 15:22
我在7楼发的方法不会受到DataManager.maxSaveFiles的限制,放心用就行。

怕冲突,试试不就知道了。我用 ...


谢谢,多谢二位的教导终于成功了,感谢我这么蠢你们还耐心教我。

顺便问一句,按我一楼所说的,正常死亡后如果我想在再再读档的时候获得某个物品是不是也是类似的思路?
就是比如说,人物摔死了,就StorageManager.save(10,"摔死"),
完后每个存档点的的事件的“打开存档画面”的下一行写“如果StorageManager.load(10)=="摔死"就“增加物品:小心坠崖”“然后删掉这个存档10
如果StorageManager.load(10)=="吃得太多"就增加物品:饱腹之余,然后删掉存档10
之类的,我的思路对吗(我系统设置那里设的菜单上没有存档选项,只能用存档点,然后特殊物品当做成就列表用)

QQ截图20210720160121.png (49.06 KB, 下载次数: 10)

QQ截图20210720160121.png





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