传奇NPC核心功能代码大全实操写法及场景应用详解

来源: 作者: 点击:
传奇NPC功能依赖脚本代码实现,不同功能对应固定代码逻辑,以下是最常用的NPC功能代码写法,覆盖兑换、传送、任务、回收等核心场景,适配多数主流引擎。

一、基丛话与功能菜单代码

所有NPC先设置基丛话和功能菜单,核心代码框架:[@Main]#IF#ACTSAY欢迎来到新手村,我能为你提供这些帮助:SAY1.传送至各大地图SAY2.兑换新手装备SAY3.回收无用道具SAY4.查询角色信息#IF#ACTGOTO@功能选择[@功能选择]#CASE1GOTO@地图传送#CASE2GOTO@装备兑换#CASE3GOTO@道具回收#CASE4GOTO@信息查询#ELSESAY请选择正确的功能序号

代码说明:“[@Main]”是NPC默认对话入口,“SAY”后为展示给玩家的文字;“#CASE1”对应玩家选择的序号,“GOTO”用于跳转至对应功能模块,可根据需求增减功能序号。

二、地图传送功能代码

最常用的NPC功能之一,支持指定坐标传送,代码示例:[@地图传送]#IF#ACTSAY请选择要传送的地图:SAY1.比奇城(安全区)SAY2.盟重省(安全区)SAY3.赤月峡谷(危险区)#IF#ACTGOTO@传送选择[@传送选择]#CASE1#ACTMAPMOVE比奇城320320SENDMSG6传送成功,请注意周围环境#CASE2#ACTMAPMOVE盟重省330330SENDMSG6传送成功,盟重省有很多商人#CASE3#IFCheckLevel35CheckGold5000#ACTTakeGold5000MAPMOVE赤月峡谷120120SENDMSG6等级和金币达标,传送至赤月峡谷#ELSESENDMSG6等级不足35级或金币不足5000,无法传送#ELSESAY请选择正确的地图序号

关键命令:“MAPMOVE”后依次填写地图名称、X坐标、Y坐标;可添加“CheckLevel”“CheckGold”等条件判断,限制传送门槛;“SENDMSG6”用于发送传送结果提示,数字6为系统提示颜色。

三、装备兑换功能代码

支持用金币、道具等兑换装备,代码示例:[@装备兑换]#IF#ACTSAY新手装备兑换中心,所需材料如下:SAY1.木剑(100金币)SAY2.布衣(200金币)SAY3.青铜斧(500金币+10个矿石)#IF#ACTGOTO@兑换选择[@兑换选择]#CASE1#IFCheckGold100#ACTTakeGold100GiveItem木剑1SENDMSG6兑换成功,获得木剑一把#ELSESENDMSG6金币不足100,无法兑换#CASE2#IFCheckGold200#ACTTakeGold200GiveItem布衣1SENDMSG6兑换成功,获得布衣一件#ELSESENDMSG6金币不足200,无法兑换#CASE3#IFCheckGold500CheckItem矿石10#ACTTakeGold500TakeItem矿石10GiveItem青铜斧1SENDMSG6兑换成功,获得青铜斧一把#ELSESENDMSG6金币不足500或矿石不足10个,无法兑换

核心命令:“CheckGold”“CheckItem”用于检查所需物品/金币,“TakeGold”“TakeItem”扣除对应资源,“GiveItem”发放兑换奖励;多个兑换条件用“#IF”和“#ACT”组合,逻辑清晰不易出错。

四、道具回收功能代码

玩家可将无用道具回收为金币或材料,代码示例:[@道具回收]#IF#ACTSAY道具回收处,支持以下物品回收:SAY1.小鹿皮(回收得50金币)SAY2.破锄头(回收得80金币)SAY3.低级技能书(回收得200金币+1个元宝)#IF#ACTGOTO@回收选择[@回收选择]#CASE1#IFCheckItem小鹿皮1#ACTTakeItem小鹿皮1GiveGold50SENDMSG6回收成功,获得50金币#ELSESENDMSG6背包中没有小鹿皮#CASE2#IFCheckItem破锄头1#ACTTakeItem破锄头1GiveGold80SENDMSG6回收成功,获得80金币#ELSESENDMSG6背包中没有破锄头#CASE3#IFCheckItem火球术;治愈术;基本剑术1#ACTTakeItem$ItemName1GiveGold200GiveItem元宝1SENDMSG6回收成功,获得200金币和1个元宝#ELSESENDMSG6背包中没有可回收的低级技能书

注意事项:“CheckItem”后若填写多个物品名称,需用分号分隔;“$ItemName”可自动匹配玩家选择的回收物品名称,无需单独指定,适合批量回收同类型道具。

五、简单任务功能代码

包含任务接取、完成、奖励发放全流程,代码示例:[@任务接取]#IF#ACTSAY我需要你帮我收集10个狼皮,完成后有丰厚奖励。SAY1.接受任务SAY2.暂不接受#IF#ACTGOTO@任务选择[@任务选择]#CASE1#IFNOTHasTask收集狼皮#ACTSetTask收集狼皮1SENDMSG6任务已接取,前往野外击杀狼可获得狼皮#ELSESENDMSG6你已接取该任务,无需重复接取#CASE2SENDMSG6如需帮助,随时来找我[@任务完成]#IFCheckTask收集狼皮1CheckItem狼皮10#ACTFinishTask收集狼皮TakeItem狼皮10GiveGold1000GiveItem中级药水5SENDMSG6任务完成,获得1000金币和5瓶中级药水#ELSESENDMSG6未接取任务或狼皮数量不足10个

任务命令说明:“HasTask”判断是否已接取该任务,“SetTask”用于接取任务,“CheckTask”检查任务状态,“FinishTask”标记任务完成;可根据需求添加“CheckLevel”“CheckJob”等条件,限制任务接取人群。

六、通用代码注意事项

1.所有代码需写在对应NPC的脚本文件中(如“新手向导.txt”),文件需放在服务端脚本文件夹内,命名格式需符合引擎要求;2.符号需使用英文半角,中文符号会导致脚本失效,命令大小写需遵循引擎规范(多数引擎不区分大小写,但建议统一格式);3.添加新功能后,需保存脚本文件并重启服务端,确保代码生效;4.测试时需创建测试账号,模拟玩家操作流程,检查功能是否正常,避免出现奖励发放错误、任务无法完成等问题。
[顶部]