附录
多功能比较命令
用于做数值、字符串、日期以及前后缀等扩展比较。
命令用途
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 "当前时间已经超过活动截止点。"
这类写法用于按时间格式比较完整日期时间值。
注意事项
- 数值比较、字符串比较和时间比较混用时,最好显式写第四参数,避免结果被错误解释。
&适合位掩码或开关位判断,但前提是两侧值本身就是按位含义设计的整数。- 如果只是最普通的数值大小比较,也可以优先看脚本基础里的条件判断说明。
