乾坤玉璧解封检查在脚本中依靠物品检测和变量判断。未解封与已解封用变量值区分,常见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。检查变量:CHECKVARHUMAN玉璧解封=0。GEE引擎检查变量:CHECKVARHUMAN玉璧解封=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
CHECKVARHUMAN玉璧解封=0
#ACT
GOTO@乾坤玉璧解封
#ELSEACT
SENDMSG6你已解封或没有乾坤玉璧
BREAK
[@乾坤玉璧解封]
#IF
CHECKLEVELEX>40
CHECKGAMEGOLD>1000
CHECKITEM解封石10
#ACT
TAKE乾坤玉璧1
TAKE解封石10
GAMEGOLD-1000
GIVE乾坤玉璧(解封)1
SETVARHUMAN玉璧解封=1
SENDMSG6乾坤玉璧解封成功
#ELSEACT
SENDMSG6等级不足40或元宝不足或解封石不足
BREAK
如果解封后物品名称不变,只加属性,则不用GIVE新物品。用CHANGEITEM命令改属性。例如CHANGEITEM0410,CHANGEITEM0520。但属性修改要防止重复叠加,必须靠变量判断。解封后设置变量为1,再次使用物品时先检查变量,已解封直接提示,不再执行属性修改。
五、NPC对话检查脚本
NPC脚本中写:
#IF
CHECKITEM乾坤玉璧1
CHECKVARHUMAN玉璧解封=1
#SAY
你的乾坤玉璧已经解封。
#IF
CHECKITEM乾坤玉璧1
CHECKVARHUMAN玉璧解封=0
#SAY
你的乾坤玉璧尚未解封。需要等级40、元宝1000、解封石10个。\
<解封/@解封玉璧>\
<离开/@exit>
#IF
CHECKITEM乾坤玉璧0
#SAY
你没有乾坤玉璧。
[@解封玉璧]
#IF
CHECKVARHUMAN玉璧解封=0
CHECKLEVELEX>40
CHECKGAMEGOLD>1000
CHECKITEM解封石10
#ACT
TAKE解封石10
GAMEGOLD-1000
SETVARHUMAN玉璧解封=1
SENDMSG6乾坤玉璧解封成功
#ELSEACT
SENDMSG6条件不足
六、装备穿戴检查
如果解封后属性通过装备触发给予,在QFunction装备触发中检查变量。例如:
[@穿装备]
#IF
CHECKVARHUMAN玉璧解封=1
CHECKITEM乾坤玉璧(解封)1
#ACT
CHANGEITEM0410
CHANGEITEM0520
#ELSEACT
SENDMSG6未解封的乾坤玉璧无法获得额外属性
脱装备时用变量判断并还原属性。防止属性叠加。
七、防止重复解封
每次解封前必须再次检查变量。解封成功后立即设置变量为1。扣除材料后再给物品或改属性。如果扣除材料失败,不能设置变量。脚本中先执行TAKE,再执行SETVAR。如果GIVE失败,要回退材料,但脚本较难回退。可先检查背包空格,CHECKBAGSPACE>1。材料扣除用TAKE,确保数量足够。元宝扣除用GAMEGOLD-,扣除前用CHECKGAMEGOLD检查。不要先SETVAR再扣材料。
八、多引擎差异
GOM引擎变量用HUMAN,命令SETVARHUMAN玉璧解封=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,继续执行后续脚本。解决方法是逐步测试,查看日志,确认变量和物品状态。
检查乾坤玉璧是否解封的脚本核心是物品检测加变量判断。变量保存方式和物品绑定方式决定解封状态是否跟随物品。按上述流程编写并测试后即可使用。
一、物品数据库准备
乾坤玉璧在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。检查变量:CHECKVARHUMAN玉璧解封=0。GEE引擎检查变量:CHECKVARHUMAN玉璧解封=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
CHECKVARHUMAN玉璧解封=0
#ACT
GOTO@乾坤玉璧解封
#ELSEACT
SENDMSG6你已解封或没有乾坤玉璧
BREAK
[@乾坤玉璧解封]
#IF
CHECKLEVELEX>40
CHECKGAMEGOLD>1000
CHECKITEM解封石10
#ACT
TAKE乾坤玉璧1
TAKE解封石10
GAMEGOLD-1000
GIVE乾坤玉璧(解封)1
SETVARHUMAN玉璧解封=1
SENDMSG6乾坤玉璧解封成功
#ELSEACT
SENDMSG6等级不足40或元宝不足或解封石不足
BREAK
如果解封后物品名称不变,只加属性,则不用GIVE新物品。用CHANGEITEM命令改属性。例如CHANGEITEM0410,CHANGEITEM0520。但属性修改要防止重复叠加,必须靠变量判断。解封后设置变量为1,再次使用物品时先检查变量,已解封直接提示,不再执行属性修改。
五、NPC对话检查脚本
NPC脚本中写:
#IF
CHECKITEM乾坤玉璧1
CHECKVARHUMAN玉璧解封=1
#SAY
你的乾坤玉璧已经解封。
#IF
CHECKITEM乾坤玉璧1
CHECKVARHUMAN玉璧解封=0
#SAY
你的乾坤玉璧尚未解封。需要等级40、元宝1000、解封石10个。\
<解封/@解封玉璧>\
<离开/@exit>
#IF
CHECKITEM乾坤玉璧0
#SAY
你没有乾坤玉璧。
[@解封玉璧]
#IF
CHECKVARHUMAN玉璧解封=0
CHECKLEVELEX>40
CHECKGAMEGOLD>1000
CHECKITEM解封石10
#ACT
TAKE解封石10
GAMEGOLD-1000
SETVARHUMAN玉璧解封=1
SENDMSG6乾坤玉璧解封成功
#ELSEACT
SENDMSG6条件不足
六、装备穿戴检查
如果解封后属性通过装备触发给予,在QFunction装备触发中检查变量。例如:
[@穿装备]
#IF
CHECKVARHUMAN玉璧解封=1
CHECKITEM乾坤玉璧(解封)1
#ACT
CHANGEITEM0410
CHANGEITEM0520
#ELSEACT
SENDMSG6未解封的乾坤玉璧无法获得额外属性
脱装备时用变量判断并还原属性。防止属性叠加。
七、防止重复解封
每次解封前必须再次检查变量。解封成功后立即设置变量为1。扣除材料后再给物品或改属性。如果扣除材料失败,不能设置变量。脚本中先执行TAKE,再执行SETVAR。如果GIVE失败,要回退材料,但脚本较难回退。可先检查背包空格,CHECKBAGSPACE>1。材料扣除用TAKE,确保数量足够。元宝扣除用GAMEGOLD-,扣除前用CHECKGAMEGOLD检查。不要先SETVAR再扣材料。
八、多引擎差异
GOM引擎变量用HUMAN,命令SETVARHUMAN玉璧解封=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,继续执行后续脚本。解决方法是逐步测试,查看日志,确认变量和物品状态。
检查乾坤玉璧是否解封的脚本核心是物品检测加变量判断。变量保存方式和物品绑定方式决定解封状态是否跟随物品。按上述流程编写并测试后即可使用。

