Previous topicNext topic
Help > BLUE引擎2021更新 >
COMPVAL检测详细说明

检测: Compval 变量 </=/>/!/?/&
===============================================
一、支持脚本变量大全里所有变量检测!!
二、支持:P\D\M\I\S\A\G\H\INTS 自定义等变量检测!
三、支持:日期、函数变量!
=========================
举例一:脚本变量大全
=========================
#IF
COMPVAL <$HP> < <$MAXHP>
#ACT
SendMsg 6 当前血量:<$HP>、小于最大血量:<$MAXHP>
#ELSEACT
SendMsg 6 当前您已是满血状态
=========================
举例二:反向检测!
=========================
#IF
!COMPVAL <$HP> < <$MAXHP>
#ACT
SendMsg 6 当前血量:<$HP>、小于最大血量:<$MAXHP>
#ELSEACT
SendMsg 6 当前您已是满血状态
=========================
举例三:普通、全局、自定义变量
=========================
#ACT
MOV S_当前地图编号 <$CURRENTMAP>
MOV S_当前地图名称 <$CURRENTMAPDESC>

#IF
COMPVAL <$STR(S_当前地图编号)> = 3
#ACT
SendMsg 6 您当前所在地图编号:<$STR(S_当前地图编号)>
#ELSEACT
SendMsg 6 您当前所在地图编号:<$CURRENTMAP>、不属于:盟重土城

#IF
COMPVAL <$STR(S_当前地图名称)> = 比奇省
#ACT
SendMsg 6 您当前所在地图名称:<$STR(S_当前地图编号)>、属于:<$CURRENTMAPDESC>
#ELSEACT
SendMsg 6 您当前所在地图名称:<$CURRENTMAP>、不属于:比奇省
=========================
举例四:时间戳
=========================
#IF
TRUE
#ACT
INTS 22 = $UNIXTIME
INTS 22 + 600    //第4参数1表示无符号计算,无符号32位整数最大值大约是42亿,而有符号(正负数)32位整数最大值大约是21亿

#IF
COMPVAL $INTS22 > $UNIXTIME
#ACT
CALCVAL $INTS22 - $UNIXTIME
SENDMSG 7 将在$CALCRESULT秒后过期
CALCVAL $INTS22 ~ 0   // ~符号,表示将$INTS22转换为普通的时间格式,专用符号
SENDMSG 7 将在$CALCRESULT过期
#ELSEACT
SENDMSG 7 已过期
=========================
举例五:账号id
=========================
#IF
Compval <$USERID> ^ "JS"            //<$USERID> ^ "userid" 是否以JS开头
#ACT
sendmsg 5 当前账号:<$USERID>
#ELSEACT
sendmsg 6 当前账号:<$USERID>、不正确

#IF
Compval <$USERID> ` "JS"            //<$USERID> ` "userid" 是否以JS结尾
#ACT
sendmsg 5 当前账号:<$USERID>
#ELSEACT
sendmsg 6 当前账号:<$USERID>、不正确
=========================
举例六:支持与运算(&号)比较
=========================
[@OR]
#act
OR P1 5                   //或运算,1位和3位设置为1(1是低1位,4是低3位,可以用计算器查看BIN数据)
SendMsg 7 <$STR(P1)>

[@XOR]
#if
  CompVal <$STR(P1)> & 1
#act
  XOR P1 1   // 异或运算,1位设置为0

#if
  CompVal <$STR(P1)> & 4 // 异或运算,3位设置为0
#act
  XOR P1 4

[@CheckSwitchState]
#if
  CompVal <$STR(P1)> & 1 // 于运算 比较
#act
  SendMsg 7 P1低1位二进制数值为1
#elseact
  SendMsg 7 P1低1位二进制数值为0

#if
  CompVal <$STR(P1)> & 2
#act
  SendMsg 7 P1低2位二进制数值为1
#elseact
  SendMsg 7 P1低2位二进制数值为0

#if
  CompVal <$STR(P1)> & 4
#act
  SendMsg 7 P1低3位二进制数值为1
#elseact
  SendMsg 7 P1低3位二进制数值为0