Ejemplo n.º 1
0
        protected virtual void ServerHandleSkillByID(int skillID, int actionPriority, Vector3 dir, bool isClientHandle, int uniqueID)
        {
            Skill skill = DataReader <Skill> .Get(skillID);

            if (skill == null)
            {
                return;
            }
            this.CurSkillID            = skillID;
            this.ownerActor.IsRotating = false;
            this.ownerActor.ForceSetDirection(dir);
            this.ownerActor.ApplyMovingDirAsForward();
            if (skill.effect != null)
            {
                for (int i = 0; i < skill.effect.get_Count(); i++)
                {
                    this.MarkStaticEffectMessage(skill.effect.get_Item(i), isClientHandle);
                }
            }
            if (!string.IsNullOrEmpty(skill.attAction))
            {
                List <int> actionEffects = XUtility.GetActionEffects(this.ownerActor.FixAnimator.get_runtimeAnimatorController(), skill.attAction);
                for (int j = 0; j < actionEffects.get_Count(); j++)
                {
                    this.MarkStaticEffectMessage(actionEffects.get_Item(j), isClientHandle);
                }
            }
            if (isClientHandle)
            {
                this.serverTrusteeSkillActionStatusName.Add(new KeyValuePair <string, int>(skill.attAction, uniqueID));
                if (string.IsNullOrEmpty(skill.attAction))
                {
                    this.ServerTrusteeSkillActionEnd(string.Empty, this.owner.ID);
                }
            }
            this.ownerActor.ServerCastAction(skill.attAction, actionPriority, (!isClientHandle) ? ActorParent.EffectFrameSetMode.Ignore : ActorParent.EffectFrameSetMode.Server, skill.changeSpeed, (!string.IsNullOrEmpty(skill.attAction)) ? skillID : 0, skill.combo, skill.eventTag);
            if (skill.superArmor == 1)
            {
                int fxID = FXManager.Instance.PlayFX(93, this.ownerActor.FixTransform, this.ownerActor.FixTransform.get_position(), this.ownerActor.FixTransform.get_rotation(), 1f, 1f, 0, false, 0, null, null, 1f, FXClassification.Normal);
                this.ownerActor.FixFXSystem.AddActionFX(fxID);
            }
            if (skill.skillWarningTime != 0)
            {
                WarningGraghHandler.AddWarningGragh(new SkillWarningGraghMessage
                {
                    casterActor = this.ownerActor,
                    targetPoint = null,
                    skillID     = skillID
                });
            }
            this.ServerLogicTriggerEffect(skill);
        }
Ejemplo n.º 2
0
 protected void CastSkill(Skill skillData)
 {
     for (int i = 0; i < skillData.effect.get_Count(); i++)
     {
         this.MarkStaticEffectMessage(skillData.effect.get_Item(i));
     }
     if (!string.IsNullOrEmpty(skillData.attAction))
     {
         List <int> actionEffects = XUtility.GetActionEffects(this.GetAnimator().get_runtimeAnimatorController(), skillData.attAction);
         for (int j = 0; j < actionEffects.get_Count(); j++)
         {
             this.MarkStaticEffectMessage(actionEffects.get_Item(j));
         }
     }
     for (int k = 0; k < skillData.effect.get_Count(); k++)
     {
         this.ClientTriggerEffect(skillData.effect.get_Item(k));
     }
 }
Ejemplo n.º 3
0
        protected bool CheckSkillTrustee(Skill skillData)
        {
            if (skillData.effect != null)
            {
                for (int i = 0; i < skillData.effect.get_Count(); i++)
                {
                    Effect effect = DataReader <Effect> .Get(skillData.effect.get_Item(i));

                    if (effect != null)
                    {
                        if (effect.type2 == 3 || effect.type2 == 4)
                        {
                            return(true);
                        }
                        if (effect.bullet != 0)
                        {
                            return(true);
                        }
                        if (effect.tremble != 0 && effect.fx != 0)
                        {
                            return(true);
                        }
                    }
                }
            }
            if (!string.IsNullOrEmpty(skillData.attAction))
            {
                List <int> actionEffects = XUtility.GetActionEffects(this.ownerActor.FixAnimator.get_runtimeAnimatorController(), skillData.attAction);
                for (int j = 0; j < actionEffects.get_Count(); j++)
                {
                    Effect effect2 = DataReader <Effect> .Get(actionEffects.get_Item(j));

                    if (effect2 != null)
                    {
                        if (effect2.type2 == 3 || effect2.type2 == 4)
                        {
                            return(true);
                        }
                        if (effect2.bullet != 0)
                        {
                            return(true);
                        }
                        if (effect2.tremble != 0 && effect2.fx != 0)
                        {
                            return(true);
                        }
                    }
                }
                if (this.ownerActor)
                {
                    if (!this.ownerActor.FixAnimator.get_runtimeAnimatorController())
                    {
                        Debug.LogError(string.Format("runtimeAnimatorController为空:{0}", this.owner.FixModelID));
                        return(false);
                    }
                    AnimationClip[] animationClips = this.ownerActor.FixAnimator.get_runtimeAnimatorController().get_animationClips();
                    for (int k = 0; k < animationClips.Length; k++)
                    {
                        if (!(animationClips[k].get_name() != skillData.attAction))
                        {
                            for (int l = 0; l < animationClips[k].get_events().Length; l++)
                            {
                                if (animationClips[k].get_events()[l].get_functionName() == "MoveOn")
                                {
                                    return(true);
                                }
                            }
                            break;
                        }
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 4
0
        public virtual void ClientHandleSkillByID(int skillID)
        {
            Skill skill = DataReader <Skill> .Get(skillID);

            if (skill == null)
            {
                return;
            }
            this.CurSkillID = skillID;
            this.MarkCD(skill);
            this.ownerActor.IsRotating = false;
            if (skill.autoAim == 1 && this.owner.AITarget != null && this.owner.AITarget.Actor)
            {
                this.ownerActor.ForceSetDirection(new Vector3(this.owner.AITarget.Actor.FixTransform.get_position().x - this.ownerActor.FixTransform.get_position().x, 0f, this.owner.AITarget.Actor.FixTransform.get_position().z - this.ownerActor.FixTransform.get_position().z));
                this.ownerActor.ApplyMovingDirAsForward();
            }
            for (int i = 0; i < skill.effect.get_Count(); i++)
            {
                this.MarkStaticEffectMessage(skill.effect.get_Item(i), true);
            }
            if (!string.IsNullOrEmpty(skill.attAction))
            {
                List <int> actionEffects = XUtility.GetActionEffects(this.ownerActor.FixAnimator.get_runtimeAnimatorController(), skill.attAction);
                for (int j = 0; j < actionEffects.get_Count(); j++)
                {
                    this.MarkStaticEffectMessage(actionEffects.get_Item(j), true);
                }
            }
            if (skill.aiSkillMove == 1 && this.owner.AITarget != null)
            {
                SkillWarningMessage skillWarningMessage = new SkillWarningMessage();
                skillWarningMessage.caster        = this.owner;
                skillWarningMessage.target        = this.owner.AITarget;
                skillWarningMessage.skillID       = skillID;
                skillWarningMessage.effectMessage = new Dictionary <int, XPoint>();
                if (skill.effect != null)
                {
                    for (int k = 0; k < skill.effect.get_Count(); k++)
                    {
                        int num = skill.effect.get_Item(k);
                        if (this.effectMessageCache.ContainsKey(num) && !skillWarningMessage.effectMessage.ContainsKey(num))
                        {
                            skillWarningMessage.effectMessage.Add(num, this.effectMessageCache.get_Item(num).basePoint);
                        }
                    }
                }
                List <int> actionEffects2 = XUtility.GetActionEffects(this.ownerActor.FixAnimator.get_runtimeAnimatorController(), skill.attAction);
                for (int l = 0; l < actionEffects2.get_Count(); l++)
                {
                    int num2 = actionEffects2.get_Item(l);
                    if (this.effectMessageCache.ContainsKey(num2) && !skillWarningMessage.effectMessage.ContainsKey(num2))
                    {
                        skillWarningMessage.effectMessage.Add(num2, this.effectMessageCache.get_Item(num2).basePoint);
                    }
                }
                EventDispatcher.BroadcastAsync <SkillWarningMessage>(WarningManagerEvent.AddSkillWarningMessage, skillWarningMessage);
            }
            bool flag = this.CheckSkillTrustee(skill);

            if (flag)
            {
                this.owner.IsSkillInTrustee = true;
                this.serverTrusteeSkillActionStatusName.Add(new KeyValuePair <string, int>(skill.attAction, 0));
                if (string.IsNullOrEmpty(skill.attAction))
                {
                    this.ServerTrusteeSkillActionEnd(string.Empty, this.owner.ID);
                }
            }
            if (skill.actionPriority != 0)
            {
                this.ownerActor.ActionPriorityTable[skill.attAction] = skill.actionPriority;
            }
            this.ownerActor.CastAction(skill.attAction, true, skill.changeSpeed, (!string.IsNullOrEmpty(skill.attAction)) ? skillID : 0, skill.combo, skill.eventTag);
            if (skill.superArmor == 1)
            {
                int fxID = FXManager.Instance.PlayFX(93, this.ownerActor.FixTransform, this.ownerActor.FixTransform.get_position(), this.ownerActor.FixTransform.get_rotation(), 1f, 1f, 0, false, 0, null, null, 1f, FXClassification.Normal);
                this.ownerActor.FixFXSystem.AddActionFX(fxID);
            }
            if (skill.skillWarningTime != 0 && this.owner.AITarget != null)
            {
                WarningGraghHandler.AddWarningGragh(new SkillWarningGraghMessage
                {
                    casterActor = this.ownerActor,
                    targetPoint = (!this.owner.AITarget.Actor) ? null : new XPoint
                    {
                        position = this.owner.AITarget.Actor.FixTransform.get_position(),
                        rotation = this.owner.AITarget.Actor.FixTransform.get_rotation()
                    },
                    skillID = skillID
                });
            }
            GlobalBattleNetwork.Instance.SendUseSkill(this.owner.ID, skillID, (this.owner.AITarget != null) ? this.owner.AITarget.ID : 0L, flag, this.ownerActor.FixTransform.get_position(), this.ownerActor.FixTransform.get_forward());
            this.ClientLogicTriggerEffect(skill);
        }