在传奇沙城主奖励脚本中存在一个漏洞,使得沙城主可以无限领取老区的奖励。这是因为在[@lqc1]触发器中,当变量g211等于1时,可以领取奖励,但是领取奖励后并没有将g211变量改变,反而将g212变量减1。
修复方法:
可以将g211和g212全部改成一个数,例如都改成g211,这样就可以避免因为变量不同而导致的无限领取奖励的问题。
优化后的代码:
[@lqc1] #if EQUAL g211 0
#ACT goto @wb
#if equal g211 1 #act goto @yd
[@yd] #if HOUR 22 22 MIN 1 59 ISCASTLEMASTER #act give 城主之刃 2 give 城主战甲(男) 1 give 城主战甲(女) 1 give 1.8倍坠 1 give 秒杀一切�I盾 1 give 秒杀一切�I盔 1 give 秒杀一切�I镯 2 give 秒杀一切�I戒 2 give 秒杀一切�I靴 1 give 秒杀一切�I带 1 give 秒杀一切�I石 1 give 秒杀一切�I链 1 give 绝对防御甲 1 give 无敌秒杀刃 1 GameGold + 8000 dec g211 1 sendmsg 0 沙城主%s,已经成功领取攻城奖励! sendmsg 0 沙城主%s,已经成功领取攻城奖励! sendmsg 0 沙城主%s,已经成功领取攻城奖励! sendmsg 0 沙城主%s,已经成功领取攻城奖励! #elseact messagebox 您不是沙巴克城主,或者已经超过了时间.请在晚上10点到11点之间来找我. 顺便告诉你,变量G211加1后,永远不会等于G212,明白吗???
近期发现传奇沙城主奖励脚本存在漏洞,导致沙城主可以无限领取老区的奖励。经过分析,发现脚本中的变量设置出现了问题。以下是修复漏洞的方法及优化建议:
修复方法:
在脚本中,涉及到领取奖励后修改变量的地方,应确保修改的是正确的变量,并且修改后能够防止重复领取奖励。针对问题脚本中的G211和G212变量,应统一设置为一个变量,并在领取奖励后递减该变量的值。
优化建议:
在处理变量时,应避免混淆和误解。正确理解变量的含义和作用可以避免脚本出现逻辑错误。同时,在编写脚本时,建议添加注释以提高代码可读性和维护性。
修复后的脚本如下所示:
[@lqc1]
#if
EQUAL g211 0
#ACT
goto @wb
#if
equal g211 1
#act
goto @yd
[@yd]
#if
HOUR 22 22
MIN 1 59
ISCASTLEMASTER
#act
give 城主之刃 2
give 城主战甲(男) 1
give 城主战甲(女) 1
give 1.8倍坠 1
give 秒杀一切�I盾 1
give 秒杀一切�I盔 1
give 秒杀一切�I镯 2
give 秒杀一切�I戒 2
give 秒杀一切�I靴 1
give 秒杀一切�I带 1
give 秒杀一切�I石 1
give 秒杀一切�I链 1
give 绝对防御甲 1
give 无敌秒杀刃 1
GameGold + 8000
dec g211 1
sendmsg 0 沙城主%s,已经成功领取攻城奖励!
sendmsg 0 沙城主%s,已经成功领取攻城奖励!
sendmsg 0 沙城主%s,已经成功领取攻城奖励!
sendmsg 0 沙城主%s,已经成功领取攻城奖励!
#elseact
messagebox 您不是沙巴克城主,或者已经超过了时间.请在晚上10点到11点之间来找我.
[@wb]
#act
messagebox 沙城主奖励已经发放完毕.
break
修复后的脚本能够正确处理变量并防止沙城主无限领取老区奖励的问题。同时,通过优化注释和代码结构,提高了脚本的可读性和维护性。