乾坤玉璧解封检查在脚本中依靠物品检测和变量判断。未解封与已解封用变量值区分,常见0为未解封,1为已解封。变量必须用个人变量,例如U变量、P变量、M变量、D变量,不能用临时变量。全局变量会导致所有角色共用解封状态。物品检测用CHECKITEM,变量检测用CHECKVAR或CHECK。触发点放在使用物品、NPC对话、任务接取、装备穿戴。
一、物品数据库准备
乾坤玉璧在StdItems.DB中定义。Name写乾坤玉璧。StdMode和Shape决定使用触发编号。Reserved字段可留空,解封状态不写数据库,写个人变量。如果需要两种物品,未解封和已解封分别建两个物品,名称不同。已解封物品可设置更高属性。使用触发编号要在QFunction中对应。物品重量、持久、叠加正常设置。叠加数量设为1,防止批量使用绕过检查。
二、变量命名与定义
个人变量U100记录解封状态。U100为0表示未解封,U100为1表示已解封。部分引擎变量范围不同,GOM常用U0到U199,GEE常用U0到U255,HERO常用P0到P99。定义变量在Mir200\Envir\Variables目录,或M2控制台变量设置。变量名写玉璧解封。变量类型选个人。保存标志开启,下线保存。不要用全局变量G,否则一个角色解封后所有角色都显示已解封。
三、检查命令写法
GOM引擎检查物品:CHECKITEM 乾坤玉璧 1。检查变量:CHECKVAR HUMAN 玉璧解封 = 0。GEE引擎检查变量:CHECKVAR HUMAN 玉璧解封 = 0。HERO引擎检查变量:CHECK [100] 0。检查已解封:CHECK [100] 1。检查物品数量大于等于1。检查等级:CHECKLEVELEX > 40。检查元宝:CHECKGAMEGOLD > 1000。检查金币:CHECKGOLD > 500000。检查材料:CHECKITEM 解封石 10。多个条件用#IF并列,全部满足才执行#ACT。
四、使用物品触发脚本
在QFunction-0.txt中写:
[@StdModeFunc50]
#IF
CHECKITEM 乾坤玉璧 1
CHECKVAR HUMAN 玉璧解封 = 0
#ACT
GOTO @乾坤玉璧解封
#ELSEACT
SENDMSG 6 你已解封或没有乾坤玉璧
BREAK
[@乾坤玉璧解封]
#IF
CHECKLEVELEX > 40
CHECKGAMEGOLD > 1000
CHECKITEM 解封石 10
#ACT
TAKE 乾坤玉璧 1
TAKE 解封石 10
GAMEGOLD - 1000
GIVE 乾坤玉璧(解封) 1
SETVAR HUMAN 玉璧解封 = 1
SENDMSG 6 乾坤玉璧解封成功
#ELSEACT
SENDMSG 6 等级不足40或元宝不足或解封石不足
BREAK
如果解封后物品名称不变,只加属性,则不用GIVE新物品。用CHANGEITEM命令改属性。例如CHANGEITEM 0 4 10,CHANGEITEM 0 5 20。但属性修改要防止重复叠加,必须靠变量判断。解封后设置变量为1,再次使用物品时先检查变量,已解封直接提示,不再执行属性修改。
五、NPC对话检查脚本
NPC脚本中写:
#IF
CHECKITEM 乾坤玉璧 1
CHECKVAR HUMAN 玉璧解封 = 1
#SAY
你的乾坤玉璧已经解封。
#IF
CHECKITEM 乾坤玉璧 1
CHECKVAR HUMAN 玉璧解封 = 0
#SAY
你的乾坤玉璧尚未解封。需要等级40、元宝1000、解封石10个。\
<解封/@解封玉璧>\
<离开/@exit>
#IF
CHECKITEM 乾坤玉璧 0
#SAY
你没有乾坤玉璧。
[@解封玉璧]
#IF
CHECKVAR HUMAN 玉璧解封 = 0
CHECKLEVELEX > 40
CHECKGAMEGOLD > 1000
CHECKITEM 解封石 10
#ACT
TAKE 解封石 10
GAMEGOLD - 1000
SETVAR HUMAN 玉璧解封 = 1
SENDMSG 6 乾坤玉璧解封成功
#ELSEACT
SENDMSG 6 条件不足
六、装备穿戴检查
如果解封后属性通过装备触发给予,在QFunction装备触发中检查变量。例如:
[@穿装备]
#IF
CHECKVAR HUMAN 玉璧解封 = 1
CHECKITEM 乾坤玉璧(解封) 1
#ACT
CHANGEITEM 0 4 10
CHANGEITEM 0 5 20
#ELSEACT
SENDMSG 6 未解封的乾坤玉璧无法获得额外属性
脱装备时用变量判断并还原属性。防止属性叠加。
七、防止重复解封
每次解封前必须再次检查变量。解封成功后立即设置变量为1。扣除材料后再给物品或改属性。如果扣除材料失败,不能设置变量。脚本中先执行TAKE,再执行SETVAR。如果GIVE失败,要回退材料,但脚本较难回退。可先检查背包空格,CHECKBAGSPACE > 1。材料扣除用TAKE,确保数量足够。元宝扣除用GAMEGOLD -,扣除前用CHECKGAMEGOLD检查。不要先SETVAR再扣材料。
八、多引擎差异
GOM引擎变量用HUMAN,命令SETVAR HUMAN 玉璧解封 = 1。GEE引擎变量类似,但变量索引写法可能不同。HERO引擎用SET [100] 1,检查用CHECK [100] 1。BLUE引擎用SETVAR,LEG引擎用SET。使用前查对应引擎脚本手册。物品触发编号由StdMode和Shape计算,不同引擎计算方式不同。GOM中StdMode=31,Shape=50,触发编号为3150或50,具体查引擎说明。不要直接套用其他引擎脚本。
九、调试方法
用GM命令查看变量。GOM输入@查看变量 玩家名,或M2控制台变量管理。HERO输入@查看变量。测试步骤:新建角色,不给乾坤玉璧,使用物品,看提示。给乾坤玉璧,不解封,看提示。给乾坤玉璧,满足条件,解封,看变量和物品。再次使用,看是否提示已解封。小退再上线,看变量是否保存。交易乾坤玉璧,看解封状态是否跟随物品。如果变量是个人变量,交易后物品到别人手里,别人变量为0,会显示未解封。如果需要物品本身记录解封状态,要用物品自定义属性或数据库字段,不能只用个人变量。物品自定义属性在部分引擎用SETITEMFLAG或SETITEMVALUE,交易后跟随物品。检查是否解封用CHECKITEMFLAG或CHECKITEMVALUE。
十、常见错误
变量未定义导致脚本报错。变量类型错误,用全局变量导致所有角色共用。物品名写错,CHECKITEM找不到。触发编号写错,使用物品不触发。条件顺序错误,先扣材料后检查变量,导致重复扣。未检查背包空格,GIVE失败物品消失。未重载脚本,修改后不生效。编码错误,中文物品名乱码。变量未保存,小退后解封状态丢失。交易后解封状态丢失。叠加物品批量使用绕过检查。脚本递归调用,解封触发又调用解封。检查时未加BREAK,继续执行后续脚本。解决方法是逐步测试,查看日志,确认变量和物品状态。
检查乾坤玉璧是否解封的脚本核心是物品检测加变量判断。变量保存方式和物品绑定方式决定解封状态是否跟随物品。按上述流程编写并测试后即可使用。
传奇脚本检查乾坤玉璧是否解封状态完整方法与变量条件判断实战配置
来源:
作者:
点击:

