3K引擎传奇双转职NPC全套脚本职业互换、属性重置与装备校验功能搭建教程

来源: 作者: 点击:
3K引擎双转职功能,支持玩家在两个职业之间自由切换,保留等级、称号、人物变量,更换职业后重置基础属性,清空原有职业技能,学习新职业基础技能,同时增加冷却限制、背包装备校验、转职消耗判定,整套功能由NPC对话脚本、转职前后属性处理、技能删除、装备检测分支构成,脚本存放于QNPC.txt,事件处理写在QFunction-0.txt,修改脚本之后重载NPC即可测试,语法错误会造成职业错乱、技能残留、属性异常。

双转职基础逻辑,使用人物私有变量M0记录当前职业标记,M0=1代表战士,M0=2代表法师,M0=3代表道士。玩家点击NPC选择转职,脚本先校验转职冷却、背包穿戴装备,检测通过扣除对应材料,清除原有全部职业技能,重置人物基础属性,修改角色职业,赋予新职业基础技能,更新M0标记,写入冷却倒计时,冷却时间内禁止再次转职。穿戴非目标职业装备时,直接拦截转职操作,提示玩家卸下装备。

前置准备,确认3K引擎支持CHANGECLASS修改人物职业指令,准备转职消耗道具,规划转职冷却时长,提前整理三个职业基础技能ID列表,脚本删除旧职业全部技能,再授予新职业基础技能。人物属性重置使用RESETHUMANATTR,重置后按新职业自动分配初始属性。

转职NPC主对话脚本,写入QNPC.txt
[@main]
#ACT
SENDMSG 7 【双转职使者】
SENDMSG 7 当前职业:<$HUMANCLASS> \(HUMANCLASS> 转职冷却剩余:<\)<$M1>秒
SENDMSG 7 转职规则:切换职业会清空全部已学技能,基础属性重置,请卸下非本职业装备
SENDMSG 7 <1>战士转法师<@ToFS> <2>法师转战士<@ToZS>
SENDMSG 7 <3>战士转道士<@ToDS> <4>道士转战士<@ToZS2>
SENDMSG 7 <5>法师转道士<@ToDS2> <6>道士转法师<@ToFS2>
SENDMSG 7 <7>查看转职所需材料<@ShowMat>
BREAK

[@ShowMat]
#ACT
SENDMSG 7 转职消耗:转职水晶5个,金币100000
SENDMSG 7 转职冷却时间7200秒,冷却期间无法再次转职
SENDMSG 7 转职前必须卸下身上所有装备,否则转职失败
BREAK

[@ToFS]
#IF
NOT EQUAL <$HUMANCLASS> 战士
#ACT
SENDMSG 6 你当前不是战士,无法执行该转职分支
BREAK
#IF
LARGE M1 0
#ACT
SENDMSG 6 转职冷却未结束,请等待冷却完毕
BREAK
#IF
HASWORNITEM
#ACT
SENDMSG 6 身上穿戴有装备,请全部卸下再转职
BREAK
#IF
CHECKITEM 转职水晶 5
CHECKGOLD > 99999
#ACT
TAKE 转职水晶 5
GOLD - 100000
;删除战士全部技能
DELSKILL 基本剑术
DELSKILL 攻杀剑术
DELSKILL 刺杀剑术
DELSKILL 半月弯刀
DELSKILL 烈火剑法
;重置属性,切换职业
RESETHUMANATTR
CHANGECLASS 法师
;授予法师基础技能
ADDSKILL 小火球 3
ADDSKILL 抗拒火环 3
ADDSKILL 雷电术 3
;更新职业标记,开启冷却
CALC M0 = 2
CALC M1 = 7200
SENDMSG 6 转职成功,已转为法师,技能重置,属性重新分配
BREAK
#ELSEACT
SENDMSG 6 材料或者金币不足,转职失败
BREAK

[@ToZS]
#IF
NOT EQUAL <$HUMANCLASS> 法师
#ACT
SENDMSG 6 你当前不是法师,无法执行该转职分支
BREAK
#IF
LARGE M1 0
#ACT
SENDMSG 6 转职冷却未结束,请等待冷却完毕
BREAK
#IF
HASWORNITEM
#ACT
SENDMSG 6 身上穿戴有装备,请全部卸下再转职
BREAK
#IF
CHECKITEM 转职水晶 5
CHECKGOLD > 99999
#ACT
TAKE 转职水晶 5
GOLD - 100000
DELSKILL 小火球
DELSKILL 抗拒火环
DELSKILL 雷电术
DELSKILL 火墙
DELSKILL 冰咆哮
RESETHUMANATTR
CHANGECLASS 战士
ADDSKILL 基本剑术 3
ADDSKILL 攻杀剑术 3
ADDSKILL 刺杀剑术 3
CALC M0 = 1
CALC M1 = 7200
SENDMSG 6 转职成功,已转为战士,技能重置,属性重新分配
BREAK
#ELSEACT
SENDMSG 6 材料或者金币不足,转职失败
BREAK

剩余四个转职分支逻辑一致,替换DELSKILL删除对应职业旧技能,CHANGECLASS目标职业,ADDSKILL添加新职业基础技能,修改M0职业标记。

冷却倒计时脚本,写入QFunction-0.txt,QManage开启玩家登录定时器
[@OnLogin]
#ACT
SETTIMER 15 1000
BREAK

[@OnTimer15]
#IF
LARGE M1 0
#ACT
CALC M1 - 1
BREAK
#ELSEACT
BREAK

装备检测说明,HASWORNITEM指令用于检测身上是否穿戴任意装备,只要身上有装备就拦截转职。如果只想校验目标职业装备,可循环读取装备位置,判断装备职业限制,检测到不符合职业的装备才拦截。

转职附加限制配置,增加等级门槛,在每个转职分支开头增加CHECKLEVELEX > 45,等级不足45级无法转职。增加行会判定,限定只有指定行会成员才可以使用转职功能。增加转职次数限制,M2记录总转职次数,每次转职CALC M2 +1,到达上限后禁止再次转职。

转职配套处理脚本,转职后清理职业专属buff、称号,在转职成功的#ACT段增加CLEARADDBUFF,清除旧职业附加属性。如果版本有职业专属称号,增加CLEARTITLE清除旧称号,按需授予新职业称号。

[@OnReLogin]
#IF
LARGE M0 0
#ACT
;读取M0标记,可在这里加载职业专属buff
BREAK

常见异常排查,转职后职业不变,检查CHANGECLASS指令参数,职业名称必须和引擎内职业名称完全匹配。旧职业技能残留,DELSKILL没有写全该职业所有技能,遗漏技能不会被删除。转职后属性没有重置,确认RESETHUMANATTR指令支持,部分3K引擎版本该指令需要开启对应引擎选项。冷却倒计时不减少,确认QManage开启定时器,重载QFunction。穿戴装备检测失效,HASWORNITEM在部分引擎版本存在兼容问题,可改用逐个位置读取装备脚本。转职后角色黑屏,转职后不要在同一脚本内执行传送,避免坐标异常。

性能优化要点,NPC对话内只做简单判定,不执行大量循环。定时器每秒扣减冷却变量,只做减法运算,无复杂逻辑,不会占用服务端资源。转职操作属于低频操作,不会造成服务器压力。

调试步骤,编写NPC脚本,重载NPC脚本,使用战士角色准备材料,卸下全部装备,执行转职到法师,核对职业变更、技能删除、新技能学习、属性重置。冷却期间再次点击转职,确认被拦截。穿戴装备测试转职,验证直接提示拦截。小退重登,查看职业标记M0、冷却M1正常保留。多账号轮换测试双向转职,确认不同角色转职状态独立,不会互相干扰。

拓展功能开发,转职保留背包内装备,仅禁止穿戴跨职业装备。转职保留历史职业记录,可增加回原职业优惠消耗。增加转职外观特效,转职成功触发地图飘字、特效。增加转职任务,完成前置任务解锁转职功能。增加转职保护,转职短时间内无法被攻击。全部配置完成,反复双向转职测试,校验技能、职业、属性、冷却状态稳定,不会出现职业标记错乱、技能残留、冷却卡住的问题。