传奇NPC功能依赖脚本代码实现,不同功能对应固定代码逻辑,以下是最常用的NPC功能代码写法,覆盖兑换、传送、任务、回收等核心场景,适配多数主流引擎。
一、基础对话与功能菜单代码
所有NPC先设置基础对话和功能菜单,核心代码框架:[@Main]#IF#ACTSAY 欢迎来到新手村,我能为你提供这些帮助:SAY 1. 传送至各大地图SAY 2. 兑换新手装备SAY 3. 回收无用道具SAY 4. 查询角色信息#IF#ACTGOTO @功能选择[@功能选择]#CASE1GOTO @地图传送#CASE2GOTO @装备兑换#CASE3GOTO @道具回收#CASE4GOTO @信息查询#ELSESAY 请选择正确的功能序号
代码说明:“[@Main]”是NPC默认对话入口,“SAY”后为展示给玩家的文字;“#CASE1”对应玩家选择的序号,“GOTO”用于跳转至对应功能模块,可根据需求增减功能序号。
二、地图传送功能代码
最常用的NPC功能之一,支持指定坐标传送,代码示例:[@地图传送]#IF#ACTSAY 请选择要传送的地图:SAY 1. 比奇城(安全区)SAY 2. 盟重省(安全区)SAY 3. 赤月峡谷(危险区)#IF#ACTGOTO @传送选择[@传送选择]#CASE1#ACTMAPMOVE 比奇城 320 320SENDMSG 6 传送成功,请注意周围环境#CASE2#ACTMAPMOVE 盟重省 330 330SENDMSG 6 传送成功,盟重省有很多商人#CASE3#IFCheckLevel 35CheckGold 5000#ACTTakeGold 5000MAPMOVE 赤月峡谷 120 120SENDMSG 6 等级和金币达标,传送至赤月峡谷#ELSESENDMSG 6 等级不足35级或金币不足5000,无法传送#ELSESAY 请选择正确的地图序号
关键命令:“MAPMOVE”后依次填写地图名称、X坐标、Y坐标;可添加“CheckLevel”“CheckGold”等条件判断,限制传送门槛;“SENDMSG 6”用于发送传送结果提示,数字6为系统提示颜色。
三、装备兑换功能代码
支持用金币、道具等兑换装备,代码示例:[@装备兑换]#IF#ACTSAY 新手装备兑换中心,所需材料如下:SAY 1. 木剑(100金币)SAY 2. 布衣(200金币)SAY 3. 青铜斧(500金币+10个矿石)#IF#ACTGOTO @兑换选择[@兑换选择]#CASE1#IFCheckGold 100#ACTTakeGold 100GiveItem 木剑 1SENDMSG 6 兑换成功,获得木剑一把#ELSESENDMSG 6 金币不足100,无法兑换#CASE2#IFCheckGold 200#ACTTakeGold 200GiveItem 布衣 1SENDMSG 6 兑换成功,获得布衣一件#ELSESENDMSG 6 金币不足200,无法兑换#CASE3#IFCheckGold 500CheckItem 矿石 10#ACTTakeGold 500TakeItem 矿石 10GiveItem 青铜斧 1SENDMSG 6 兑换成功,获得青铜斧一把#ELSESENDMSG 6 金币不足500或矿石不足10个,无法兑换
核心命令:“CheckGold”“CheckItem”用于检查所需物品/金币,“TakeGold”“TakeItem”扣除对应资源,“GiveItem”发放兑换奖励;多个兑换条件用“#IF”和“#ACT”组合,逻辑清晰不易出错。
四、道具回收功能代码
玩家可将无用道具回收为金币或材料,代码示例:[@道具回收]#IF#ACTSAY 道具回收处,支持以下物品回收:SAY 1. 小鹿皮(回收得50金币)SAY 2. 破锄头(回收得80金币)SAY 3. 低级技能书(回收得200金币+1个元宝)#IF#ACTGOTO @回收选择[@回收选择]#CASE1#IFCheckItem 小鹿皮 1#ACTTakeItem 小鹿皮 1GiveGold 50SENDMSG 6 回收成功,获得50金币#ELSESENDMSG 6 背包中没有小鹿皮#CASE2#IFCheckItem 破锄头 1#ACTTakeItem 破锄头 1GiveGold 80SENDMSG 6 回收成功,获得80金币#ELSESENDMSG 6 背包中没有破锄头#CASE3#IFCheckItem 火球术;治愈术;基本剑术 1#ACTTakeItem $ItemName 1GiveGold 200GiveItem 元宝 1SENDMSG 6 回收成功,获得200金币和1个元宝#ELSESENDMSG 6 背包中没有可回收的低级技能书
注意事项:“CheckItem”后若填写多个物品名称,需用分号分隔;“$ItemName”可自动匹配玩家选择的回收物品名称,无需单独指定,适合批量回收同类型道具。
五、简单任务功能代码
包含任务接取、完成、奖励发放全流程,代码示例:[@任务接取]#IF#ACTSAY 我需要你帮我收集10个狼皮,完成后有丰厚奖励。SAY 1. 接受任务SAY 2. 暂不接受#IF#ACTGOTO @任务选择[@任务选择]#CASE1#IFNOT HasTask 收集狼皮#ACTSetTask 收集狼皮 1SENDMSG 6 任务已接取,前往野外击杀狼可获得狼皮#ELSESENDMSG 6 你已接取该任务,无需重复接取#CASE2SENDMSG 6 如需帮助,随时来找我[@任务完成]#IFCheckTask 收集狼皮 1CheckItem 狼皮 10#ACTFinishTask 收集狼皮TakeItem 狼皮 10GiveGold 1000GiveItem 中级药水 5SENDMSG 6 任务完成,获得1000金币和5瓶中级药水#ELSESENDMSG 6 未接取任务或狼皮数量不足10个
任务命令说明:“HasTask”判断是否已接取该任务,“SetTask”用于接取任务,“CheckTask”检查任务状态,“FinishTask”标记任务完成;可根据需求添加“CheckLevel”“CheckJob”等条件,限制任务接取人群。
六、通用代码注意事项
1. 所有代码需写在对应NPC的脚本文件中(如“新手向导.txt”),文件需放在服务端脚本文件夹内,命名格式需符合引擎要求;2. 符号需使用英文半角,中文符号会导致脚本失效,命令大小写需遵循引擎规范(多数引擎不区分大小写,但建议统一格式);3. 添加新功能后,需保存脚本文件并重启服务端,确保代码生效;4. 测试时需创建测试账号,模拟玩家操作流程,检查功能是否正常,避免出现奖励发放错误、任务无法完成等问题。

