实现一个检测怪物血量低于50%,就刷新三只小怪的功能
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-23 17:52:54 |
👁️ 阅读: 12
根据课程日志记录,要实现检测怪物血量低于50%后刷新三只小怪,可以使用`mapBossinfo`命令获取地图怪物状态信息,然后解析字符串进行判断。以下是一个可行的实现方案:
```
[@检测刷新]
#IF
#ACT
; 获取当前地图所有怪物信息,结果存入S$怪物信息变量
mapBossinfo <$MAP> * 0 S$怪物信息 1
; 初始化循环变量
MOV N$索引 0
MOV S$分割结果
MOV S$怪物详情
MOV S$怪物名
MOV S$血量百分比
MOV S$刷新时间
MOV S$坐标X
MOV S$坐标Y
MOV S$归属
; 使用GETVALIDSTRSUPER分割怪物信息(&符号分隔)
GETVALIDSTRSUPER <$STR(S$怪物信息)> & S$分割结果
; 开始循环处理每个怪物
WHILE N$索引 < <$STR(S$分割结果)>
; 获取单个怪物信息字符串
GETVALIDSTRSUPER <$STR(S$分割结果_<$STR(N$索引)>)> # S$怪物详情
; 解析怪物详情字段(格式:名称#血量%#刷新时间#X#Y#归属)
GETVALIDSTRSUPER <$STR(S$怪物详情)> # S$怪物名
GETVALIDSTRSUPER <$STR(S$怪物详情_1)> # S$血量百分比
GETVALIDSTRSUPER <$STR(S$怪物详情_2)> # S$刷新时间
GETVALIDSTRSUPER <$STR(S$怪物详情_3)> # S$坐标X
GETVALIDSTRSUPER <$STR(S$怪物详情_4)> # S$坐标Y
GETVALIDSTRSUPER <$STR(S$怪物详情_5)> # S$归属
; 判断血量是否低于50%(且怪物存活,刷新时间为0)
#IF
SMALL <$STR(S$血量百分比)> 50
EQUAL <$STR(S$刷新时间)> 0
#ACT
; 在怪物当前位置刷新三只小怪(假设小怪名为"小怪")
PARAM1 <$STR(S$坐标X)>
PARAM2 <$STR(S$坐标Y)>
PARAM3 <$STR(S$坐标X)>
PARAM4 <$STR(S$坐标Y)>
MonGen 小怪 3 1
SendMsg 6 怪物【<$STR(S$怪物名)>】血量低于50%,已刷新三只小怪!
#ELSESAY
; 可留空或记录日志
#ENDIF
; 索引递增
INC N$索引 1
ENDWHILE
```
**注意事项:**
1. `mapBossinfo`命令需要`cfg_mongen.xls`表中第7列和第10列字段填1(脚本命令刷的怪可不填)。
2. `MonGen`命令用于在指定坐标范围刷新怪物,需要确保"小怪"名称在怪物表中存在。
3. 建议将此逻辑放入定时器或特定触发点执行,避免频繁检测影响性能。
4. 如果地图怪物数量较多,可考虑优化循环逻辑或增加条件限制。
若需要更精确的触发机制(如仅对特定BOSS生效),可在解析怪物名称后增加名称判断。
← 返回问答库