当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇新活动礼部尚书NPC脚本完整编写与配置方法

热度:
传奇里做“新活动礼部尚书”这类活动NPC,通常不是单独写一段对话就能完成,而是由NPC配置、脚本文件、活动入口、条件判断、奖励发放、传送跳转、变量记录等部分组合起来。

下面按传奇常见脚本写法整理一套可直接改动的礼部尚书活动脚本模板。不同引擎、不同版本对命令支持会有差异,实际使用时需要根据自己的服务端、NPC编号、地图编号、物品名称、活动奖励进行调整。

一、礼部尚书活动脚本整体结构

一个完整的礼部尚书活动NPC通常包含这些功能:

活动介绍
玩家点击礼部尚书后,先看到活动说明。

活动入口
玩家可以选择参加活动、领取奖励、兑换道具、传送活动地图等。

条件判断
判断玩家等级、职业、金币、元宝、背包物品、活动次数等。

奖励发放
满足条件后给玩家发放经验、金币、元宝、活动道具、礼包物品等。

次数限制
使用变量记录玩家当天是否已经领取过奖励,避免重复领取。

活动传送
把玩家传送到活动地图或活动副本。

活动结束提示
活动时间结束后,NPC只显示活动已结束。

二、礼部尚书NPC基丛话脚本

下面是一个礼部尚书NPC主菜单脚本示例。

[@main]
IF
ACT
SAY
我是礼部尚书,负责本次新活动事务。\
当前活动正在进行中,勇士可以找我领取活动奖励、兑换活动道具、进入活动地图。\
\
<查看活动说明/@活动说明>\
<领取活动奖励/@领取奖励>\
<兑换活动道具/@兑换道具>\
<进入活动地图/@进入活动>\
<离开/@exit>

说明:

[@main]是玩家点击NPC后默认进入的段落。
#IF表示开始条件判断。
#ACT表示条件满足后执行动作。
#SAY后面是NPC对话内容。
<文字/@标签>是玩家可点击的选项。
表示换行。

三、活动说明脚本

活动说明一般只用于展示文字,不需要复杂判断。

[@活动说明]
IF
ACT
SAY
本次新活动由礼部尚书主持。\
活动期间,勇士可以完成指定任务、参与活动挑战、兑换限定奖励。\
\
活动规则:\
等级达到35级才可参与主要奖励。\
每日可领取一次活动奖励。\
活动道具可在礼部尚书处兑换。\
进入活动地图前请准备好药品和装备。\
\
<返回主菜单/@main>

如果版本支持时间判断,也可以在这里加入活动开始时间和结束时间提示。

四、领取活动奖励脚本

领取奖励需要判断玩家等级、是否已经领取、背包是否满等条件。

[@领取奖励]
IF
CHECKLEVEL35
ACT
goto@检查领取次数

ELSESAY
你的等级未达到35级,暂时无法领取本次活动奖励。\
\
<返回主菜单/@main>

这里先判断等级是否达到35级。

如果等级不足,就提示玩家等级不够。

如果等级满足,则跳转到@检查领取次数继续判断是否已经领取过。

五、使用变量记录每日领取次数

传奇脚本中可以使用变量或逻辑变量来记录玩家领取状态。

下面用逻辑变量[1]做示例。

[@检查领取次数]
IF
check[1]1
ACT
goto@已经领取

ELSESAY
goto@发放奖励

说明:

check[1]1表示检测逻辑变量[1]是否为1。
如果为1,说明玩家今天已经领取过奖励。
如果不为1,则跳转到@发放奖励。

不同引擎中变量写法可能不同,有的版本使用P0-P9、D0-D9等数字变量,需要根据实际引擎调整。

六、发放活动奖励脚本

奖励发放部分需要扣除次数限制,并给玩家发放物品。

[@发放奖励]
IF
ACT
SET[1]1
GIVE金币50000
GIVE活动礼券1
GIVE超级金创药5
SENDMSG5礼部尚书赐予你活动奖励,请查看背包。
SAY
恭喜勇士,成功领取礼部尚书活动奖励。\
\
<返回主菜单/@main>

说明:

SET[1]1表示把逻辑变量[1]设置为1,代表已经领取。
GIVE金币50000表示给玩家5万金币。
GIVE活动礼券1表示给玩家1个活动礼券。
GIVE超级金创药5表示给玩家5瓶超级金创药。
SENDMSG用于给玩家发送提示信息。

这里的物品名称必须和DB中的物品名称一致。如果DB里没有“活动礼券”,需要先在物品数据库中添加该物品。

七、已经领取奖励提示脚本

如果玩家已经领取过奖励,需要单独提示。

[@已经领取]
IF
ACT
SAY
你今天已经领取过礼部尚书活动奖励了。\
每日只能领取一次,请明天再来。\
\
<返回主菜单/@main>

如果要做每日重置,需要引擎支持按天重置变量。不同版本处理方式不同,有的需要通过机器人脚本、定时脚本或登录触发脚本重置。

八、兑换活动道具脚本

兑换功能通常使用CHECKITEM检测玩家是否拥有指定物品,再用TAKE扣除物品,用GIVE发放奖励。

[@兑换道具]
IF
ACT
SAY
礼部尚书这里可以兑换活动道具。\
请确认背包中有足够材料。\
\
<兑换活动宝箱/@兑换宝箱>\
<兑换经验卷轴/@兑换经验>\
<返回主菜单/@main>

兑换宝箱脚本:

[@兑换宝箱]
IF
CHECKITEM活动礼券5
ACT
TAKE活动礼券5
GIVE活动宝箱1
SENDMSG5你使用5张活动礼券兑换了1个活动宝箱。
SAY
兑换成功,你获得了活动宝箱。\
\
<继续兑换/@兑换道具>

ELSESAY
你的活动礼券不足,需要5张活动礼券才能兑换活动宝箱。\
\
<返回兑换页面/@兑换道具>

兑换经验卷轴脚本:

[@兑换经验]
IF
CHECKITEM活动礼券2
ACT
TAKE活动礼券2
GIVE经验卷轴1
SENDMSG5你使用2张活动礼券兑换了1个经验卷轴。
SAY
兑换成功,你获得了经验卷轴。\
\
<继续兑换/@兑换道具>

ELSESAY
你的活动礼券不足,需要2张活动礼券才能兑换经验卷轴。\
\
<返回兑换页面/@兑换道具>

九、进入活动地图脚本

进入活动地图需要判断等级、是否满足条件,然后使用MAP或MAPMOVE传送玩家。

[@进入活动]
IF
CHECKLEVEL35
ACT
MAPMOVE3330330
SENDMSG5礼部尚书将你传送至活动地图。

ELSESAY
你的等级未达到35级,无法进入活动地图。\
\
<返回主菜单/@main>

说明:

MAPMOVE3330330表示传送到地图编号3的坐标330330。
地图编号和坐标需要根据自己的版本修改。
如果活动地图是自定义地图,需要把地图编号改成实际活动地图编号。

如果想随机传送,可以使用:

MAP活动地图编号

如果想传送到固定坐标,可以使用:

MAPMOVE地图编号XY

十、完整礼部尚书活动脚本示例

下面把前面内容整合成一个较完整的礼部尚书活动脚本。

[@main]
IF
ACT
SAY
我是礼部尚书,负责本次新活动事务。\
勇士可以在此领取奖励、兑换道具、进入活动地图。\
\
<查看活动说明/@活动说明>\
<领取活动奖励/@领取奖励>\
<兑换活动道具/@兑换道具>\
<进入活动地图/@进入活动>\
<离开/@exit>

[@活动说明]
IF
ACT
SAY
本次新活动由礼部尚书主持。\
活动期间,勇士可以完成指定任务、参与活动挑战、兑换限定奖励。\
\
活动规则:\
等级达到35级才可领取主要奖励。\
每日可领取一次活动奖励。\
活动道具可在礼部尚书处兑换。\
进入活动地图前请准备好药品和装备。\
\
<返回主菜单/@main>

[@领取奖励]
IF
CHECKLEVEL35
ACT
goto@检查领取次数

ELSESAY
你的等级未达到35级,暂时无法领取本次活动奖励。\
\
<返回主菜单/@main>

[@检查领取次数]
IF
check[1]1
ACT
goto@已经领取

ELSESAY
goto@发放奖励

[@发放奖励]
IF
ACT
SET[1]1
GIVE金币50000
GIVE活动礼券1
GIVE超级金创药5
SENDMSG5礼部尚书赐予你活动奖励,请查看背包。
SAY
恭喜勇士,成功领取礼部尚书活动奖励。\
\
<返回主菜单/@main>

[@已经领取]
IF
ACT
SAY
你今天已经领取过礼部尚书活动奖励了。\
每日只能领取一次,请明天再来。\
\
<返回主菜单/@main>

[@兑换道具]
IF
ACT
SAY
礼部尚书这里可以兑换活动道具。\
请确认背包中有足够材料。\
\
<兑换活动宝箱/@兑换宝箱>\
<兑换经验卷轴/@兑换经验>\
<返回主菜单/@main>

[@兑换宝箱]
IF
CHECKITEM活动礼券5
ACT
TAKE活动礼券5
GIVE活动宝箱1
SENDMSG5你使用5张活动礼券兑换了1个活动宝箱。
SAY
兑换成功,你获得了活动宝箱。\
\
<继续兑换/@兑换道具>

ELSESAY
你的活动礼券不足,需要5张活动礼券才能兑换活动宝箱。\
\
<返回兑换页面/@兑换道具>

[@兑换经验]
IF
CHECKITEM活动礼券2
ACT
TAKE活动礼券2
GIVE经验卷轴1
SENDMSG5你使用2张活动礼券兑换了1个经验卷轴。
SAY
兑换成功,你获得了经验卷轴。\
\
<继续兑换/@兑换道具>

ELSESAY
你的活动礼券不足,需要2张活动礼券才能兑换经验卷轴。\
\
<返回兑换页面/@兑换道具>

[@进入活动]
IF
CHECKLEVEL35
ACT
MAPMOVE3330330
SENDMSG5礼部尚书将你传送至活动地图。

ELSESAY
你的等级未达到35级,无法进入活动地图。\
\
<返回主菜单/@main>

十一、NPC配置文件写法

脚本写好后,还需要在NPC配置中把礼部尚书放到对应地图。

示例格式:

地图编号坐标X坐标YNPC名称外观编号脚本文件

示例:

3330330礼部尚书10Market礼部尚书.txt

说明:

3是地图编号,需要改成实际地图编号。
330330是NPC坐标。
礼部尚书是NPC显示名称。
10是NPC外观编号,不同版本外观编号可能不同。
Market礼部尚书.txt是脚本文件路径。

脚本文件路径也要根据实际目录调整。有的版本放在Market目录下,有的版本放在自定义NPC脚本目录中。

十二、活动定时开启写法

如果希望礼部尚书活动按时间开启,可以配合机器人脚本或定时脚本使用。

机器人脚本示例:

AutoRunNPCDAY10:00@礼部尚书活动开始

表示每天10点触发@礼部尚书活动开始。

触发脚本示例:

[@礼部尚书活动开始]
IF
ACT
SENDMSG0礼部尚书新活动已经开启,请前往活动NPC处领取奖励。

如果引擎支持时间判断,也可以在NPC脚本里判断当前时间,活动时间外只显示活动未开始。

示例:

[@main]
IF
ACT
SAY
当前活动暂未开启,请等待活动时间。\
\
<离开/@exit>

活动时间开启后再替换成正式活动菜单。

十三、脚本修改注意事项

物品名称必须和DB一致
如果DB中叫“超级金创药”,脚本里就不能写成“大药”或“红药”。

地图编号必须正确
MAPMOVE和MAP中的地图编号要和实际地图对应,否则玩家无法传送。

变量不能乱用
逻辑变量、数字变量要根据版本支持情况使用,避免和其他功能冲突。

奖励数量要合理
金币、元宝、经验、道具数量不要设置过高,避免影响游戏平衡。

每日领取需要重置机制
如果只设置SET[1]1,没有重置逻辑,玩家可能永远无法再次领取。

脚本段落标签不能重复
[@领取奖励]、[@兑换道具]这类标签在一个脚本文件中只能出现一次。

修改脚本后要重新加载
修改完成后,需要在M2或对应管理工具中重新加载脚本,否则不会生效。

十四、常见错误排查

点击NPC没有反应

检查脚本文件路径是否正确,NPC配置中的脚本文件名是否和实际文件一致。

对话不显示

检查#SAY是否写在正确位置,段落标签是否完整。

奖励没有发放

检查物品名称是否存在于DB中,GIVE命令格式是否正确。

兑换失败

检查CHECKITEM中的物品名称和数量是否正确,玩家背包里是否真的有对应物品。

传送失败

检查地图编号是否正确,目标地图是否存在,坐标是否合法。

每天都能重复领取

说明领取变量没有被正确重置,需要增加每日重置逻辑。

脚本死循环

检查GOTO跳转是否形成无限循环,例如A段跳到B段,B段又跳回A段,中间没有结束条件。

十五、可直接套用的简化版礼部尚书脚本

如果只需要一个基础活动NPC,可以使用下面这个简化版。

[@main]
IF
ACT
SAY
我是礼部尚书,新活动正在进行中。\
勇士可以领取活动奖励或兑换活动道具。\
\
<领取活动奖励/@领取奖励>\
<兑换活动道具/@兑换道具>\
<进入活动地图/@进入活动>\
<离开/@exit>

[@领取奖励]
IF
CHECKLEVEL35
check[1]0
ACT
SET[1]1
GIVE金币50000
GIVE活动礼券1
SENDMSG5礼部尚书赐予你活动奖励。
SAY
领取成功,请查看背包。\
\
<返回主菜单/@main>

ELSESAY
你等级不足或今日已经领取过奖励。\
\
<返回主菜单/@main>

[@兑换道具]
IF
CHECKITEM活动礼券5
ACT
TAKE活动礼券5
GIVE活动宝箱1
SENDMSG5兑换成功,获得活动宝箱。
SAY
兑换成功。\
\
<返回主菜单/@main>

ELSESAY
活动礼券不足,需要5张活动礼券。\
\
<返回主菜单/@main>

[@进入活动]
IF
CHECKLEVEL35
ACT
MAPMOVE3330330
SENDMSG5已传送至活动地图。

ELSESAY
等级不足35级,无法进入活动地图。\
\
<返回主菜单/@main>

这个版本适合快速测试。实际开放活动时,建议把奖励、地图、变量、时间判断、每日重置等内容单独细化。
[顶部]