Exemplo n.º 1
0
        static void SkillBeginFunc(byte[] data, Action5001 action)
        {
            SkillBegin msg = ProtoBufUtils.Deserialize <SkillBegin>(data);

            Player cha = SceneManager.Instance.FindPlayer(msg.uid);

            if (cha == null)
            {
                return;
            }

            Skill skill = cha.GetSkill();

            if (skill == null)
            {
                return;
            }
            if (skill.SkillID != msg.skillID || skill.mSkillState != SkillState.TrackEnemy)
            {
                cha.SetSkill(null);
                return;
            }
            cha.Position  = msg.position.ToVector3();
            cha.Direction = msg.direction.ToVector3();
            skill.BeginSkill();
        }
Exemplo n.º 2
0
    static void SkillBeginFunc(byte[] data)
    {
        Scene scn = SceneSystem.Instance.mCurrentScene;

        if (scn == null)
        {
            return;
        }
        SkillBegin msg = ProtoBufUtils.Deserialize <SkillBegin>(data);
        Character  cha = scn.GetCharacter(msg.uid);

        if (cha == null)
        {
            return;
        }
        Skill skill = cha.GetSkill();

        if (skill == null)
        {
            return;
        }
        if (skill.SkillID != msg.skillID || skill.mSkillState != SkillState.TrackEnemy)
        {
            return;
        }
        cha.Position  = msg.position.ToVector3();
        cha.Direction = msg.direction.ToVector3();
        cha.StopMove();
        skill.BeginSkill();
    }
Exemplo n.º 3
0
    public void BeginSkill()
    {
        int firstStageID = -1;

        for (int i = 0; i < mSkillInfo.stages.Length; ++i)
        {
            int stageID = mSkillInfo.stages[i];
            excel_skill_stage stageInfo = excel_skill_stage.Find(stageID);
            if (stageInfo == null)
            {
                Debug.LogErrorFormat("Error: 找不到技能段{0},技能ID:{1}", stageID, mSkillInfo.id);
                continue;
            }
            if (SkillStage.IsStageTrait(SkillStageTrait.FirstStage, stageInfo))
            {
                firstStageID = stageInfo.id;
                break;
            }
        }
        if (firstStageID < 0)
        {
            Debug.LogErrorFormat("Error: 找不到初始技能段,技能ID:{0}", mSkillInfo.id);
            return;
        }
        SetStage(firstStageID);
        if (mCurStage == null)
        {
            mSkillState = SkillState.Break;
            return;
        }

        Character skillTarget = mSkillContext.SkillTarget;

        if (mSkillInfo.targetType != (int)SkillTargetType.All && skillTarget != null)
        {
            Vector3 dir = skillTarget.Position - Owner.Position;
            Owner.Direction = dir;
        }

        if (!SkillStage.IsStageTrait(SkillStageTrait.AllowMove, mCurStage.mStageInfo) ||
            SkillStage.IsStageTrait(SkillStageTrait.MoveBreak, mCurStage.mStageInfo))
        {
            //Owner.StopMove(false);
        }

        mSkillState = SkillState.Using;

        // 自己客户端放技能通知服务器开始放技能;
        if (GameController.IsConntrller(Owner))
        {
            SkillBegin req = new SkillBegin();
            req.uid       = Owner.gid;
            req.skillID   = mSkillInfo.id;
            req.position  = Vector3Packat.FromVector3(Owner.Position);
            req.direction = Vector3Packat.FromVector3(Owner.Direction);
            NetWork.SendPacket(CTS.CTS_SkillBegin, req, null);
        }
    }
Exemplo n.º 4
0
    public void BeginSkill()
    {
        int firstStageID = -1;

        for (int i = 0; i < mSkillInfo.stages.Length; ++i)
        {
            int stageID = mSkillInfo.stages[i];
            excel_skill_stage stageInfo = excel_skill_stage.Find(stageID);
            if (stageInfo == null)
            {
                Debug.LogError("Error: 找不到技能段{0},技能ID:{1}", stageID, mSkillInfo.id);
                continue;
            }
            if (SkillStage.IsStageTrait(SkillStageTrait.FirstStage, stageInfo))
            {
                firstStageID = stageInfo.id;
                break;
            }
        }
        if (firstStageID < 0)
        {
            Debug.LogError("Error: 找不到初始技能段,技能ID:{0}", mSkillInfo.id);
            return;
        }
        SetStage(firstStageID);
        if (mCurStage == null)
        {
            mSkillState = SkillState.Break;
            return;
        }

        Character skillTarget = mSkillContext.SkillTarget;

        if (mSkillInfo.targetType != (int)SkillTargetType.All && skillTarget != null)
        {
            Vector3 dir = skillTarget.Position - Owner.Position;
            Owner.Direction = dir;
        }

        if (!SkillStage.IsStageTrait(SkillStageTrait.AllowMove, mCurStage.mStageInfo) ||
            SkillStage.IsStageTrait(SkillStageTrait.MoveBreak, mCurStage.mStageInfo))
        {
            Owner.StopMove(false);
        }

        mSkillState = SkillState.Using;

        SkillBegin msg = new SkillBegin();

        msg.uid       = Owner.gid;
        msg.skillID   = SkillID;
        msg.position  = Vector3Packat.FromVector3(Owner.Position);
        msg.direction = Vector3Packat.FromVector3(Owner.Direction);

        Scene scn = Owner.mScene;

        for (int i = 0; i < scn.GetPlayerCount(); ++i)
        {
            Player player = scn.GetPlayerByIndex(i);
            if (player == Owner)
            {
                continue;
            }
            NetWork.NotifyMessage(player.UserID, STC.STC_SkillBegin, msg);
        }
    }