我是做java的,python也是初学自学很多细节不熟悉,在外出差只能手机发:
1、payback方法开头加(手打未区分大小写) if not hasattr(victim, 'killerdict'): victim.killerdict = {}
if not hasattr(attacker, 'killerdict'): attacker.killerdict = {}
不然貌似经常victim.killerdict不存在报错造成该方法(java叫函数为方法习惯了)失效,虽然onplayerpawn有初始化但还是经常为空,原因不明,我本地是这样别人不知道有没有。
2、我的优化思路简单说下,3.0实际改造后效果还不错:onplayerkilled 和 onPlayerScore 仍然注册两个监听器,分别处理 displayindi 和 scoringnumber,然后将marksman、headshot、avenger、payback等这些方法displayindi去掉,统一返回displaydict和是否需要输出的true false,在 onplayerkilled 最后or判断、统一 displayindi;scoringnumber 我暂时把random去掉全部得分5的倍数减少调用不同数字,优化好再加回去,刚想到初步优化思路但还没试先不讲。
3、4.x也许是我cpu问题一团糊,只发现payback的问题,其它还没详细看,周末回去再研究。
一直没发实际东西是因为还是半成品,时间有限,管人搬砖其实比自己搬还累。。。我本地在3.0基础上拿掉了军衔系统,加了同队火力、被击杀武器、复仇记录(和你4.0的类似不过只记录最后杀你的一个),另外在做简单的数据统计(就是死亡后显示本次杀敌数、爆头数、手枪肉搏数等,目前只完成了前两个),优化未全部完成,下一步把补给、医疗积分也统一,再试试scoringnumber新方法。
最后有点担心32位bf2.exe能利用的内存有限,加太多东西内存溢出就不好玩了