传奇里“用属性宝石直接升级属性”一般有三种实现方式:第一种是在NPC处消耗宝石提升人物攻击、魔法、道术、防御等属性;第二种是右键使用宝石触发脚本,直接给角色增加属性;第三种是把宝石属性写到装备或宝石槽位上。不同引擎命令不同,下面以常见传奇引擎为例,按可直接套用的思路写示例。
第一种:NPC消耗宝石升级人物属性
这个方式适合做“宝石兑换属性”“宝石直接升人物属性”的玩法。玩家把属性宝石放入背包,NPC检测后扣除宝石,再增加人物属性。
示例:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
ACT
TAKE攻击宝石1
CHANGEHUMABILITY1+50
SENDMSG6使用攻击宝石,攻击属性提升
ELSESAY
背包内没有足够的攻击宝石
这里CHANGEHUMABILITY后面的参数含义通常是:属性编号、操作符、数值、持续时间。属性编号1常对应攻击相关属性,0表示永久生效。不同引擎属性编号可能不同,正式使用前要先查当前引擎说明书,确认1、2、3、4分别对应攻击、魔法、道术、防御中的哪一种。
如果要区分多种宝石,可以写成多个分支:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
ACT
TAKE攻击宝石1
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升
ELSEACT
GOTO@检查魔法宝石
[@检查魔法宝石]
IF
CHECKITEM魔法宝石1
ACT
TAKE魔法宝石1
CHANGEHUMABILITY3+50
SENDMSG6魔法属性提升
ELSEACT
GOTO@检查道术宝石
[@检查道术宝石]
IF
CHECKITEM道术宝石1
ACT
TAKE道术宝石1
CHANGEHUMABILITY4+50
SENDMSG6道术属性提升
ELSEACT
SENDMSG6背包内没有可升级的属性宝石
第二种:物品触发脚本,右键使用宝石直接升属性
如果希望玩家双击宝石就生效,可以把脚本绑定到物品触发。GOM等引擎通常把物品触发脚本放在QuestDiaryTriggerItem目录下,文件名为物品ID.txt,并在脚本里使用@Use:触发。
示例:
@Use:
IF
ACT
CHANGEHUMABILITY1+50
SENDMSG6你使用了攻击宝石,攻击属性提升
这种方式适合做一次性消耗宝石。若需要限制等级、职业或每日使用次数,可以在#IF下面增加条件。
示例:
@Use:
IF
CHECKLEVEL50
CHECKJOBWarrior
ACT
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升
ELSEACT
SENDMSG6等级或职业不符合使用条件
第三种:宝石升级装备属性
如果“升级属性”不是直接加到人物身上,而是加到装备或宝石槽位上,就不能只用人物属性命令。装备属性升级常见命令有UPGRADEITEMEX、CHANGEITEMADDVALUE、SetNewItemValue等。
示例:
[@升级宝石属性]
IF
CHECKUSEITEM12
CHECKITEM属性宝石1
ACT
TAKE属性宝石1
CHANGEITEMADDVALUE120+5
SENDMSG6宝石攻击属性提升
这里12通常代表宝石或对应装备槽位,0代表该部位的第一项属性,例如攻击。不同引擎对装备位置和属性编号定义不同,需要对照当前引擎的装备位置表确认。
如果引擎支持对话框升级,也可以用OPENUPGRADEDLG配合[@UpgradeDlgItem]处理。玩家把装备放入升级框后,脚本检测宝石并修改属性。
示例:
[@升级宝石]
IF
CHECKITEM属性宝石1
ACT
OPENUPGRADEDLG请放入要升级的宝石
[@UpgradeDlgItem]
IF
CHECKITEM属性宝石1
ACT
TAKE属性宝石1
SetNewItemValue-10+5
SENDMSG6宝石属性升级成功
防止重复升级和刷属性的写法
直接升级属性时,建议加次数上限,避免玩家无限使用宝石。可以用玩家私有变量记录已升级次数。
示例:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
SMALLD010
ACT
TAKE攻击宝石1
INCD01
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升,当前已升级次数增加
ELSEACT
SENDMSG6无法继续升级
D0只作示例,正式脚本可以用可保存的玩家变量,避免下线后次数丢失。
调试时先看当前引擎是否支持CHANGEHUMABILITY、CHANGEITEMADDVALUE、SetNewItemValue、物品触发@Use:这些命令。修改脚本后保存为ANSI编码,重新加载NPC或重启服务端后再测试。每步都加一条SENDMSG提示,确认脚本是否执行到扣除宝石、增加属性、更新装备这三个环节。
第一种:NPC消耗宝石升级人物属性
这个方式适合做“宝石兑换属性”“宝石直接升人物属性”的玩法。玩家把属性宝石放入背包,NPC检测后扣除宝石,再增加人物属性。
示例:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
ACT
TAKE攻击宝石1
CHANGEHUMABILITY1+50
SENDMSG6使用攻击宝石,攻击属性提升
ELSESAY
背包内没有足够的攻击宝石
这里CHANGEHUMABILITY后面的参数含义通常是:属性编号、操作符、数值、持续时间。属性编号1常对应攻击相关属性,0表示永久生效。不同引擎属性编号可能不同,正式使用前要先查当前引擎说明书,确认1、2、3、4分别对应攻击、魔法、道术、防御中的哪一种。
如果要区分多种宝石,可以写成多个分支:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
ACT
TAKE攻击宝石1
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升
ELSEACT
GOTO@检查魔法宝石
[@检查魔法宝石]
IF
CHECKITEM魔法宝石1
ACT
TAKE魔法宝石1
CHANGEHUMABILITY3+50
SENDMSG6魔法属性提升
ELSEACT
GOTO@检查道术宝石
[@检查道术宝石]
IF
CHECKITEM道术宝石1
ACT
TAKE道术宝石1
CHANGEHUMABILITY4+50
SENDMSG6道术属性提升
ELSEACT
SENDMSG6背包内没有可升级的属性宝石
第二种:物品触发脚本,右键使用宝石直接升属性
如果希望玩家双击宝石就生效,可以把脚本绑定到物品触发。GOM等引擎通常把物品触发脚本放在QuestDiaryTriggerItem目录下,文件名为物品ID.txt,并在脚本里使用@Use:触发。
示例:
@Use:
IF
ACT
CHANGEHUMABILITY1+50
SENDMSG6你使用了攻击宝石,攻击属性提升
这种方式适合做一次性消耗宝石。若需要限制等级、职业或每日使用次数,可以在#IF下面增加条件。
示例:
@Use:
IF
CHECKLEVEL50
CHECKJOBWarrior
ACT
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升
ELSEACT
SENDMSG6等级或职业不符合使用条件
第三种:宝石升级装备属性
如果“升级属性”不是直接加到人物身上,而是加到装备或宝石槽位上,就不能只用人物属性命令。装备属性升级常见命令有UPGRADEITEMEX、CHANGEITEMADDVALUE、SetNewItemValue等。
示例:
[@升级宝石属性]
IF
CHECKUSEITEM12
CHECKITEM属性宝石1
ACT
TAKE属性宝石1
CHANGEITEMADDVALUE120+5
SENDMSG6宝石攻击属性提升
这里12通常代表宝石或对应装备槽位,0代表该部位的第一项属性,例如攻击。不同引擎对装备位置和属性编号定义不同,需要对照当前引擎的装备位置表确认。
如果引擎支持对话框升级,也可以用OPENUPGRADEDLG配合[@UpgradeDlgItem]处理。玩家把装备放入升级框后,脚本检测宝石并修改属性。
示例:
[@升级宝石]
IF
CHECKITEM属性宝石1
ACT
OPENUPGRADEDLG请放入要升级的宝石
[@UpgradeDlgItem]
IF
CHECKITEM属性宝石1
ACT
TAKE属性宝石1
SetNewItemValue-10+5
SENDMSG6宝石属性升级成功
防止重复升级和刷属性的写法
直接升级属性时,建议加次数上限,避免玩家无限使用宝石。可以用玩家私有变量记录已升级次数。
示例:
[@属性宝石升级]
IF
CHECKITEM攻击宝石1
SMALLD010
ACT
TAKE攻击宝石1
INCD01
CHANGEHUMABILITY1+50
SENDMSG6攻击属性提升,当前已升级次数增加
ELSEACT
SENDMSG6无法继续升级
D0只作示例,正式脚本可以用可保存的玩家变量,避免下线后次数丢失。
调试时先看当前引擎是否支持CHANGEHUMABILITY、CHANGEITEMADDVALUE、SetNewItemValue、物品触发@Use:这些命令。修改脚本后保存为ANSI编码,重新加载NPC或重启服务端后再测试。每步都加一条SENDMSG提示,确认脚本是否执行到扣除宝石、增加属性、更新装备这三个环节。

