帮我写一个测试区等级排名的奖励发放脚本
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-03-08 14:27:22 |
👁️ 阅读: 27
根据课程日志记录,你需要使用自定义排行榜功能来实现测试区等级排名奖励发放。
以下是一个基础实现方案:
```txt
[@开启等级排名]
#ACT
; 配置等级排行榜面板ID为1
OPENHYPERLINK 32 1 1
SENDMSG 6 等级排行榜已开启
[@发放等级排名奖励]
#IF
; 假设前3名有奖励
#ACT
MOV N$排名 1
WHILE N$排名 < 4
; 获取第N$排名玩家的名字
GETRANKPLAYERNAME 1 <$STR(N$排名)> S$玩家名
; 判断玩家是否在线
#IF
CHECKONLINE <$STR(S$玩家名)>
#ACT
; 给予奖励
<$STR(S$玩家名)>.GIVE 金币 1000000
<$STR(S$玩家名)>.SENDMSG 6 恭喜你获得等级排名第<$STR(N$排名)>名奖励!
#ELSESAY
; 玩家不在线,记录到日志或延迟发放
ADDLINELIST ..\QuestDiary\等级奖励待发.txt <$STR(S$玩家名)> <$STR(N$排名)>
INC N$排名 1
ENDWHILE
SENDMSG 6 等级排名奖励发放完成
[@领取离线奖励]
#IF
#ACT
; 检查是否有待发奖励
GETLISTCOUNT ..\QuestDiary\等级奖励待发.txt N$待发数量
MOV N$当前行 0
WHILE N$当前行 < <$STR(N$待发数量)>
GETSTRINGLIST ..\QuestDiary\等级奖励待发.txt <$STR(N$当前行)> S$待发信息
; 分割信息:玩家名#排名
GETVALIDSTRSUPER <$STR(S$待发信息)> # S$玩家名_ S$排名_
#IF
EQUAL S$玩家名_ <$USERNAME>
#ACT
; 发放奖励
GIVE 金币 1000000
SENDMSG 6 补发等级排名第<$STR(S$排名_)>名奖励!
; 删除已领取记录
DELLINELIST ..\QuestDiary\等级奖励待发.txt <$STR(N$当前行)>
INC N$当前行 1
ENDWHILE
```
注意:需要在cfg_game_data.xls的SortConfig字段配置等级排序:
```
1#0#2|2#1#2|3#2#2
```
表示面板ID1按战士等级排序,面板ID2按法师等级排序,面板ID3按道士等级排序。
奖励发放逻辑可根据实际需求调整奖励内容和排名范围。
← 返回问答库