你提供的沙城主奖励脚本中,“老区每日奖励”出现无限领取漏洞,核心症结是变量控制逻辑断裂。本文结合脚本代码逐行拆解问题,给出可直接落地的修复方案。
一、漏洞现象:老区奖励为何能无限领?
脚本中“老区每日城主奖励200易点”的领取入口关联@lqc1标签,沙城主点击领取后,道具和元宝正常到账,但再次点击仍能重复领取。问题并非权限校验失效,而是控制领取次数的变量没起到作用。
二、漏洞根源:变量“判断与扣减”完全脱节
传奇脚本控制“单次/每日领取”的核心逻辑是“变量判断资格→发放奖励→修改变量锁死资格”。你的脚本打破了这个闭环,具体问题出在@lqc1和@yd两个关键标签中。
1.资格判断:只认g211,却没锁住它
@lqc1标签是领取资格的“守门人”,逻辑上只允许g211=1的沙城主进入领取环节,代码如下:
[@lqc1]
#if
EQUALg2110
#ACT
goto@wb;g211=0时跳转到“奖励已发”提示
#if
equalg2111
#act
goto@yd;g211=1时允许进入领取环节
这段逻辑本身没问题,但“守门人”只查不锁——领取后没有将g211从1改为0,导致下次判断时资格仍有效。
2.奖励发放:扣错变量,等于没锁门
沙城主进入@yd标签领取奖励后,脚本执行了道具发放和元宝增加操作,但关键的变量扣减命令用错了变量名,代码如下:
[@yd]
#if
HOUR2222;时间校验
MIN159;时间校验
ISCASTLEMASTER;沙城主身份校验
#act
give城主之刃2;道具发放(省略部分道具命令)
GameGold+8000;元宝发放
decg2121;错误核心:扣减了无关变量g212
sendmsg0沙城主%s已经成功领取攻城奖励!
核心矛盾:判断资格用的是g211,领取后却扣减了g212——这个g212在整个脚本中既没初始化,也没参与任何判断,扣减它对g211的状态毫无影响。相当于“用A钥匙开门,却把B钥匙掰断锁门”,自然锁不住。
3.附加问题:变量初始化缺失
控制老区奖励的g211变量,仅在@qc标签中被赋值为1,非管理员进入脚本时不会触发@qc,可能导致g211初始状态混乱,出现“该领的领不了,不该领的能重复领”的随机问题。
三、完整修复方案:3步补全变量控制闭环
修复思路:让“判断变量”和“扣减变量”统一为g211,同时补全变量初始化,确保每次领取后资格被正确锁死。
步骤1:给g211加“初始状态”,避免混乱
在@main标签的管理员分支中,添加g211的初始化命令,确保每天重置后状态正确。修改后的@main标签代码:
一、漏洞现象:老区奖励为何能无限领?
脚本中“老区每日城主奖励200易点”的领取入口关联@lqc1标签,沙城主点击领取后,道具和元宝正常到账,但再次点击仍能重复领取。问题并非权限校验失效,而是控制领取次数的变量没起到作用。
二、漏洞根源:变量“判断与扣减”完全脱节
传奇脚本控制“单次/每日领取”的核心逻辑是“变量判断资格→发放奖励→修改变量锁死资格”。你的脚本打破了这个闭环,具体问题出在@lqc1和@yd两个关键标签中。
1.资格判断:只认g211,却没锁住它
@lqc1标签是领取资格的“守门人”,逻辑上只允许g211=1的沙城主进入领取环节,代码如下:
[@lqc1]
#if
EQUALg2110
#ACT
goto@wb;g211=0时跳转到“奖励已发”提示
#if
equalg2111
#act
goto@yd;g211=1时允许进入领取环节
这段逻辑本身没问题,但“守门人”只查不锁——领取后没有将g211从1改为0,导致下次判断时资格仍有效。
2.奖励发放:扣错变量,等于没锁门
沙城主进入@yd标签领取奖励后,脚本执行了道具发放和元宝增加操作,但关键的变量扣减命令用错了变量名,代码如下:
[@yd]
#if
HOUR2222;时间校验
MIN159;时间校验
ISCASTLEMASTER;沙城主身份校验
#act
give城主之刃2;道具发放(省略部分道具命令)
GameGold+8000;元宝发放
decg2121;错误核心:扣减了无关变量g212
sendmsg0沙城主%s已经成功领取攻城奖励!
核心矛盾:判断资格用的是g211,领取后却扣减了g212——这个g212在整个脚本中既没初始化,也没参与任何判断,扣减它对g211的状态毫无影响。相当于“用A钥匙开门,却把B钥匙掰断锁门”,自然锁不住。
3.附加问题:变量初始化缺失
控制老区奖励的g211变量,仅在@qc标签中被赋值为1,非管理员进入脚本时不会触发@qc,可能导致g211初始状态混乱,出现“该领的领不了,不该领的能重复领”的随机问题。
三、完整修复方案:3步补全变量控制闭环
修复思路:让“判断变量”和“扣减变量”统一为g211,同时补全变量初始化,确保每次领取后资格被正确锁死。
步骤1:给g211加“初始状态”,避免混乱
在@main标签的管理员分支中,添加g211的初始化命令,确保每天重置后状态正确。修改后的@main标签代码:

