众所周知,由于 1.4.5 本身的 bug,在作品封包后游玩,力量星的收集数据会发生错乱。更奇葩的是,如果作品的自动开始关卡的文件名里包含大写字母,那么你将无法在这个关卡中存档。为了解决这个问题,我特地重新写了个星星收集系统,并在这里分享,造福大家。
使用方法
如果想使用这个脚本,除了加入必要的脚本和事件外,你需要给你的关卡设定上自定义 HUD(如果你仍然想使用游戏默认的 HUD,可以直接用示例关卡里的仿默认 HUD)。除此之外,在世界地图编辑界面还需加入两个全局变量,变量名称分别为“StarData”“LevelID”。关卡中,除了仿默认 HUD 所需要用到的变量“DisableItems”外(这个变量用于在禁用储备栏道具的时候让 HUD 里的储备栏的道具图标变虚,如果不使用这个 HUD 或用不到禁用储备栏内道具的功能,可以考虑移除),HUB 关卡中还需要新建“WarpID”这个变量(常规关卡不需要)。
注:作品的自动开始关卡(也就是 HUB 关卡)的文件名一定不要包含大写字母!否则将无法正常进行存档功能!!!
星星的放置与记录
在这个系统中,每颗星星都有自己的专属 ID。放置星星(在这个系统中星星的默认 NPC ID 为 55)时,通过在星星的 name 中输入相应的数字(从 1 开始,挨个挨个往下加)来设定它的专属 ID。
星星包含 SMB3 星星和 SMW 星星,作用和性质大体和自带的星星相同。只不过,收集到 SMB3 星星后本质上是 SMB3 问号球通关,而非 SMB3 星星通关。而 SMW 样式的星星可以在名为“Star”的脚本的第一行修改参数内容来决定收集后下一次进入关卡,星星是否还会以蓝色的外观出现,或者直接消失。
全局变量“StarData”既用来记录星星的收集数量,也用来记录星星的收集情况(使用了字符串)。默认的星星记录上限为 200,若想提高星星的记录上限,则要在脚本“StarData”的标记的对应代码处按照注释进行修改。若使用不同于示例关卡中的自定义 HUD,则要注意把原先的显示星星数量用的 “sysval(starcount)”更换为“gval(StarData)”。
HUB 关卡的相关设置
在 HUB 关卡中,无需为其它常规关卡挨个设置传送用 Warp,只需使用 npc-178 并设定相应的参数即可。
npc-178 的 name 用于检测进入关卡内所包含星星的 ID 及收集情况。格式为:000|000|000|…(例:当进入的关卡内有三颗星,星星的编号分别为 1、2、3 时,将 npc-178 的 name 设置为 001|002|003)。
npc-178 的死亡所触发事件栏内填写解锁该关卡所需的星星数量;出现在屏幕内所触发事件栏内填写所传送的关卡的文件名称(包含文件格式名);对话所触发事件栏内填写传送的关卡的关卡入口的 Warp 编号(如果有的话)。
此外,需要注意的是,text(0) 和 text(1) 将被 npc-178 拿来储存重要数据,若想使用脚本内和 text 相关的函数,请避开这两个编号,以防冲突。
HUB 关卡内还需要在每个有关卡入口的场景放置一个用于传送到其它关卡的 Warp(一个场景仅需放一个,目前暂时只支持门类型的 Warp),并在“StarData”脚本的对应位置设定每个场景所使用的 Warp 的编号。
务必检查每个脚本中被标红的部分,如果有需要的话你可以随心所欲地按照你想要的方式根据注释来修改这些内容。
HUB 关卡和常规关卡中使用的脚本是不同的,没有必要把 HUB 关卡内的那些脚本复制粘贴到常规关卡中。
如果有什么不理解的地方,或者有什么关于这个脚本的建议,欢迎在这个帖子进行询问!
Credit
New Star Collection System Script made by HengShao.
Special Thanks to Victor ManuelMR for Default SMBX HUD script.
Special Thanks to Erwill for providing the method of handling data of Stars.
下载