Example #1
0
        // 进入状态
        public override void Enter(object param)
        {
            totalTime = 0;
            skillPart = m_SkillPart;
            if (skillPart.GetSkillPartType() == SkillPartType.SKILL_PLAYERPART)
            {
                PlayerSkillPart playerSkill = skillPart as PlayerSkillPart;
                if (playerSkill.AttackAnimState != null)
                {
                    //  playerSkill.PlaySkillAnim("Skill005", false);
                    //收招
                    string aniName = playerSkill.AttackAnimState.name + "_over";
                    if (playerSkill.Master.GetAnimationState(aniName) != null)
                    {
                        playerSkill.PlaySkillAnim(aniName, false);
                    }
                }
                else
                {
                    //Engine.Utility.Log.Trace("SkillOverState.Enter {0}技能收招动作为空!", playerSkill.GetMaster().GetName());
                }
                playerSkill.Master.SendMessage(EntityMessage.EntityCommond_IgnoreMoveAction, false);
                if (playerSkill.IsMainPlayer())
                {
                    stNextSkill       st = new stNextSkill();
                    IControllerSystem cs = playerSkill.GetCtrollerSys();
                    if (cs == null)
                    {
                        Log.Error("ExecuteCmd: ControllerSystem is null");
                        return;
                    }

                    if (cs.GetCombatRobot().Status == CombatRobotStatus.RUNNING)
                    {
                        if (playerSkill.IsCombo(playerSkill.CurSkillID))
                        {//挂机连击
                            st.curSkillID = playerSkill.CurSkillID;
                            SkillDoubleHitDataBase db = GameTableManager.Instance.GetTableItem <SkillDoubleHitDataBase>((uint)playerSkill.CurSkillID);
                            if (db != null)
                            {
                                st.nextSkillID = db.nextskillid;
                                if (db.nextskillid == db.beginskillid)
                                {//挂机第三招要收招
                                    st.nextSkillID = 0;
                                }
                                EventEngine.Instance().DispatchEvent((int)GameEventID.SKILLSYSTEM_STIFFTIMEOVER, st);
                            }
                        }
                    }
                    else
                    {//非挂机时  插入其他技能
                        st.nextSkillID = 0;
                        EventEngine.Instance().DispatchEvent((int)GameEventID.SKILLSYSTEM_STIFFTIMEOVER, st);
                    }
                }
            }
        }
Example #2
0
        // 进入状态
        public override void Enter(object param)
        {
            if (m_SkillPart.GetSkillPartType() == SkillPartType.SKILL_PLAYERPART)
            {
                PlayerSkillPart playerSkill = m_SkillPart as PlayerSkillPart;

                if (SkillSystem.GetClientGlobal().IsMainPlayer(playerSkill.GetMaster()))
                {
                    // Log.LogGroup("ZDY", "mainpalyer enter skilloverstate");

                    if (playerSkill != null)
                    {
                        playerSkill.CurSkillID = 0;
                    }
                    //Log.LogGroup("ZCX", "Enter ..." + this.GetType().Name + playerSkill.CurSkillID);
                    stForbiddenJoystick info = new stForbiddenJoystick();
                    info.playerID  = playerSkill.Master.GetUID();
                    info.bFobidden = false;
                    EventEngine.Instance().DispatchEvent((int)GameEventID.SKILL_FORBIDDENJOYSTICK, info);
                }
                IEntity casetr = playerSkill.GetMaster();
                if (casetr == null)
                {
                    return;
                }
                playerSkill.Master.SendMessage(EntityMessage.EntityCommond_IgnoreMoveAction, false);
                playerSkill.Master.SendMessage(EntityMessage.EntityCommand_ChangeMoveSpeedFact, (object)1f);
                CreatureState playerState = playerSkill.GetMaster().GetCurState();
                if (playerState != CreatureState.Dead)
                {
                    // 不能立即切换到Normal状态
                    PlayAni anim_param = new PlayAni();
                    bool    isMove     = (bool)m_SkillPart.GetMaster().SendMessage(EntityMessage.EntityCommand_IsMove, null);
                    if (isMove)
                    {
                        anim_param.strAcionName = EntityAction.Run;
                    }
                    else
                    {
                        if (casetr.GetEntityType() == EntityType.EntityType_Player)
                        {
                            anim_param.strAcionName = EntityAction.Stand_Combat;
                        }
                        else
                        {
                            anim_param.strAcionName = EntityAction.Stand;
                        }
                    }

                    anim_param.fSpeed      = 1;
                    anim_param.nStartFrame = 0;
                    anim_param.nLoop       = -1;
                    anim_param.fBlendTime  = 0.2f;
                    m_SkillPart.GetMaster().SendMessage(EntityMessage.EntityCommand_PlayAni, anim_param);


                    //如果在挂机 不能立即切换到Normal状态 主角才派发事件
                    if (IsMainPlayer())
                    {
                        IControllerSystem cs = playerSkill.GetCtrollerSys();
                        if (cs == null)
                        {
                            Log.Error("ExecuteCmd: ControllerSystem is null");
                            return;
                        }

                        Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.SKILLNONESTATE_ENTER,
                                                                            new stSkillStateEnter()
                        {
                            state = this.m_nStateID, uid = playerSkill.GetMaster().GetUID()
                        });
                    }
                }
            }
        }