分享个技能bug修复思路和一件感觉莫名其妙的事
事情起因:有个人在贴吧发帖,说有偿解决一下里鬼太刀第一刀打不中人的bug,我就联系了一下他,帖子他已经删了。bug复现:关于这个bug我觉得也挺有意思,我就想看看,通过沟通,触发条件很新颖:学习短剑精通达到精通之后,使用短剑连续按z可以在上挑后接一段攻击,暂且叫提裆攻击,提裆攻击之后就会出现太刀里鬼第一段打不到人(没有攻击框),攻击框消失了,而且这个消失是持续性的,也就是不小退是还原不了的,不用提裆攻击是正常的。
bug修复:由于我也懒得去看其他nut代码,主要看8号状态,也就是普攻状态(ps:里鬼和上挑也是8号状态),发现提裆攻击是跳到了30号状态,而只要执行30号状态就会导致太刀里鬼第一段攻击框消失,那么思路就来了,直接驳回30号状态,跳新状态复现提裆就好了,解决问题,简单直接。
离谱后续:但是吧,咱干活归干活此处点题:我只是对这个bug感兴趣,主人公提出了50巨款,对此,我只能表示50我帮他修不了,思路免费提供,然后他告诉我他自己修了,到此完了?不,时隔两天之后,我在群里发现有人在小破站发视频,而视频正是我给他发的修复完毕的视频,他干啥发我的视频呢?不理解,只是给各位分享一个修复这个bug的方案。代码晚上贴上。
下面附上相关截图
插眼猛龙天下第一
装技术大佬骗小白钱,就是这么朴实无华 不明觉厉
贴吧进货,别处卖。 这种的没辙。另外想请教一下楼主普攻之类的状态是怎么看的
之前想搞个仅平A减伤,发现神枪的最后一下普攻好像不算平A,改不了
等个代码 你提供思路,他领会并修复完成,他觉得是自己的能力,你觉得自己出了大力,这是无解的 能看的懂大佬思路具体操作搞不定
实现代码如下:
驳回状态函数:addSetStatePacket_Swordman(obj, state, datas)
判断state是否等于30
如果是,发送到新状态:obj.sq_AddSetStatePacket(196, STATE_PRIORITY_USER, false);
记的这个函数有返回值的,正常设置状态返回1,驳回状态返回-1
注册状态:
IRDSQRCharacter.pushState(ENUM_CHARACTERJOB_SWORDMAN, "character/swordman/upperslash/upperslashex.nut", "swordman_upperslashex", 196, -1);
然后直接写状态就行了,不需要额外其他判断,因为短剑精通已经判断完了,我们直接驳回了短剑精通的上挑二段,跳到了我们新状态里。
function onSetState_swordman_upperslashex(obj, state, datas, isResetTimer) {
if (!obj) return;
obj.sq_StopMove();
obj.sq_SetCurrentAnimation(16);
obj.sq_SetCurrentAttackInfo(19);
obj.sq_SetCurrentAttackBonusRate(obj.sq_GetBonusRateWithPassive(12, 196, 2, 1.0));
obj.sq_AddStateLayerAnimation(1, sq_CreateAnimation("", "character/swordman/effect/animation/shortswordmastery/shortweaponupperslashafter.ani"), 0, 0);
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function onEndCurrentAni_swordman_upperslashex(obj) {
if (!obj) return;
if (!obj.sq_IsMyControlObject()) return;
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
} 一直想知道到里鬼怎么覆盖普攻 没多大意思
有些技能的攻击框在equ里面 这个BUG触发方式并不新颖,玩过里鬼战士的都知道,短剑+满精通上挑+里鬼就是他的主要输出方式,估计是他想玩里鬼战士吧
页:
[1]