激情中心在仿盛大版本中属于核心活动NPC,承担着状态展示、等级门槛校验、地图传送和泡点开启四项功能。3K引擎的脚本写法和HERO、GOM有明显差异,直接套用其他引擎的写法会出现命令不识别或者回调标签找不到的情况。下面把完整的脚本结构拆开,逐段说明命令用法和容易踩坑的位置。
主菜单状态展示区
脚本文件放在MirServer\Mir200\Envir\Market_Def目录下,文件名格式为“NPC名-地图号.txt”。以盟重省为例,文件名写“激情中心-3.txt”。脚本头部的功能声明只需要基础的对话标识,不需要买卖类标识。
主菜单的核心是展示玩家当前的各项属性数值。3K引擎提供了大量<$变量>标签用于直接读取人物数据,不需要额外的脚本命令去查询:
```
[@main]
¤╭⌒╮╭⌒╮ ╱◥██◣ ╭⌒╮
<您当前的元宝为/SCOLOR=20> :<$GAMEGOLD>个 ︱田︱田田|╰-------------
<您的当前声望指数为/SCOLOR=20>:<$CREDITPOINT> ╬╬╬╬╬╬╬╬╬╬╬╬╬
<您当前的荣誉值为/SCOLOR=222>:<$GLORYPOINT> <你当前攻击力:/SCOLOR=154><$DC>-<$MAXDC>
<你当前魔法力:/SCOLOR=154><$MC>-<$MAXMC> <你当前道术力:/SCOLOR=154><$SC>-<$MAXMC>
<你当前PK值力:/SCOLOR=154><$PKPOINT> <当前日期和时间为:/SCOLOR=154> <$DATETIME>
<前往银月城/@回程> <前往激情中心/@休息> <传奇游戏介绍/@查询>
```
<$GAMEGOLD>读取元宝余额,<$CREDITPOINT>读取声望值,<$GLORYPOINT>读取荣誉值。<$DC>和<$MAXDC>分别读取攻击力下限和上限,<$MC>和<$MAXMC>对应魔法力,<$SC>和<$MAXSC>对应道术力。<$PKPOINT>读取当前PK值,<$DATETIME>读取服务器当前日期和时间。这些变量标签在3K引擎中都是内置的,不需要额外定义,直接写在脚本里就能被替换为实际数值。
文字颜色用/SCOLOR=数字的格式控制,数字范围0到255。20号色用于元宝和声望的标识文字,222号色用于荣誉值,154号色用于各项属性数值的标签。SCOLOR写在方括号内文字之后、尖括号闭合之前,顺序不能颠倒。
前往银月城的等级校验与传送
回程功能需要做等级门槛检测,低于60级的玩家不执行传送操作。3K引擎的条件判断用CHECKLEVELEX命令:
```
[@回程]
#IF
CHECKLEVELEX > 59
#ACT
mapmove village 130 130
#ELSEACT
MESSAGEBOX 对不起!你还不满60级无法为你服务!!
```
CHECKLEVELEX > 59等价于等级大于等于60。判断通过后执行mapmove命令,格式为mapmove 地图编号 坐标X 坐标Y。village是3K引擎内置的银月城地图编号,不同引擎中这个地图编号可能不同,需要根据服务端实际的地图配置文件确认。如果服务端的地图文件中银月城的编号不是village,需要替换为实际编号。
MESSAGEBOX命令用于弹出提示对话框,和SENDMSG的区别在于MESSAGEBOX会弹出一个需要玩家点击确认的窗口,而SENDMSG只在聊天框或公告区域显示文字。等级不足这种需要玩家明确注意的提示用MESSAGEBOX更合适。
激情中心传送与泡点地图设置
传送到激情中心的脚本段是核心功能,包含地图切换、泡点计时器启动和全服公告三部分:
```
[@休息]
#IF
#ACT
MAP GA1
SETONTIMER 4 1
SENDMSG 0 玩家[%s]进入激情中心!拿免费的双倍泡点您还等什么?
BREAK
```
MAP GA1中的GA1是激情中心地图的编号,这个编号必须在服务端的MapInfo.txt文件中存在且配置正确。地图不存在时mapmove和MAP命令都会静默失败,玩家点击后没有任何反应,也不产生报错提示。
SETONTIMER是3K引擎中开启泡点功能的核心命令。格式为SETONTIMER 定时器编号 参数。定时器编号的取值范围是0到9,不同编号对应不同的泡点效果。参数1通常表示开启,0表示关闭。这个定时器启动后,引擎会按照预设的时间间隔给地图内的玩家持续增加经验值。具体的经验增加速率不在NPC脚本中配置,而是在M2Server的泡点参数设置中调整。部分版本中SETONTIMER后面的参数控制的是泡点间隔的档位,1对应标准速率,2对应双倍速率,具体含义需要查阅对应引擎版本的说明书。
SENDMSG 0是向全服发送公告。3K引擎的公告消息类型中,0和1均为全服公告,数字后面的250和252分别是文字颜色代码。消息中的%s会被自动替换为触发公告的玩家名称。注意SENDMSG的公告内容不要写得过长,超过100个字符的公告在部分客户端上会被截断显示。
BREAK命令必须写在#ACT段的末尾,作用是终止当前脚本段的执行。缺少BREAK时,引擎会继续往下执行后续的脚本段,可能触发不必要的逻辑。
激情中心介绍界面的多行文字排版
查询功能展示的是服务器的玩法和特色说明,文字行数较多,需要控制好每行的长度和颜色:
```
[@查询]
<1.升级需要的经验降低为盛大的千分之一打怪就能升到顶!/SCOLOR=150>
<2.装备全部暴,各大地图狂暴,消灭终极BOSS还拿终极奖励/SCOLOR=150>
<3.地图超级多,进入全部免费!所以取消元宝地图!/SCOLOR=150>
<4.不设置杂乱无章公告,小退上线自动播放滚动指南!/SCOLOR=150>
<5.装备回收设在银月城,输入《@装备回收》也可以直接一键回收!/SCOLOR=150>
<6.用金刚石在银月城释放3倍经验和内功经验升级更是超爽无比!/SCOLOR=150>
<7.收集7棵龙魂100%奖励复活戒指,在复活地图打一套图纸去找土城/SCOLOR=150>
<云游铁匠><也能获得复活戒指需要材料天赐神石在复活殿堂二层必暴!/SCOLOR=150>
```
每行文字用尖括号包裹,行与行之间直接换行,不需要额外的换行符。SCOLOR=150统一使用150号色,这个颜色在3K引擎中对应浅绿色,适合用于说明性文字的显示。每行的长度控制在20到25个中文字符之间,超过这个长度在部分客户端上会显示不全。
如果需要在文字中间插入带下划线的可点击链接,用<文字内容/@跳转标签>的格式。链接和普通文字可以混排在同一行中,但链接部分必须单独用一组尖括号包裹。
引擎适配与常见问题
3K引擎的输入框命令和HERO引擎有本质区别。HERO引擎的回调标签必须加Call前缀,而3K引擎直接使用原始指令名作为回调标签。HERO引擎的非法字符检查是自动跳转的,3K引擎需要开发者手动配置过滤列表,通常位于服务端Envir目录下的某个配置文件中。从HERO引擎迁移脚本到3K引擎时,所有涉及@@InPutString和@@InPutInteger的回调标签都要去掉Call前缀,同时检查过滤列表是否已经配置。
地图编号不匹配是激情中心传送失败的首要原因。village和GA1这两个编号是示例脚本中的写法,实际架设时必须在MirServer\Mir200\Envir\MapInfo.txt中确认这两个地图编号是否存在。MapInfo.txt中每一行记录一个地图的编号、显示名称和地图文件路径。如果服务端中银月城的编号不是village,需要把脚本中的village替换为MapInfo.txt中实际使用的编号。同理,激情中心地图的编号GA1也需要核对。
公告不显示或显示位置不对。3K引擎的SendMsg命令的第一个参数控制消息类型:1为顶部公告,2为聊天框滚动,3为居中大图公告(部分版本支持)。脚本中写SENDMSG 0时,0和1均为全服公告,但具体的显示位置取决于引擎版本的内部实现。如果公告显示在聊天框而不是屏幕顶部,把参数从0改为1试试。不同版本的3K引擎对这个参数的处理有差异,需要在实际环境中测试确认。
脚本文件编码问题。NPC脚本文件必须保存为ANSI编码格式。用记事本编辑后保存为UTF-8格式时,文件开头的BOM字符会被引擎当作脚本内容的一部分,导致第一行的功能声明被污染,NPC点击后没有任何反应也不报错。用Notepad++打开脚本文件,在编码菜单中确认当前显示ANSI,如果不是,选择“转为ANSI编码”后保存。
SETONTIMER不生效。泡点定时器没有正常启动时,检查M2Server的泡点参数设置中是否开启了对应定时器编号的功能。部分3K引擎版本需要在M2控制台的选项菜单中进入泡点设置页面,勾选启用泡点功能并配置好经验增加速率和间隔时间,NPC脚本中的SETONTIMER命令才会真正生效。只写脚本不在引擎中开启对应功能,定时器命令执行后没有任何效果。
修改脚本后需要重新加载。在M2Server控制台的选项菜单中找到重新加载NPC的入口执行一次,或者直接重启M2Server。只保存文件不执行重载操作,引擎读取的还是内存中的旧脚本数据,修改不会生效。用测试账号实际点击NPC验证各个功能模块是否正常工作,重点测试等级不足时的提示、传送后的地图位置和泡点经验是否正常增加。
传奇3K引擎激情中心脚本完整结构公告触发等级传送泡点机制与对话配置全解
来源:
作者:
点击:

