传奇捐献系统默认按捐献金额排序,若需实现多人并列第一,必须绕过原生排名逻辑,改用自定义变量与称号控制。核心思路是设定一个最高值阈值,所有达到该值的玩家共享“第一名”标识。
首先在QManage.txt中创建捐献NPC主菜单:
[@main]
欢迎来到沙城捐献处!
当前第一名:(金币)
捐献处理逻辑在[@Donate]标签中:
[@Donate]
IF
CHECKGOLD > 0
ACT
INPUTSTRING 请输入捐献金额(最少1000)
GOTO @ConfirmDonate
[@ConfirmDonate]
IF
SMALL 1000
SAY
金额不得少于1000金币。
ELSE
TAKE gold
INC G100
SAVEVAR G100 ..GuildSaveDonationTotal.txt
SENDMSG 5 捐献了金币!
关键判断在捐献后立即执行:
IF
LARGE 0
ACT
LOADVAR G200 ..GuildSaveTopDonation.txt
IF
LARGE G200
; 新纪录诞生,清空旧名单
DELFILE ..GuildSaveTopList.txt
SET G200
SAVEVAR G200 ..GuildSaveTopDonation.txt
WRITEFILE ..GuildSaveTopList.txt
SET S10
SET S11
ELSE
EQUAL G200
; 并列第一,追加名字
ADDFILE ..GuildSaveTopList.txt
; 更新显示名称(最多显示三人)
LOADVARLIST ..GuildSaveTopList.txt 3
SET S10 ,,
SET S11
榜单显示[@RankList]直接读取TopList.txt:
[@RankList]
ACT
LOADFILE ..GuildSaveTopList.txt
SAY
并列第一名(金币):
注意事项:
G200存储当前最高捐献额,TopList.txt记录所有并列者角色名;
WRITEFILE覆盖写入,ADDFILE追加写入,避免重复需在捐献前检查名单是否已包含当前角色;
显示名称S10使用逗号拼接,超过三人时L2之后内容被截断;
每日重置需在[@Timer86400]中清空G200、TopList.txt及S10/S11变量。
测试时先用两个账号分别捐献相同金额,验证榜单是否同时显示两人名字,并确认称号或奖励发放脚本能正确读取TopList.txt全部行。

