附录

多功能比较命令

用于做数值、字符串、日期以及前后缀等扩展比较。

命令用途

Compval 用于做数值、字符串、日期以及前后缀等扩展比较。

它适合处理普通大小比较之外的字符串匹配、位掩码判断和时间格式比较。

命令名

Compval

调用格式

Compval <值1> <运算符> <值2> [类型]

参数说明

参数必填说明
值1是参与比较的左侧值,可以是变量、标签结果或字面量。
运算符是常用 ? 大于等于、= 等于、! 不等于、> 大于、< 小于、& 与运算、^ 前缀匹配、` 后缀匹配。
值2是参与比较的右侧值,可以是变量、标签结果或字面量。
类型否类型标识符:i(有符号整数)、s(字符串)、t(日期)、f(浮点数)、u(无符号 64 位整数)。强烈建议必填,用于强制指定比较类型,避免引擎按默认方式解析导致逻辑错误。

运算符对照

运算符含义示例
<小于CompVal <$STR(G1)> < 100 i
=等于CompVal <$USERNAME> = "admin" s
>大于CompVal <$LEVEL> > 50 i
!不等于CompVal <$STR(G1)> ! 1 i
?大于等于CompVal <$PARAM(1)> ? 10 i
^以指定内容开头Compval <$USERID> ^ "admin" s
`以指定内容结尾Compval <$USERID> "admin" s
&与运算比较CompVal <$STR(M_BIT)> & 1 i

第四参数(类型标识符)

标识符类型说明与范围
i / int有符号整数等级、血量、攻击力等,范围 -2147483648 ~ 2147483647
s / str字符串玩家名、物品名、文本匹配、空值判断等
t / tm日期日期格式、时间戳
f浮点数支持小数(如 1.5),用于百分比计算、爆率加成、属性倍率比较等
u无符号 64 位整数主要用于装备 ID,范围 0 ~ 9223372036854775807
  • 数值可能超过 9.22e18 时必须用 u,否则会溢出导致比较错误。
  • 数值包含小数点(如 1.5)时必须用 f,否则脚本会截断小数位。
  • 数字与字符串要区分清楚再比较。
  • Compval 不写第四参数时,默认先按 INT 比较、再按 STR 比较。

返回或影响

  • 这是检查型命令,只能在条件判断流程中使用。
  • 比较成立时,#IF 判断通过。
  • 当比较目标是日期时间或浮点值时,显式写第四参数更稳妥。

示例

判断字符串是否相等

#IF
Compval <$USERNAME> = 测试角色 str
#ACT
SendMsg 5 "名称完全匹配。"

这段写法用于按字符串方式判断当前角色名是否等于 测试角色。

判断是否以前缀开头

#IF
Compval <$USERNAME> ^ 测试 str
#ACT
SendMsg 5 "名称以前缀“测试”开头。"

这类写法适合做批量测试号、运营角色或统一前缀命名判断。

判断时间是否已过期

#IF
Compval <$TIMESTAMP> > "2026-04-08 20:00:00" tm
#ACT
SendMsg 5 "当前时间已经超过活动截止点。"

这类写法用于按时间格式比较完整日期时间值。

注意事项

  • 数值比较、字符串比较和时间比较混用时,最好显式写第四参数,避免结果被错误解释。
  • & 适合位掩码或开关位判断,但前提是两侧值本身就是按位含义设计的整数。
  • 如果只是最普通的数值大小比较,也可以优先看脚本基础里的条件判断说明。

相关命令