传奇NPC功能代码大全 含常用功能实操示例与配置方法

来源: 作者: 点击:
一、NPC基础配置代码(通用模板)

所有传奇NPC需先配置基础信息,确保在游戏中正常显示并可交互,核心代码模板如下,可直接复制修改参数使用:

【基础配置代码】

NPC外观编号 地图编号 X坐标 Y坐标 面向方向 脚本文件名 对话文本

示例:1001 3 320 280 2 Npc_Script\Shop.txt 欢迎光临,这里有各类装备道具~

参数说明:1001为NPC外观编号(对应WIL文件中的造型);3为比奇城地图编号;320/280为NPC在地图中的坐标;2为面向方向(1-8对应八个方向);Shop.txt为脚本文件;最后为NPC初始对话文本。

注意:脚本文件需放在服务端“Npc_Script”目录下,文件名无中文、空格;坐标需避开地图障碍物,避免玩家无法交互。

二、物品购买/出售功能代码(最常用)

此类NPC为传奇核心玩法必备,支持指定物品购买、批量出售,可设置价格倍率、限购数量等,代码分基础版与进阶版。

1. 基础购买功能代码

【脚本代码】

[@Main]
<购买新手装备> //对话选项
#ACT
OpenShop 新手装备店 //打开对应商店界面
Break
<出售装备道具>
#ACT
OpenSell 全服回收 //打开出售回收界面
Break
<离开>
#ACT
Close //关闭对话窗口
Break

【商店配置文件(新手装备店.txt)】

物品编号 物品名称 购买价格 出售价格 库存数量 限购数量 物品备注
100 布衣(男) 100 50 -1 10 新手必备上衣
101 布衣(女) 100 50 -1 10 新手必备上衣
102 木剑 50 20 -1 10 新手基础武器
103 青铜剑 200 100 -1 5 新手进阶武器

参数说明:库存数量填-1为无限库存;限购数量填0为无限制;出售价格为玩家出售给NPC的价格,可按购买价格50%-80%设置。

2. 进阶限购/限时购买代码

【脚本代码】

[@Main]
<购买限购神器>
#ACT
CheckGold 100000 //检测玩家是否拥有10万金币
IfNotEqual $PLAYERVAR(限购次数) 3 //判断限购次数是否达到3次
Goto @BuyShenqi //跳转至购买流程
Else
SendMsg 6 今日限购次数已用完,明日再来! //发送提示信息
Break
EndIf
<离开>
#ACT
Close
Break

[@BuyShenqi]
#ACT
TakeGold 100000 //扣除10万金币
Give 500 裁决之杖 1 //给予玩家裁决之杖1把
Inc $PLAYERVAR(限购次数) 1 //限购次数+1
SendMsg 6 购买成功!今日剩余限购次数:<$PLAYERVAR(限购次数)>/3
Break

注意:需在服务端“变量配置”中开启玩家变量,限购次数每日0点自动重置,需搭配定时脚本实现。

三、任务接取/提交功能代码(主线/支线通用)

支持任务接取条件检测、道具提交、奖励发放,可设置任务链、每日任务等,以下为新手主线任务示例。

1. 任务接取代码

【脚本代码】

[@Main]
<接取:消灭稻草人>
#ACT
CheckLevel 1 10 //检测玩家等级1-10级
IfEqual $TASK(新手任务1) 0 //判断是否未接取该任务
Goto @AcceptTask
ElseIfEqual $TASK(新手任务1) 1 //判断是否已接取未完成
SendMsg 6 任务已接取,快去消灭10只稻草人吧!
Break
ElseIfEqual $TASK(新手任务1) 2 //判断是否已完成
SendMsg 6 任务已完成,无需重复接取!
Break
EndIf
<离开>
#ACT
Close
Break

[@AcceptTask]
#ACT
Set $TASK(新手任务1) 1 //设置任务状态为已接取
SendMsg 6 任务接取成功!请前往新手村消灭10只稻草人,完成后回来提交。
SendMsg 6 任务奖励:1000金币、初级经验丹*1
Break

2. 任务提交代码

【脚本代码】

[@Main]
<提交:消灭稻草人>
#ACT
IfEqual $TASK(新手任务1) 1 //判断任务状态为已接取
CheckMonsterKill 1 10 //检测是否消灭10只稻草人(1为稻草人怪物编号)
IfTrue
Goto @FinishTask
Else
SendMsg 6 需消灭10只稻草人,当前进度:<$MONSTERKILL(1)>/10
Break
EndIf
Else
SendMsg 6 请先接取任务再提交!
Break
EndIf

[@FinishTask]
#ACT
Set $TASK(新手任务1) 2 //设置任务状态为已完成
GiveGold 1000 //给予1000金币
Give 200 初级经验丹 1 //给予初级经验丹1个
AddExp 5000 //给予5000点经验
SendMsg 6 任务提交成功!获得丰厚奖励,快去升级吧~
Break

四、装备回收/合成功能代码

1. 装备回收功能代码

【脚本代码】

[@Main]
<装备回收>
#ACT
OpenRecycle 装备回收列表 //打开回收界面
Break
<离开>
#ACT
Close
Break

【回收配置文件(装备回收列表.txt)】

物品编号 物品名称 回收所需数量 回收奖励(金币) 回收奖励(经验) 额外奖励
105 铁剑 1 50 1000 无
106 钢刀 1 100 2000 无
107 凌风 1 500 5000 初级强化石*1
108 斩马 1 1000 10000 初级强化石*2
500 裁决之杖 1 50000 500000 高级强化石*5+元宝*10

注意:额外奖励可填物品编号+数量,多个奖励用“+”连接;回收时自动检测玩家背包内对应装备,无需手动提交。

2. 装备合成功能代码

【脚本代码(合成裁决之杖)】

[@Main]
<合成裁决之杖>
#ACT
CheckItem 108 斩马 3 //检测是否拥有3把斩马
CheckItem 201 初级强化石 10 //检测是否拥有10个初级强化石
CheckGold 100000 //检测是否拥有10万金币
IfTrue
Goto @HeCheng
Else
SendMsg 6 合成材料不足!需3把斩马+10个初级强化石+10万金币
Break
EndIf

[@HeCheng]
#ACT
Take 108 斩马 3 //扣除3把斩马
Take 201 初级强化石 10 //扣除10个初级强化石
TakeGold 100000 //扣除10万金币
Rand 10 //10%成功率
IfTrue
Give 500 裁决之杖 1 //合成成功,给予裁决之杖
SendMsg 6 恭喜!合成裁决之杖成功!
Break
Else
Give 201 初级强化石 5 //合成失败,返还5个初级强化石
SendMsg 6 合成失败!返还部分材料,再接再厉~
Break
EndIf

五、等级提升/技能学习功能代码

1. 快速等级提升代码(新手福利NPC)

【脚本代码】

[@Main]
<领取新手等级礼包>
#ACT
CheckLevel 1 5 //检测玩家等级1-5级
IfEqual $PLAYERVAR(等级礼包) 0
Goto @GetLevelGift
Else
SendMsg 6 新手等级礼包已领取,无法重复领取!
Break
EndIf

[@GetLevelGift]
#ACT
Set $PLAYERVAR(等级礼包) 1 //设置礼包领取状态
AddExp 100000 //直接提升至10级
Give 100 布衣(男/女) 1 //给予新手装备
Give 102 木剑 1
GiveGold 5000 //给予5000金币
SendMsg 6 新手等级礼包领取成功!已自动提升至10级~
Break

2. 技能学习功能代码(技能导师NPC)

【脚本代码】

[@Main]
<学习战士技能>
#ACT
CheckJob 1 //检测是否为战士职业(1=战士,2=法师,3=道士)
Goto @WarriorSkill
<学习法师技能>
#ACT
CheckJob 2
Goto @MageSkill
<学习道士技能>
#ACT
CheckJob 3
Goto @TaoistSkill
<离开>
#ACT
Close
Break

[@WarriorSkill]
<学习烈火剑法(35级)>
#ACT
CheckLevel 35 //检测等级35级
CheckGold 50000 //检测5万金币
CheckItem 300 技能书-烈火剑法 1 //检测是否拥有技能书
IfTrue
LearnSkill 101 烈火剑法 //学习烈火剑法(101为技能编号)
Take 300 技能书-烈火剑法 1 //扣除技能书
TakeGold 50000
Break
Else
SendMsg 6 学习条件不足!需35级+5万金币+烈火剑法技能书
Break
EndIf //扣除金币
SendMsg 6 烈火剑法学习成功!

六、NPC功能代码通用注意事项

1. 代码格式规范:所有脚本代码需顶格编写,无空格;注释用“//”开头,单独一行,避免与代码同行导致报错。

2. 物品/怪物编号:需与服务端“物品数据库”“怪物数据库”中的编号一致,编号错误会导致功能失效。

3. 变量使用:玩家变量($PLAYERVAR)、任务变量($TASK)需提前在服务端配置中开启,避免变量未定义报错。

4. 提示信息:使用SendMsg指令发送提示,参数6为黄色字体(常用),1为红色,2为绿色,可按需求调整。

5. 测试调试:修改代码后需重启服务端生效,优先在单机测试环境调试,避免直接在外网修改导致功能异常。

七、常见功能代码报错排查

Q:NPC对话无选项,点击无反应?A:检查脚本文件名是否与NPC基础配置中的脚本文件名一致;脚本文件是否放在正确目录;对话选项是否用“<>”包裹。

Q:执行功能时提示“变量未定义”?A:确认变量是否在服务端“变量配置”中开启;变量名称是否拼写错误(区分大小写)。

Q:给予/扣除物品失败?A:检查物品编号是否正确;玩家背包是否有足够空间(给予物品时);背包内是否有对应数量物品(扣除时)。

Q:技能学习后无法使用?A:确认技能编号与职业匹配;玩家等级是否达到技能学习要求;技能是否需要手动在技能面板开启。

八、进阶功能代码(特色玩法)

1. 每日签到功能代码

【脚本代码】

[@Main]
<每日签到>
#ACT
IfEqual $SIGNIN(今日签到) 0
Goto @SignInReward
Else
SendMsg 6 今日已签到,明日可再次签到!
Break
EndIf

[@SignInReward]
#ACT
Set $SIGNIN(今日签到) 1 //设置今日已签到
Inc $SIGNIN(累计签到) 1 //累计签到次数+1
Rand 3 //3种随机奖励
IfEqual $RANDOM 1
GiveGold 5000 //奖励5000金币
ElseIfEqual $RANDOM 2
Give 200 初级经验丹 2 //奖励2个经验丹
Else
Give 201 初级强化石 3 //奖励3个强化石
EndIf
SendMsg 6 签到成功!累计签到<$SIGNIN(累计签到)>天,可解锁累计奖励~
Break

2. 元宝兑换功能代码

【脚本代码】

[@Main]
<元宝兑换(1:10000金币)>
#ACT
CheckGold 10000 //检测1万金币
Goto @ExchangeYuanBao
<金币兑换(1元宝:8000金币)>
#ACT
CheckYuanBao 1 //检测1个元宝
Goto @ExchangeGold
<离开>
#ACT
Close
Break

[@ExchangeYuanBao]
#ACT
TakeGold 10000 //扣除1万金币
GiveYuanBao 1 //给予1个元宝
SendMsg 6 兑换成功!10000金币兑换1个元宝
Break

[@ExchangeGold]
#ACT
TakeYuanBao 1 //扣除1个元宝
GiveGold 8000 //给予8000金币
SendMsg 6 兑换成功!1个元宝兑换8000金币
Break