本人架设传奇,编写了一套元宝抽奖卡的抽奖脚本,核心问题是:天魔神甲、圣战宝甲等我自己手动添加的装备,抽奖时死活抽不出来,绝对不是概率问题——我特意把霸者之刃的抽奖概率设为1/10,连续抽了100次,一次都没抽出来,普通装备能正常抽出,就自己添加的这些装备抽不出来,恳请各位脚本高手帮忙看看,到底是哪里出了问题,怎么修改才能正常抽出。
先明确核心情况,避免高手们混淆:抽奖脚本的普通装备(比如嗜魂法杖、高级扇子)能正常抽出,每次使用元宝抽奖卡,都能随机抽到这些普通装备,提示信息也能正常显示,说明抽奖脚本的核心逻辑、触发方式、元宝抽奖卡的使用的都是正常的,没有问题。
问题只出在我自己手动添加的装备上,也就是天魔神甲、圣战宝甲,还有我特意测试概率的霸者之刃,这些装备都是我自己在脚本里添加的抽奖项,并且我已经确认,这些装备在游戏里是存在的,能通过刷怪等其他方式正常获得,不存在装备数据库缺失的情况,排除了装备本身不存在导致抽不出来的可能。
下面我把当前正在使用的抽奖脚本完整贴出来,方便高手们精准排查,所有脚本命令都是我手动编写的,没有修改过核心格式,只添加了装备名称和对应概率,具体脚本内容如下:
#if random 300 #act give 嗜魂法杖 1 SENDMSG 7 『%s』使用元宝抽奖卡,获得嗜魂法杖一件! break CLOSE #if random 300 #act give 高级扇子 1 SENDMSG 7 『%s』使用元宝抽奖卡,获得高级扇子一件! break CLOSE #if random 200 #act give 天魔神甲 1 SENDMSG 1 『%s』使用元宝抽奖卡,获得天魔神甲一件!提示:抽奖只能抽出普通装备,极品装备仍需通过努力才能得到。 break CLOSE #if random 200 #act give 圣战宝甲 1 SENDMSG 7 『%s』使用元宝抽奖卡,获得圣战宝甲一件! break CLOSE
补充说明一下脚本的逻辑,我理解的是,每次玩家使用元宝抽奖卡,就会依次触发这些#IF判断,每个判断对应一个装备的抽奖概率,比如random 300就是1/300的概率抽到嗜魂法杖,random 200就是1/200的概率抽到天魔神甲,抽到后执行give命令发放装备,发送系统提示,然后用break和CLOSE结束当前脚本,避免重复抽奖。
我特意做了测试,把霸者之刃的抽奖概率改成了random 10(也就是1/10的概率),并且在脚本里添加了对应的条目,和上面的脚本格式完全一致,连续使用元宝抽奖卡抽了100次,期间正常抽出了嗜魂法杖、高级扇子,就是一次都没抽出霸者之刃,甚至连天魔神甲、圣战宝甲的影子都没有,这就完全排除了概率问题,肯定是脚本本身有问题。
先跟大家说清楚我已经排查过的地方,避免重复排查,节省大家时间:
第一,排查装备是否存在,我打开游戏服务端的装备数据库,逐一确认了天魔神甲、圣战宝甲、霸者之刃这三件装备,数据库里都有对应的条目,装备编号、名称、属性都设置完整,和嗜魂法杖、高级扇子的数据库格式完全一致,而且这些装备能通过刷怪正常获得,说明装备数据库没有问题,不是装备本身无法生成导致抽不出来。
第二,排查概率设置,我反复检查了脚本里的random参数,普通装备的random 300能正常生效,而我测试的霸者之刃设置成random 10,概率已经非常高,100次抽奖理论上能抽到10次左右,却一次都没抽到,说明不是概率设置过低的问题,而是脚本没有执行到这些自己添加的装备抽奖条目。
第三,排查脚本触发方式,玩家使用元宝抽奖卡的触发命令是正常的,能顺利触发整个抽奖脚本,并且正常抽出普通装备,说明脚本的触发环节没有问题,不是触发失败导致极品装备抽不出来,问题应该出在脚本命令本身,或者自己添加的抽奖条目的格式上。
第四,排查装备名称是否正确,我反复对比了脚本里的装备名称和数据库里的装备名称,天魔神甲、圣战宝甲、霸者之刃的名称完全一致,没有错别字、没有多余空格,也没有大小写混淆的情况,和嗜魂法杖、高级扇子的名称格式完全一样,排除了装备名称错误导致give命令无法发放装备的可能。
现在我重点怀疑几个可能出问题的地方,恳请高手们帮忙判断,这些都是我自己不确定的点,也是目前排查不出来的关键:
第一个疑问,脚本里的#IF判断顺序是不是有问题?我当前的脚本是先写普通装备的抽奖条目,再写自己添加的极品装备条目,会不会是脚本执行到普通装备的抽奖条目后,被break和CLOSE命令终止,导致后面自己添加的极品装备条目无法被执行,所以抽不出来?
比如,玩家使用抽奖卡后,脚本先判断是否抽到嗜魂法杖(random 300),不管抽到还是没抽到,都会执行break和CLOSE,终止整个脚本,导致后面的天魔神甲、圣战宝甲的抽奖条目根本没有机会被执行,所以不管怎么抽,都只能抽出前面的普通装备,抽不到后面自己添加的装备,这会不会是核心问题?
第二个疑问,give命令的使用是不是有问题?普通装备的give 嗜魂法杖 1能正常发放装备,而自己添加的装备使用同样的give命令,会不会是因为这些装备是自己手动添加的,需要在give命令后面添加额外的参数,或者修改命令格式,才能正常发放?比如需要添加装备编号,而不是只写装备名称?
我之前编写脚本时,一直都是用“give 装备名称 数量”的格式发放装备,普通装备能正常生效,但不确定自己手动添加的装备是不是需要特殊的give命令格式,比如“give 装备编号 数量”,如果是这样,就会导致give命令无法识别装备名称,无法发放装备,进而抽不出来。
第三个疑问,脚本里的SENDMSG命令和提示信息是不是有问题?我注意到,天魔神甲的SENDMSG 1后面,除了系统提示,还加了一句“提示:抽奖只能抽出普通装备,极品装备仍需通过努力才能得到。”,这句话会不会影响脚本执行?比如提示信息里的符号、空格不对,导致整个抽奖条目报错,无法执行,进而抽不出天魔神甲?
而其他装备的SENDMSG命令后面,只有单纯的获奖提示,没有额外的文字,会不会是这句额外的提示导致脚本解析错误,使得天魔神甲的抽奖条目失效,同时影响后面的圣战宝甲、霸者之刃的条目,导致所有自己添加的装备都抽不出来?
第四个疑问,break和CLOSE命令的使用是不是有问题?每个抽奖条目后面都加了break和CLOSE,会不会是这两个命令的使用方式错误,导致脚本无法正常执行后续的抽奖条目?比如,break命令应该放在所有抽奖条目之后,而不是每个条目之后,每个条目都加break,会导致脚本提前终止,后续条目无法执行。
我对比了其他正常的抽奖脚本,发现有些脚本是所有#IF判断结束后,只加一个break和CLOSE,而我当前的脚本是每个#IF判断后面都加了break和CLOSE,这会不会是关键错误?比如,普通装备的条目执行后,不管是否中奖,都终止脚本,后面的极品装备条目无法执行,所以抽不出来。
第五个疑问,自己手动添加的装备,是不是需要在抽奖脚本里添加额外的判断条件?比如,需要判断玩家等级、玩家元宝数量,或者其他变量,才能执行give命令发放装备?而我没有添加这些判断条件,导致脚本无法执行give命令,进而抽不出这些装备?
但普通装备的抽奖条目也没有添加这些额外的判断条件,却能正常发放,所以这个疑问我不确定,也不知道需要添加什么判断条件,只能请高手帮忙判断。
我也做了一些简单的调试尝试,但都没有解决问题,具体如下:
尝试一,调整抽奖条目的顺序,把自己添加的极品装备条目(天魔神甲、圣战宝甲、霸者之刃)放在普通装备条目前面,重启服务器、刷新脚本后,还是抽不出极品装备,反而普通装备也偶尔抽不出来,说明顺序调整没有解决问题,反而导致脚本紊乱。
尝试二,删除极品装备条目后面的break和CLOSE命令,只保留普通装备条目后面的break和CLOSE,重启服务器后,还是抽不出极品装备,普通装备能正常抽出,说明删除break和CLOSE没有起到作用,问题不在这。
尝试三,删除天魔神甲条目后面的额外提示文字,只保留正常的获奖提示,和其他装备的SENDMSG格式保持一致,重启服务器后,还是抽不出天魔神甲,说明不是额外提示文字导致的问题。
尝试四,把极品装备的give命令改成“give 装备编号 1”,用装备编号代替装备名称,重启服务器后,还是抽不出这些装备,说明不是give命令的格式问题,或者我改的方式不对。
现在我实在没有头绪,普通装备能正常抽出,说明抽奖脚本的核心逻辑是正常的,而自己添加的装备,数据库存在、名称正确、概率设置合理,却死活抽不出来,反复调试都没有效果,只能求助各位脚本高手。
补充一个细节,我查看了服务器的脚本日志,发现每次玩家抽奖,日志里只显示普通装备的抽奖记录(抽到或没抽到),却没有任何自己添加的极品装备的抽奖记录,说明脚本确实没有执行到这些极品装备的抽奖条目,问题肯定出在脚本命令的格式、判断顺序,或者break、CLOSE的使用上。
恳请各位高手,结合我贴出的完整抽奖脚本,帮我逐一排查问题,重点看看#IF判断顺序、break和CLOSE命令的使用、give命令的格式这几个地方,到底是哪里出错了,给出具体的修改方法,不需要多余的理论讲解,只需要精准的排查方向和修改步骤。
比如,是不是需要调整#IF判断的顺序,把极品装备条目放在前面,并且删除每个条目后面的break和CLOSE,只在最后加一个?还是give命令需要修改格式?或者脚本里需要添加其他命令,才能执行到自己添加的装备抽奖条目?
我自己对抽奖脚本的理解有限,尤其是#IF判断的执行逻辑、break和CLOSE命令的使用场景,可能很多简单的错误我自己看不到,而高手们一眼就能发现,再次恳请各位高手出手相助,帮我解决这个困扰已久的问题,只要能让自己添加的装备正常抽出,万分感谢。
最后再总结一下核心排查点,方便高手快速定位:1、普通装备能正常抽出,自己手动添加的装备(天魔神甲、圣战宝甲、霸者之刃)抽不出,排除装备数据库、触发方式、装备名称问题;2、已排除概率问题(霸者之刃1/10概率,100次未抽出);3、脚本完整无遗漏,核心逻辑正常;4、怀疑问题出在#IF判断顺序、break/CLOSE使用、give命令格式上;5、脚本日志无极品装备抽奖记录,说明条目未被执行。

