天工神剪这个NPC待在地下宫殿二层,专门管魔族指令书的事。玩家把指令书交给他,脚本收回指令书,投一次骰子,按点数决定是给宝物还是当场放一只怪出来。整套流程全部写在一个txt文本里,段与段之间靠标签跳转,读起来不复杂,容易出岔子的地方是段名和物品名要对得上。下面把这段脚本从头到尾拆一遍。
一、先弄清这个NPC在版本里的位置
天工神剪不是随便摆的装饰NPC,他的功能挂在接待NPC列表里。打开 Mir200\Envir\MerChant.txt,加一行,格式是地图编号、X坐标、Y坐标、NPC名字、脚本文件名、段名。地图编号要和 MapInfo.txt 里地下宫殿二层那一行的编号一致,填错就会跑到别的地图去站着。
脚本文件一般放在 Market_Def 目录下,单独建一个txt,里面的段名统一以 @天工神剪 开头。挂好以后在控制台点控制,再点重新加载所有NPC,不回这一下,引擎读的还是旧脚本,NPC点下去没反应。
玩家要到他面前,得先走完一套任务流程:在盟重找镇魔守将接解救任务,组队下地下迷宫,走到宫殿长廊最里圈进地下宫殿入口,和宫殿看守对话进一层,一层里二十分钟内清完三批刷新的怪,再和地下城守卫对话进二层。二层杀掉那只一万八千血的魔界圣兽,捡到魔族指令书,才能拿来交给天工神剪。
二、主段 [@天工神剪] 怎么写
这是玩家点NPC第一眼执行的段。核心是一句检测,判断身上有没有魔族指令书。
[@天工神剪]
{
#IF
checkitem 魔族指令书 1
#SAY
谢谢你来解救我!你的表现已经证明你是个伟大的英雄!但是我现在还不想回去...地下城丰富的出产,另我感到惊喜。我要在地下城继续收集更多材料,支持更强的盔甲。为了感谢你的帮助,我可以告诉你一个秘密。
<返回宫殿/@返回宫殿> <打听天工神剪的秘密/@天工秘密> <退出对话/@exit>
#ELSESAY
为了收集上等的材料,我整天出入地下城与妖魔为伍。
<返回宫殿/@返回宫殿> <退出对话/@exit>
}
#IF 下面是检测条件,checkitem 魔族指令书 1 的意思是背包里至少有一张指令书。条件成立走 #SAY 那段,不成立走 #ELSESAY 那段,两段话不一样,一个是有书以后的客气话,一个是没书时的敷衍话。外面的那对大括号是引擎用来包判断块的写法,Hero引擎认这个结构,漏掉大括号有的版本会直接读不到判断。
按钮写在尖括号里,斜杠后面跟段名,点一下跳到那个段去执行。<返回宫殿/@返回宫殿> 是跳段,<退出对话/@exit> 里的 @exit 是系统自带的关闭弹窗,不用自己写段。尖括号和斜杠这两处最容易漏,写成 <返回宫殿@返回宫殿> 就变成了纯文字,点不动。
三、[返回宫殿] 和 [天工秘密] 两段
[@返回宫殿]
#act
map DM002A
这段只有一个动作,把人送回宫殿。map 后面跟的是地图代码,这里用 DM002A,代码要去 MapInfo.txt 里核对,自己版本里地下宫殿那块地图叫什么代码,就填什么。写错代码人会掉到空白地图或者干脆不传送。
[@天工秘密] 是主要的功能介绍页。内容讲的是魔龙套装能升级,天工神剪只掌握腰带和鞋子两处的升级门道,升级材料就藏在魔族指令书里。每张指令书配一次骰子投掷,投出来的点数决定释放结果,出宝物还是出怪看运气。页尾挂两个按钮,<关于魔族指令书/@关于指令> 和 <释放魔族指令书/@释放指令>,一个去看对照表,一个去真正投骰子。
四、对照表拆成两页 [@关于指令] 和 [@关于指令1]
骰子总和从3到18一共十六档,一页放不下,脚本把它切成两页。第一页 [@关于指令] 列3到10,页尾放 <下一页/@关于指令1>;第二页 [@关于指令1] 列11到18,页尾放 <上一页/@关于指令>。两页的开头文字一样,都是告诉玩家骰子点数对应密码。
这种分页写法有个坑,下一页和上一页必须成对,只写下一页不写上一页,玩家翻过去就回不来了,只能关掉对话重新点。跳转段名写错一个字,点按钮也是没反应。
五、十六档结果 [@骰子总和3] 到 [@骰子总和18]
每一档单独一个段,段里就一句话,说明这个总和会放出什么怪或者给什么。已列出的对应关系是这样:
骰子总和 3,放出魔龙战将
骰子总和 4,放出魔龙战将
骰子总和 5,放出魔龙巨将
骰子总和 6,放出魔龙战将
骰子总和 7,放出魔龙力士
骰子总和 8,放出双头金刚
骰子总和 9,放出白野猪
骰子总和 10,放出黄泉教主
骰子总和 11,放出虹魔教主
骰子总和 12,给出祝福油
骰子总和 13,放出电僵王
骰子总和 14,放出牛魔王
骰子总和 15,放出魔龙教主
骰子总和 16,放出双头血魔
脚本里3到18每档都有一段,17和18两段与前面对齐,格式一样,段名、提示文字、跳转按钮都照抄那段的结构写。每段页尾挂三个按钮,<返回上一页/@关于指令>、<返回对话/@天工秘密>、<退出对话/@exit>,让玩家看完能退回上一步。
有一点要留意,12这一档不是放怪,是直接给一瓶祝福油。这类给物的档在写的时候,段里就不能再刷怪了,否则玩家点一次既得油又跳出一只怪,数据就乱了。
六、真正干活的 [@释放指令] 要自己补
上面这些段只负责把结果告诉玩家,属于说明书。真正扣指令书、投骰子、刷怪的动作,写在 [@释放指令] 里。这一段原脚本通常不公开,得照自己版本的玩法补。写的时候抓住三件事:先把书收掉,再算出点数,最后按点数分支执行。
收书用 take 魔族指令书 1,和主段里的 checkitem 成对出现,忘了收书玩家能把一张书反复用。算点数用随机数命令连加,三个一到六的随机数相加,最小3最大18,正好对上对照表。分支用一连串的 #IF 判和值等于几,等于3就刷魔龙战将,等于12就给祝福油,依此类推。
刷怪用刷怪命令或者在地图上落一只怪,给物用 give。怪物的名字要和怪物数据库里的名字一致,物品的名字要和物品数据库里的名字一致,两边差一个字,引擎找不到就跳过,玩家点了没反应,还以为是脚本没加载。
七、几个常踩的坑
第一,checkitem 检测过了但没 take,一进对话就一直提示有书,玩家点多少次都不消耗。检测和收回要成对写。
第二,段名对不上。按钮里写 @关于指令,实际段写成 [@关于指令1] 或者少了字,点下去就是没动静,引擎也不会报错。
第三,地图代码错。map DM002A 这段里的代码,要和 MapInfo.txt 里的编号一致,不然返回宫殿这个按钮点完人会卡在原地或者掉图。
第四,大括号漏了。Hero引擎认大括号包判断块的写法,有的版本对括号敏感,少一个就整段不动。
第五,物品没建。魔族指令书、祝福油这些名字,先在物品数据库里建好对应记录,脚本里 checkitem 和 take 才判得动。库里没记录,检测永远不通过。
八、搬到自己版本要改哪几处
想把这套脚本挪去自己的版本,改的就是几个名字。物品名字换成自己库里已有的,怪物名字换成自己怪物库里的,地图代码换成自己地下宫殿那块地图的编号,NPC挂载的坐标和地图编号对着自己的配置文件来。段名单独一套,别和别人脚本撞名,撞了会互相覆盖。
改完在控制台重新加载所有NPC,拿一个带书的号实测:点NPC看主段出来没有,点打听秘密看对照表翻页顺不顺,点释放指令看是否扣书、是否刷怪、点数对上没有。四处都对上,这段脚本就算接好了。
传奇Hero引擎大话天工神剪明文脚本魔族指令书骰子召唤怪物详解
来源:
作者:
点击:

