传奇服务端添加装备打包卷与雇佣兵晋升卷教程

来源: 作者: 点击:
在传奇服务端中实现“双击使用”功能的特殊卷轴(如装备打包卷、雇佣兵战圣晋升卷),需修改物品数据库、QFunction脚本及人物等级/属性判定逻辑。操作基于标准Mir2/Mir3服务端结构,路径以MirServerMir200为例。

一、准备新物品编号

打开EnvirMarket_defItemList.txt,查找未使用的物品编号(通常从5000起预留)。
装备打包卷:编号设为5001
雇佣兵晋升卷:编号设为5002

在EnvirMapQuest_defQManage.txt中注册物品名称(可选,用于日志识别):
[@Item5001]
ACT
SENDMSG7装备打包卷已使用

[@Item5002]
ACT
SENDMSG7雇佣兵晋升卷已使用

二、配置物品基础属性

编辑EnvirStdItems目录下对应编号的.txt文件(若无则新建):

装备打包卷(5001.txt)
[Name]装备打包卷
[Image]10
[StdMode]49
[DuraMax]1
[Weight]1
[AniCount]1
[AniTick]10
[ItemType]15
[EffectType]0
[NeedIdentify]0
[ShowName]1

雇佣兵晋升卷(5002.txt)
[Name]战圣晋升卷
[Image]11
[StdMode]49
[DuraMax]1
[Weight]1
[AniCount]1
[AniTick]10
[ItemType]15
[EffectType]0
[NeedIdentify]0
[ShowName]1

关键参数说明:
[StdMode]49:表示可双击使用的消耗品
[ItemType]15:通用道具类型
[DuraMax]1:使用后消失

三、编写双击触发脚本

所有双击逻辑在MapQuest_defQFunction-0.txt中处理。

装备打包卷功能(5001)
目标:将角色身上穿戴的装备移至背包,若背包满则提示。

在QFunction-0.txt末尾添加:
[@Item5001]
IF
CHECKITEM装备打包卷1
ACT
DELITEM装备打包卷1
TAKEONITEMALL
GIVEITEMALL
SENDMSG6装备已全部移入背包!
BREAK

说明:
TAKEONITEMALL:卸下全身装备
GIVEITEMALL:将卸下的装备放入背包(自动跳过已满格子)
若背包空间不足,未放入的装备会留在地面,需额外加判断(见下文补充)

补充:背包满时提示
在DELITEM前插入:
#IF
CHECKBAGGAGE40
#ELSEACT
SENDMSG7背包空间不足,无法打包!
BREAK
雇佣兵晋升卷功能(5002)
目标:检测是否为雇佣兵职业,满足条件则直接升为战圣(假设战圣职业编号为4)。

在QFunction-0.txt添加:
[@Item5002]
IF
CHECKITEM战圣晋升卷1
EQUALJOB3;假设雇佣兵职业JOB=3
ACT
DELITEM战圣晋升卷1
CHANGEJOB4;切换为战圣职业
SETLEVEL50;可选:同步提升等级
CALCATTR;重算属性
SENDMSG6恭喜!您已晋升为战圣!
BREAK
ELSEACT
SENDMSG7仅雇佣兵可使用此卷轴!

关键点:
EQUALJOB3:需根据实际服务端职业编号调整(战士=0法师=1道士=2雇佣兵=3)
CHANGEJOB4:战圣职业编号需与Hero.db或职业配置一致
CALCATTR:强制刷新属性,避免职业变更后属性未更新

四、验证与调试

将新物品通过GM命令给予角色:
!give装备打包卷1
!give战圣晋升卷1


双击使用,观察:
装备是否从身上移除并进入背包
雇佣兵职业是否变为战圣,且属性正确

若无效,检查:
ItemList.txt编号是否重复
StdItems5001.txt是否保存为ANSI编码
QFunction-0.txt是否有语法错误(如缺少#ACT)

五、注意事项

职业编号需与服务端!Setup.txt中JobCount及职业扩展设置匹配。
若服务端使用Hero引擎,CHANGEJOB可能需替换为CHANGENEWJOB。
装备打包功能不处理武器/盾牌的耐久归零问题,如需保留耐久,应改用逐件检测脚本。

按上述步骤操作,即可实现双击生效的装备打包卷与雇佣兵晋升卷,无需外部工具或复杂配置。
[顶部]