当前位置:首页 > 引擎 > Blue引擎

传奇脚本COMPVAL检测功能完整使用教程

admin3天前6
在传奇脚本编写过程中,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

 


扫描二维码推送至手机访问。

本文章九路游发布,如需转载请注明出处。如有侵权请联系站长删除。

本文链接:https://www.9luu.com/91.html

分享给朋友: