| 
 | 
 
 楼主 |
发表于 2025-10-20 21:08:27
|
显示全部楼层
 
 
 
实现代码如下: 
驳回状态函数: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); 
} |   
 
 
 
 |