分享到新浪微博 分享到QQ空间 打印

[疑问] 剧情脚本关联

剧情脚本关联

刚刚开始尝试通过XSE对绿宝石ROM中的剧情的脚本写入
虽然教程区有关于XSE的教程,也有了关于标识的概念,但在编辑脚本时还是不知道该怎么写才能让剧情跟着自己的所想的运转。

所以呢就想通过实例来寻求帮助,目的是让两个剧情形成关联。
先看下图,是两个事件的初步脚本和一些在AM中相关的信息

剧情要求:
1.玩家在没触发剧情前无法看到屏幕上的两个剧情人物
2.玩家踩到红衣女性角色前的“地雷式”脚本时,红衣服角色凭空出现,并面向右做了跳两下的动作,随后该角色消失。
此后该脚本不能再次被触发。
3.当玩家完成红衣女子剧情后,玩家踩到眼睛男子前的“地雷式”脚本时,眼睛男子凭空出现,并面向右做了跳5下的动作,随后该角色消失。
此后该脚本同样不能再次被触发。

注意的是“眼睛男子”的剧情只有在“红衣女子”剧情被触发后才能被触发,也就是形成关联。


另外在AM中关于绿色的”地雷式“脚本中,它的"路标;";"路标值;"都应该怎么写,是不是跟NPC的角色ID是一种性质?


其实这个贴只想想通过一个简单的实例,求一个脚本正解从而能更好的认识和编写自己的剧情。谢谢

TOP

如果我不是只能用手机,肯定会给你一个完美的答复的…

于是召唤roy童鞋给你解答…

如果他给不出范例,周末我去网吧给你写吧…


想死你们了!

TOP

啊,太感谢了,这样就有盼头了。。。。

TOP

嘛,还真有点复杂
感觉应该先在地图脚本中将两个人物都隐藏
然后红衣女子前的那个脚本的触发变量和触发值设置成一开始就能触发的变量和值,比如像游戏开始的一些剧情的变量和值(前提是你不用那些东西了)
触发完后可以setvar将那个变量的值+1,这样红衣女现身的脚本就不会继续执行了
如果红衣女出现的脚本就是全部的红衣女剧情的话,将眼镜男的触发变量设置成同一个var,但是数值设置成触发完红衣女剧情后那个var的值

比如变量A初始值为0
那么红衣女的触发变量就是A,值就是0,完成后A变为1;
眼镜男的触发变量也为A,但是触发值是1,这样完成红衣女后眼镜男就能触发了

至于范例,我不想给出。上面的只是理论上实现的方法,但是脚本这种东西往往事与愿违,只有自己慢慢调整才能达到自己的需要。

[ 本帖最后由 roywillow 于 2010-4-13 08:42 编辑 ]

TOP

回复 地板 roywillow 的帖子

谢谢,细心的解答,不过没范例真是遗憾

如果一组剧情都是按顺序发生的
我是不是可以这样先
setvar 0x变量 0x0
然后就开始剧情
compare 0x变量 0x0
if 0x1 goto 0x剧情1(setvar 0x变量 0x1)

end
下一个剧情就这样
compare 0x变量 0x1
if 0x1 goto 0x剧情2(setvar 0x变量 0x2)

end
接下去的才能触发的剧情
compare 0x变量 0x2
if 0x1 goto 0x剧情3(setvar 0x变量 0x3)

end

等等等等,这样是不是仅仅通过一个变量就可以完成一大串无分支的剧情
不过怎么让那些剧情的相关人物,随着剧情触发而出现和消失
难道每个都要用hidesprite ;setflag
求一个正解,也希望花子给个范例。因为无可避免的两个剧情会发生在通一个地方

另外怎么确定一个空闲的变量,就比如上述脚本中的“变量”换成什么就能写入ROM了

[ 本帖最后由 loloa419950238 于 2010-4-13 23:23 编辑 ]

TOP

首先,两个人不显示在屏幕上,就必须在适当的地方给两人的“人物ID”setflag了。
这一步是放在其它地方的,比如你游戏初始的时候必经的对话的时候,或者放在这张地图的地图头的脚本里面。
关键代码如下:
001 setflag 0x4B1
002 setflag 0x4B2
点击查看原始代码
紧接着,踩到你的地雷1,就要求红衣出现。这一步的脚本是写在陷阱里的。
陷阱设置如下(路标这翻译哪来的- -感觉好怪,我翻译一般都说是变量):
变量名:5000
变量值:0000
脚本主要内容:
001 clearflag 0x4B1
002 showsprite 0x2
003 applymovement 0x2 @movedata1
004 waitmovement 0x0
005 pause 0x25
006 hidesprite 0x2
007 setflag 0x4B1
点击查看原始代码
同时为了不让陷阱1的脚本反复发生,继续增加以下内容:
001 setvar 0x5000 0x1
点击查看原始代码
最后增加如下脚本来为陷阱二做铺垫:
001 setvar 0x5001 0x0
点击查看原始代码
而陷阱2为了在一开始就不发生反应而在以上剧情发生过之后再反应,需如下设置:
变量:5001
变量值:0001
脚本内容:
001 setvar 0x5001 0x1
002  '这里再填充出现、蹦跶和消失的脚本,基本上和上面差不多,你自己写吧
点击查看原始代码
共写入脚本如下:
001 #org @start1
002 setflag 0x4B1
003 setflag 0x4B2
004 end
005  
006 #org @start2
007 clearflag 0x4B1
008 showsprite 0x4
009  '蹦跶
010 pause 0x25
011 hidesprite 0x4
012 setflag 0x4B1
013 setvar 0x5000 0x1
014 setvar 0x5001 0x1
015 end
016  
017 #org @start3
018 setvar 0x5001 0x1
019 clearflag 0x4B2
020 showsprite 0x3
021  '蹦跶
022 pause 0x25
023 hidesprite 0x3
024 setflag 0x4B2
025 setvar 0x5001 0x0
026 end
点击查看原始代码
开学之后很久没再写脚本,也没测试,你自己多试试吧。
至于变量和标识的异同以及如何寻找空闲,请参考教程区的XSE相关教程。

[ 本帖最后由 王道 于 2010-4-14 21:57 编辑 ]
每次来网吧就用“王道”给PTB浇浇水……好习惯吧?

TOP

控制那种“地雷”脚本是否触发不是在脚本内部进行判断,而是在地图中设置的。是先判断然后执行或者不执行,不是先执行然后判断。
我不否认脚本中进行判断的方法,但是不觉得那样太复杂了吗?

TOP

以前一直没注意到,原来还有地图脚本的说。
用地图脚本控制NPC的可见性,不错。可是
setflag,是怎么和 人物ID连系起来的呢,粗粗看了下ID河flag是两个不同的值

TOP

人物ID就是一种flag
set这个flag后人物就会隐藏,clear后就会显示
这个在花子的教程中提到过

TOP