传奇脚本COMPVAL检测功能完整使用教程
在传奇脚本编写过程中,COMPVAL检测是核心常用的判断功能,主要用于各类变量的对比校验,能够实现游戏内血量、地图、时间、账号、二进制运算等各类数据的精准判定,是搭建传奇功能脚本、优化游戏玩法、完善脚本逻辑的关键指令。下面为大家详细讲解传奇COMPVAL检测的完整功能、支持范围及各类实战使用案例。一…
在传奇脚本编写过程中,COMPVAL检测是核心常用的判断功能,主要用于各类变量的对比校验,能够实现游戏内血量、地图、时间、账号、二进制运算等各类数据的精准判定,是搭建传奇功能脚本、优化游戏玩法、完善脚本逻辑的关键指令。下面为大家详细讲解传奇COMPVAL检测的完整功能、支持范围及各类实战使用案例。
一、COMPVAL检测核心支持范围
COMPVAL检测指令兼容性极强,覆盖传奇脚本绝大多数变量类型,能够满足各类脚本场景的判定需求,具体支持范围如下:
1、全面支持脚本变量大全中所有常规变量检测,适配传奇原版所有基础脚本变量;
2、兼容P、D、M、I、S、A、G、H、INTS等各类自定义变量、专属变量检测,适配自定义脚本功能开发;
3、支持日期变量、函数变量等特殊变量检测,可实现时间判定、数据运算判定等进阶功能。
同时该指令支持多种对比运算符,包含小于、大于、等于、不等于、疑问运算、与运算等,可灵活搭配实现各类复杂脚本判定逻辑。
二、传奇COMPVAL检测实战案例大全
为方便传奇脚本开发者快速上手,下面整理六大高频实战案例,涵盖基础变量、反向检测、自定义变量、时间戳、账号判定、二进制与运算等常用场景,代码可直接复制使用。
案例一:基础脚本血量变量检测
通过COMPVAL检测角色当前血量与最大血量的数值对比,判断角色是否满血,是传奇打怪、回血、状态提示脚本的基础用法。
#IF
COMPVAL <$HP> < <$MAXHP>
#ACT
SendMsg 6 当前血量:<$HP>、小于最大血量:<$MAXHP>
#ELSEACT
SendMsg 6 当前您已是满血状态
案例二:COMPVAL反向检测用法
在判定指令前添加感叹号,可实现反向逻辑检测,即不满足判定条件时执行对应脚本,适用于特殊状态筛选、异常数据判定场景。
#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>、不属于:比奇省
案例四:时间戳变量检测用法
结合INTS整数变量、时间戳变量,通过COMPVAL检测时间差值,可实现道具过期、buff时效、限时活动等时间判定功能。
#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字符匹配检测
COMPVAL支持账号首尾字符匹配判定,可筛选指定前缀、后缀的游戏账号,实现账号专属权限、专属福利、账号过滤等功能。
#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


