卧龙笔计是1.85版本里辨识度很高的一种交互方式,玩家在卧龙山庄点击NPC后弹出翻书界面,一页页往后翻,翻到最后一页出现"前往卧龙山庄"的按钮,点下去就被传进目标地图。这套效果不是客户端单独能完成的,它靠NPC配置、翻书命令、跳转触发段三块拼起来。下面把每一块的写法和容易踩的坑拆开讲清楚。
一、先弄明白翻书效果是怎么跑起来的
翻书界面的本质是调用客户端里预先放好的书页图片。服务端在脚本里下发一个打开书的命令,客户端收到后到指定目录读取对应的书页文件,按顺序渲染成可以前后翻动的画面。当玩家翻到设定的最后一页,画面里会出现一个可点击的文字按钮,这个按钮绑定了服务端的一个跳转节。玩家点击后,客户端把动作发回服务端,服务端执行对应的脚本段,完成传送。
所以整套逻辑里,客户端负责显示和翻页,服务端负责下发命令和接收跳转。书页图片放在客户端目录,脚本放在服务端目录,两边必须对得上,缺一样都出不来效果。
二、脚本涉及的三处配置位置
第一处是NPC配置文件,也就是服务端里的MerChant.txt,负责告诉服务端卧龙山庄里有哪些NPC、叫什么名字、站在哪个坐标、调用哪套外观。
第二处是NPC对话脚本本身,负责写翻书的命令和翻到最后一页后的跳转节。
第三处是客户端的书页资源目录,也就是Data\books文件夹,里面按编号分文件夹存放书页图片,脚本里指定的编号必须和这里的文件夹对得上。
三处任何一处对不上,表现就是NPC点了没反应、书翻不开、或者翻到最后点按钮没动静。
三、MerChant.txt里的NPC配置
卧龙山庄的地图代码是Hero1,小地图代码是10302。要在地图里放NPC,先在MerChant.txt里按原有格式增加对应条目。参考写法如下:
卧龙\卧龙笔计 3 326 340 卧龙笔计 0 68.0 0
这一行里,卧龙\卧龙笔计是NPC的外观资源路径,3是脚本编号,326和340是NPC在地图里的坐标,后面的数字控制朝向和外观帧。不同引擎的字段含义略有差别,但前几项基本一致,照着文件里已有的行改就行,不要凭空编造字段顺序。
如果要在山庄里同时放几本不同颜色的古书,把每一本都单独加一行,坐标错开,避免重叠。例如:
卧龙\红色卧龙古书 HERO1 192 191 红色卧龙古书 0 71 0
卧龙\橙色卧龙古书 HERO1 63 185 橙色卧龙古书 0 71 0
卧龙\绿色卧龙古书 HERO1 147 90 绿色卧龙古书 0 71 0
每一行对应一个可点击的古书NPC,玩家点哪本,就执行哪本对应的脚本节。
四、翻书命令OPENBOOK的参数含义
打开书的命令是OPENBOOK,后面跟四个参数。写法是:
OPENBOOK 参数1 参数2 参数3 参数4
参数1指定客户端目录,客户端会去找".\Data\books\参数1"这个文件夹。
参数2接着参数1,指定该文件夹下的具体书页文件,也就是"参数2.uib"。这里的uib是16位色深位图格式,可以自己用工具制作替换。
参数3是要跳转到的NPC节名,也就是玩家翻到最后一页点击按钮后,服务端要执行的那个标签。
参数4是可选的,填TRUE表示允许无条件跳转。
举个最典型的例子:
OPENBOOK 1 0 @gohill
这行的意思是从客户端.\Data\books\1\目录打开书,翻到最后一页时,画面里出现"前往卧龙山庄"的按钮,玩家点击后触发服务端的@gohill节。
五、进入卧龙山庄的触发节怎么写
翻到最后一页点击按钮后要执行的逻辑,单独写成一个标签节。写法如下:
[@gohill] TRUE
#ACT
MAPMOVE hero1 220 212
MAPMOVE是传送命令,后面跟地图代码和落点坐标。hero1是卧龙山庄的地图代码,220和212是玩家进入后的落脚点。坐标要填在地图的可通行区域,填到墙里或者地图外,玩家进去就会被卡住。
注意[@gohill]后面那个TRUE,这是最容易漏的地方。标签名后面加一个空格再写TRUE,表示这个节允许无条件跳转。如果不加TRUE,翻书命令执行到最后一页时,因为玩家当前界面里没有写死"<任意/@gohill>"这样的按钮链接,服务端会拒绝这次跳转,表现就是翻到最后点了没反应。只有当#SAY里存在对应的按钮写法,或者脚本里用goto命令主动调用时,才不需要TRUE。翻书场景恰恰两者都没有,所以必须加上。
六、把翻书命令放进NPC对话里
有了跳转节,还要在NPC的主对话里下发翻书命令。完整的写法是这样:
[@main]
#ACT
OPENBOOK 1 0 @gohill
玩家点击卧龙笔计这个NPC,服务端执行[@main],下发OPENBOOK命令,客户端弹出翻书界面。玩家一路翻到最后一页,点"前往卧龙山庄",服务端执行[@gohill],完成传送。
如果想让玩家在翻书前先看到一个提示,也可以在[@main]里加#SAY写点文字,但翻书命令一般放在#ACT里,不要和#SAY里的按钮混在一起,否则容易出现书翻开了但按钮不响应的情况。
七、多本书、多个入口的写法
有些版本里,山庄的古书不止一本,玩家点不同的书去不同的地图。这种就是把每本书配一个NPC,每个NPC的[@main]里写不同的OPENBOOK参数,每个跳转节里写不同的MAPMOVE坐标。
例如红色古书去A点,橙色古书去B点:
红色古书脚本:
[@main]
#ACT
OPENBOOK 1 0 @gohill1
[@gohill1] TRUE
#ACT
MAPMOVE hero1 220 212
橙色古书脚本:
[@main]
#ACT
OPENBOOK 2 0 @gohill2
[@gohill2] TRUE
#ACT
MAPMOVE hero1 180 240
注意每本书的参数1要和客户端books目录下的文件夹编号对应。红色古书用1号文件夹,橙色古书用2号文件夹,两本书的书页图片分别放在books\1\和books\2\里。编号写错,书页就会显示成空白或者乱图。
八、客户端书页资源的准备
服务端脚本写对了,客户端没有对应资源照样白搭。客户端根目录下要有Data\books文件夹,里面按编号建子文件夹,每个子文件夹里放0.uib、1.uib这样按顺序编号的书页文件。
uib是16位位图,制作时保持尺寸一致,不要有的页大有的页小,否则翻页时画面会跳。最后一页的图片上要预留出按钮区域,因为"前往卧龙山庄"这几个字是由服务端脚本控制显示的,图片上不要自己画死,不然会和脚本生成的按钮重叠。
书页数量不用和脚本参数2严格对应到最后一页,参数2只决定从哪一页开始打开,翻页到末尾是客户端根据文件夹里的文件数量自动判断的。
九、常见错误和排查方向
点NPC完全没反应,先检查MerChant.txt里那行有没有写对,脚本编号是否和脚本文件里的编号对应,坐标是否落在山庄地图范围内。
书能打开但翻到最后没有按钮,检查跳转节的标签名是否和OPENBOOK参数3完全一致,大小写和拼写都要对上。再检查标签名后面有没有加TRUE。
有按钮但点了不传送,检查MAPMOVE后面的地图代码和坐标。地图代码写错,玩家会被传到一个不存在的地图或者原地不动。坐标写到障碍物上,玩家会被卡住。
书页显示空白或花屏,检查客户端books目录下的编号是否和脚本参数1一致,uib文件是否损坏,位深是否符合要求。
玩家能进山庄但立刻被弹出来,检查山庄地图是否在服务端地图列表里正确加载,地图文件和地图代码是否匹配。
改完脚本一定要重新加载NPC脚本或者重启服务端,客户端改动过书页资源也要重启客户端,不然改动不生效,会误以为是脚本写错了。
十、一套可直接对照的完整示例
把上面的内容拼成一套能直接照着改的写法。
MerChant.txt里增加:
卧龙\卧龙笔计 3 326 340 卧龙笔计 0 68.0 0
脚本文件里写:
[@main]
#ACT
OPENBOOK 1 0 @gohill
[@gohill] TRUE
#ACT
MAPMOVE hero1 220 212
客户端准备:
Data\books\1\0.uib、1.uib、2.uib……按顺序放好,最后一页留出按钮位置。
这套结构跑通后,玩家在山庄点卧龙笔计,书翻开,一路翻到末尾,出现"前往卧龙山庄",点下去传送到hero1地图的220 212坐标。想换地图、换落点、换书页数量,只改对应的参数和资源即可,结构不用动。
把配置、命令、跳转节、客户端资源这四样逐一核对到位,卧龙笔计的翻书传送就不会再出问题。核心就两点:参数编号和目录编号要对得上,跳转节后面的TRUE不能漏。
传奇1.85卧龙笔计翻书效果进入卧龙山庄触发脚本编写完整教程
来源:
作者:
点击:

