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

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

热度:
一、NPC基础配置代码(通用模板)

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

【基础配置代码】

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

示例:100133202802Npc_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布衣(男)10050-110新手必备上衣
101布衣(女)10050-110新手必备上衣
102木剑5020-110新手基础武器
103青铜剑200100-15新手进阶武器

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

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

【脚本代码】

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

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

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

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

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

1.任务接取代码

【脚本代码】

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

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

2.任务提交代码

【脚本代码】

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

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

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

1.装备回收功能代码

【脚本代码】

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

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

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

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

2.装备合成功能代码

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

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

[@HeCheng]
#ACT
Take108斩马3//扣除3把斩马
Take201初级强化石10//扣除10个初级强化石
TakeGold100000//扣除10万金币
Rand10//10%成功率
IfTrue
Give500裁决之杖1//合成成功,给予裁决之杖
SendMsg6恭喜!合成裁决之杖成功!
Break
Else
Give201初级强化石5//合成失败,返还5个初级强化石
SendMsg6合成失败5还部分材料,再接再厉~
Break
EndIf

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

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

【脚本代码】

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

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

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

【脚本代码】

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

[@WarriorSkill]
<学习烈火剑法(35级)>
#ACT
CheckLevel35//检测等级35级
CheckGold50000//检测5万金币
CheckItem300技能书-烈火剑法1//检测是否拥有技能书
IfTrue
LearnSkill101烈火剑法//学习烈火剑法(101为技能编号)
Take300技能书-烈火剑法1//扣除技能书
TakeGold50000
Break
Else
SendMsg6学习条件不足!需35级+5万金币+烈火剑法技能书
Break
EndIf//扣除金币
SendMsg6烈火剑法学习成功!

六、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
SendMsg6今日已签到,明日可再次签到!
Break
EndIf

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

2.元宝兑换功能代码

【脚本代码】

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

[@ExchangeYuanBao]
#ACT
TakeGold10000//扣除1万金币
GiveYuanBao1//给予1个元宝
SendMsg6兑换成功!10000金币兑换1个元宝
Break

[@ExchangeGold]
#ACT
TakeYuanBao1//扣除1个元宝
GiveGold8000//给予8000金币
SendMsg6兑换成功!1个元宝兑换8000金币
Break
[顶部]