public void InitElementSkill(int skillid)
    {
        Tab_CabalFellowElementSkill tabSkill = TableManager.GetCabalFellowElementSkillByID(skillid, 0);

        if (tabSkill == null)
        {
            return;
        }

        Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(skillid, 0);

        if (tabSkillEx == null)
        {
            return;
        }

        Tab_SkillBase tabBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);

        if (tabBase == null)
        {
            return;
        }

        m_TallentSkillId = GlobeVar.INVALID_ID;
        m_ElementSkillId = skillid;

        m_SkillIcon.spriteName = tabBase.Icon;
        //取消品质
        //m_QualityPic.spriteName = FellowTool.GetChatFellowElementSkillQualityPic(skillid);
        m_TallentBgPic.gameObject.SetActive(false);
        //  m_LevelLabel.text = FellowTool.GetFellowElementLevelText(skillid);
    }
Exemplo n.º 2
0
    public static AutoSelSkillItem CreateItem(GameObject grid, GameObject resItem, AutoFightLogic parent, int OwnIndex, int nSkillId, bool IsToggle)
    {
        Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);

        if (_skillEx != null)
        {
            Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
            if (_skillBase != null && _skillBase.PriorityAutoFight != -1)
            {
                GameObject newItem = Utils.BindObjToParent(resItem, grid, nSkillId.ToString());
                if (null != newItem)
                {
                    AutoSelSkillItem curItemComponent = newItem.GetComponent <AutoSelSkillItem>();
                    if (null != curItemComponent)
                    {
//                        curItemComponent.m_nSkillID = nSkillId;
                        curItemComponent.m_AutoSkillSprite.spriteName = _skillBase.Icon;
                        curItemComponent.m_AutoSkillToggle.value      = IsToggle;
                        curItemComponent.m_nOwnIndex = OwnIndex;
                        return(curItemComponent);
                    }
                }
            }
        }
        return(null);
    }
Exemplo n.º 3
0
    public void UpdateSkillBarInfo(int nSkillIndex)
    {
        m_nSkillIndex = nSkillIndex;
        Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

        if (_mainPlayer == null)
        {
            return;
        }
        if (m_nSkillIndex > 0 && m_nSkillIndex < _mainPlayer.OwnSkillInfo.Length)
        {
            int         nSkillId = _mainPlayer.OwnSkillInfo[m_nSkillIndex].SkillId;
            Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);
            if (_skillEx != null)
            {
                Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                if (_skillBase != null)
                {
                    m_IconSprite.spriteName = _skillBase.Icon;
                    m_IconSprite.MakePixelPerfect();
                    m_IconSprite.gameObject.SetActive(true);
                }
            }
        }
    }
Exemplo n.º 4
0
        private int SeleSkillByPriority()
        {
            int nSelectSkillId = GetChangeStateNormalSkillID();
            int nMaxPriority   = -1;

            for (int ii = 0; ii < m_player.OwnSkillInfo.Length; ++ii)
            {
                int         nCurrSkillId = m_player.OwnSkillInfo[ii].SkillId;
                Tab_SkillEx tabSkillEx   = TableManager.GetSkillExByID(nCurrSkillId, 0);
                if (null != tabSkillEx)
                {
                    Tab_SkillBase tabSkillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                    if (null != tabSkillBase)
                    {
                        if (1 == m_player.IsAutoSelSkillID(ii) || (-1 == m_player.IsAutoSelSkillID(ii) && 0 < tabSkillBase.PriorityAutoFight))
                        {
                            if (m_player.CheckBeforUseSkill(nCurrSkillId, false) &&
                                CheckXpSkill(tabSkillBase)
                                )
                            {
                                int nCurrPriority = tabSkillBase.PriorityAutoFight;
                                if (nCurrPriority > nMaxPriority)
                                {
                                    nSelectSkillId = nCurrSkillId;
                                    nMaxPriority   = nCurrPriority;
                                }
                            }
                        }
                    }
                }
            }
            return(nSelectSkillId);
        }
Exemplo n.º 5
0
        //获取当前变身状态下的普攻连续技的首段技能ID
        private int GetChangeStateNormalSkillID()
        {
            int nCurrentChangeState = m_player.GetCurrentChangeState();

            for (int ii = 0; ii < m_player.OwnSkillInfo.Length; ++ii)
            {
                int nCurrSkillId = m_player.OwnSkillInfo[ii].SkillId;
                if (IsNormalSkill(nCurrSkillId))
                {
                    Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(nCurrSkillId, 0);
                    if (null != tabSkillEx)
                    {
                        Tab_SkillBase tabSkillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                        if (null != tabSkillBase)
                        {
                            if (tabSkillBase.GetChangeModebyIndex(nCurrentChangeState) >= 0)
                            {
                                return(nCurrSkillId);
                            }
                        }
                    }
                }
            }
            return(m_player.OwnSkillInfo[0].SkillId);
        }
Exemplo n.º 6
0
    int _getSkillIndexIdByActivieyId(int id)
    {
        Tab_SkillEx skillEx = TableManager.GetSkillExByID(id, 0);

        if (skillEx == null)
        {
            return(-1);
        }

        Tab_SkillBase skillBase = TableManager.GetSkillBaseByID(skillEx.BaseId, 0);

        if (skillBase == null)
        {
            return(-1);
        }

        Obj_MainPlayer rUser = Singleton <ObjManager> .Instance.MainPlayer;

        if (rUser == null)
        {
            return(-1);
        }

        for (int skillIndex = 0; skillIndex < rUser.OwnSkillInfo.Length; skillIndex++)
        {
            if (rUser.OwnSkillInfo[skillIndex].SkillId == skillEx.SkillExID)
            {
                return(skillIndex);
            }
        }

        return(-1);
    }
    /// <summary>
    /// 打开选择学习技能书界面
    /// </summary>
    /// <param name="go"></param>
    void OpenChooseSkillBookDialog(GameObject go)
    {
        Utils.CleanGrid(m_SkillChooseGrid);

        List <Tab_CabalFellowElementSkillBook> FellowSkillBookList = GameManager.gameManager.PlayerDataPool.BackPack.GetSkillLearnBooksByElementType(m_Fellow.ElementAttr);

        if (FellowSkillBookList.Count <= 0)
        {
            GUIData.AddNotifyData("#{11500}");
            return;
        }
        //选择技能书界面
        m_SkillChooseWindow.SetActive(true);

        int index = 0;

        //foreach (Tab_CabalFellowElementSkillBook book in GameManager.gameManager.PlayerDataPool.BackPack.GetSkillLearnBooksByElementType(m_Fellow.ElementAttr))
        foreach (Tab_CabalFellowElementSkillBook book in FellowSkillBookList)
        {
            if (m_Fellow.IsHaveSkillId(book.SkillId))
            {
                continue;
            }
            Tab_CabalFellowElementSkill tabSkill = TableManager.GetCabalFellowElementSkillByID(book.SkillId, 0);
            if (tabSkill == null)
            {
                continue;
            }

            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(book.SkillId, 0);
            if (tabSkillEx == null)
            {
                continue;
            }

            Tab_SkillBase tabBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
            if (tabBase == null)
            {
                continue;
            }
            string     itemName  = index < 10 ? "0" + index.ToString() : index.ToString();
            GameObject SkillItem = Utils.BindObjToParent(m_SkillChooseItem, m_SkillChooseGrid, itemName);
            if (SkillItem != null && SkillItem.GetComponent <PartnerSkillChooseItemLogic>() != null)
            {
                SkillItem.GetComponent <PartnerSkillChooseItemLogic>().Init(book);
            }
            index += 1;
        }

        if (m_SkillChooseGrid.GetComponent <UIGrid>() != null)
        {
            m_SkillChooseGrid.GetComponent <UIGrid>().Reposition();
        }

        if (PartnerFrameLogic.Instance().NewPlayerGuideFlag_Step == 4)
        {
            PartnerFrameLogic.Instance().NewPlayerGuide(5);
        }
    }
Exemplo n.º 8
0
        //显示技能名字
        public static void ShowSkillName(int skillId, int senderId, string skillName = "")
        {
            Obj_Character skillSender = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(senderId);

            if (skillSender == null)
            {
                LogModule.DebugLog("MainPlayer is Null:" + senderId);
                return;
            }
            Tab_SkillEx skillExInfo = TableManager.GetSkillExByID(skillId, 0);

            if (skillExInfo == null)
            {
                LogModule.DebugLog("SkillExinfo is Null: " + skillId);
                return;
            }
            int           BaseSkillId = skillExInfo.BaseId;
            Tab_SkillBase skillBase   = TableManager.GetSkillBaseByID(BaseSkillId, 0);

            if (skillBase == null)
            {
                LogModule.DebugLog("SkillBaseInfo is Null" + BaseSkillId);
                return;
            }

            //显示技能名字
            if (skillName == "")
            {
                if ((skillBase.SkillClass & (int)SKILLCLASS.PASSIVITY) != 0)
                {
                    skillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, skillBase.Name, false);
                }
                else
                {
                    if (skillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER ||
                        skillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
                    {
                        skillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, skillBase.Name);
                    }
                    else if (skillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
                    {
                        skillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME_NPC, skillBase.Name, false);
                    }
                    else
                    {
                        skillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, skillBase.Name, false);
                    }
                }
            }
            else
            {
                skillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, skillName, false);
            }
        }
Exemplo n.º 9
0
    public void UpdateButtonInfo(int nSkillIndex)
    {
        m_nSkillIndex = nSkillIndex;
        Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

        if (_mainPlayer == null)
        {
            return;
        }
        if (m_nSkillIndex >= 0 && m_nSkillIndex < _mainPlayer.OwnSkillInfo.Length)
        {
            int         nSkillId = _mainPlayer.OwnSkillInfo[m_nSkillIndex].SkillId;
            Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);
            if (_skillEx != null)
            {
                Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                if (_skillBase != null)
                {
                    //师门技能显示自定义名字
                    if ((_skillBase.SkillClass & (int)SKILLCLASS.MASTERSKILL) != 0)
                    {
                        m_SkillNameLabel.text = GameManager.gameManager.PlayerDataPool.GetMasterSkillName(nSkillId);
                        if (m_SkillNameLabel.text == "")
                        {
                            m_SkillNameLabel.text = _skillBase.Name;
                        }
                    }
                    else
                    {
                        m_SkillNameLabel.text = _skillBase.Name;
                    }
                    m_nSkillID     = nSkillId;
                    m_nSkillBaseId = _skillEx.BaseId;
                    m_SkillIconSprite.spriteName = _skillBase.Icon;
                    m_SkillIconSprite.MakePixelPerfect();
                    m_SkillLevLabel.text = StrDictionary.GetClientDictionaryString("#{2162}", _skillEx.Level);
                    //是否要显示升级提醒的角标
                    if (SkillRootLogic.IsCanLevelUpSkill(nSkillId) ||
                        SkillRootLogic.IsCanLevelUpMasterSkill(nSkillId))
                    {
                        m_LevelTipsIcon.SetActive(true);
                    }
                    else
                    {
                        m_LevelTipsIcon.SetActive(false);
                    }
                }
            }
        }
    }
Exemplo n.º 10
0
        //判定技能是否为普攻
        private bool IsNormalSkill(int nSkillId)
        {
            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(nSkillId, 0);

            if (null != tabSkillEx)
            {
                Tab_SkillBase tabSkillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                if (null != tabSkillBase)
                {
                    return(0 != (tabSkillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT));
                }
            }
            return(false);
        }
Exemplo n.º 11
0
    void OnLoadPVPSkillItem(GameObject resItem, object param)
    {
        if (null == resItem)
        {
            LogModule.ErrorLog("load pvp skill item fail");
            return;
        }

        Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

        Utils.CleanGrid(m_PVPSkillListGrid);
        m_ItemInfo.Clear();
        if (_mainPlayer)
        {
            m_ObjCurSkillInfo.SetActive(false);
            //普攻和XP不可升级
            int nIndex = 0;
            for (int i = 0; i < _mainPlayer.OwnSkillInfo.Length; i++)
            {
                int         nSkillId = _mainPlayer.OwnSkillInfo[i].SkillId;
                Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);
                if (_skillEx != null)
                {
                    Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                    if (_skillBase != null &&
                        (_skillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT) == 0 &&
                        (_skillBase.SkillClass & (int)SKILLCLASS.XP) == 0)
                    {
                        PVPSkillListItem _skillItem = PVPSkillListItem.CreateItem(m_PVPSkillListGrid, resItem, nIndex.ToString(), this, _skillBase.Name, "LV:" + _skillEx.Level.ToString(), nSkillId);
                        if (_skillItem != null)
                        {
                            m_ItemInfo.Add(nIndex.ToString(), _skillItem);
                            nIndex++;
                        }
                    }
                }
            }
            m_PVPSkillListGrid.GetComponent <UIGrid>().Reposition();
            m_PVPSkillListGrid.GetComponent <UITopGrid>().Recenter(false);
            if (m_curItemIndexName == "" && m_ItemInfo.ContainsKey("0"))
            {
                ShowCurSkill(m_ItemInfo["0"]);
            }
            else if (m_ItemInfo.ContainsKey(m_curItemIndexName))
            {
                ShowCurSkill(m_ItemInfo[m_curItemIndexName]);
            }
        }
    }
Exemplo n.º 12
0
 private bool CheckXpSkill(Tab_SkillBase tabSkillBase)
 {
     //玩家已经点击过了变身按钮 tween正在进行
     if ((tabSkillBase.SkillClass & (int)SKILLCLASS.XP) != 0)
     {
         if (SkillBarLogic.Instance() != null)
         {
             if (SkillBarLogic.Instance().m_isXpBtnOpen)
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Exemplo n.º 13
0
    void InitElementSkill_Info(int skillid)
    {
        Tab_CabalFellowElementSkill tabSkill = TableManager.GetCabalFellowElementSkillByID(skillid, 0);

        if (tabSkill == null)
        {
            return;
        }

        Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(skillid, 0);

        if (tabSkillEx == null)
        {
            return;
        }

        Tab_SkillBase tabBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);

        if (tabBase == null)
        {
            return;
        }

        m_TallentSkillId = GlobeVar.INVALID_ID;
        m_ElementSkillId = skillid;

        Tab_CabalFellowElementSkill tabNextSkill = TableManager.GetCabalFellowElementSkillByID(tabSkill.NextSkillId, 0);

        if (tabNextSkill == null)
        {
            lblSkillLv.text = "MAX";
        }
        sprSkillIcon.spriteName = tabBase.Icon;
        sprSkillIcon.gameObject.SetActive(true);

        lblSkillLv.text = FellowTool.GetFellowElementLevelText(skillid);
        lblSkillLv.transform.parent.gameObject.SetActive(true);
        lblSkillName.text = tabBase.Name;
        lblSkillDesc.text = tabBase.SkillIntro;
        objLock.SetActive(false);
        enhanceSkill.SetActive(true);
        UIEventListener.Get(enhanceSkill).onClick = ShowEnhanceDialog;
        if (PartnerFrameLogic.Instance() != null)
        {
            PartnerFrameLogic.Instance().UpdateDevelopRemindPoint();
        }
    }
Exemplo n.º 14
0
        //获取连续技的后续技能ID
        private int GetNextContinueSkillId()
        {
            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(CurUseSkillId, 0);

            if (null != tabSkillEx)
            {
                Tab_SkillBase tabSkillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                if (null != tabSkillBase)
                {
                    if (-1 != tabSkillEx.NextContinueSkillId && tabSkillEx.NextContinueSkillId != GetRepeatSkillFirstID(CurUseSkillId))
                    {
                        return(tabSkillEx.NextContinueSkillId);
                    }
                }
            }
            return(-1);
        }
Exemplo n.º 15
0
    public void UpdateNoStudyButtonInfo(int nSkillId)
    {
        Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);

        if (_skillEx != null)
        {
            Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
            if (_skillBase != null)
            {
                //师门技能显示自定义名字
                if ((_skillBase.SkillClass & (int)SKILLCLASS.MASTERSKILL) != 0)
                {
                    m_SkillNameLabel.text = String.Format("[FF0000]{0}", GameManager.gameManager.PlayerDataPool.GetMasterSkillName(nSkillId));
                    if (m_SkillNameLabel.text == "")
                    {
                        m_SkillNameLabel.text = String.Format("[FF0000]{0}", _skillBase.Name);
                    }
                    m_SkillLevLabel.text = "";
                }
                else
                {
                    m_SkillNameLabel.text = String.Format("[FF0000]{0}", _skillBase.Name);
                    //显示可以激活的等级
                    for (int i = 1; i <= TableManager.GetSkillActive().Count; i++)
                    {
                        Tab_SkillActive _skillActiveInfo = TableManager.GetSkillActiveByID(i, 0);
                        if (_skillActiveInfo != null)
                        {
                            if (_skillActiveInfo.SkillId == nSkillId)
                            {
                                m_SkillLevLabel.text = String.Format("[FF0000]{0}", StrDictionary.GetClientDictionaryString("#{2770}", _skillActiveInfo.Level));
                                break;
                            }
                        }
                    }
                }
                m_SkillIconSprite.spriteName = _skillBase.Icon;
                m_SkillIconSprite.MakePixelPerfect();
                m_nSkillIndex  = -1;
                m_nSkillID     = nSkillId;
                m_nSkillBaseId = _skillEx.BaseId;
                m_LevelTipsIcon.SetActive(false);
            }
        }
    }
Exemplo n.º 16
0
        //获取连续技的首段技能ID
        private int GetRepeatSkillFirstID(int nSkillId)
        {
            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(nSkillId, 0);

            if (null != tabSkillEx)
            {
                Tab_SkillBase tabSkillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                if (null != tabSkillBase)
                {
                    if (0 < tabSkillEx.NextContinueSkillId)
                    {
                        if (tabSkillBase.FirstIndex < m_player.OwnSkillInfo.Length)
                        {
                            return(m_player.OwnSkillInfo[tabSkillBase.FirstIndex].SkillId);
                        }
                    }
                }
            }
            return(-1);
        }
Exemplo n.º 17
0
    private string _getSkillBaseIconName(int SkillActiveId)
    {
        //Tab_SkillActive skillActTab = TableManager.GetSkillActiveByID(SkillActiveId,0);
        //if(skillActTab == null )
        //	return "";

        Tab_SkillEx skillEx = TableManager.GetSkillExByID(SkillActiveId, 0);

        if (skillEx == null)
        {
            return("");
        }

        Tab_SkillBase skillBase = TableManager.GetSkillBaseByID(skillEx.BaseId, 0);  // skillEx.BaseId

        if (skillBase == null)
        {
            return("");
        }

        return(skillBase.Icon);
    }
Exemplo n.º 18
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_RET_USE_SKILL packet = (GC_RET_USE_SKILL)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            int nSkillId  = packet.HasFixedSkillId ? packet.FixedSkillId : packet.SkillId;
            int nSenderId = packet.SenderId;
            int nTargetID = packet.TargetId;

            Obj_Character Sender = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(nSenderId);

            if (Sender == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            if (Sender.SkillCore == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            int nFailType = (int)SKILLUSEFAILTYPE.INVALID;

            if (packet.HasSkillfailType)
            {
                nFailType = packet.SkillfailType;
            }
            string szSkillName = "";

            if (packet.HasSkillname)
            {
                szSkillName = packet.Skillname;
            }
            if (nFailType == (int)SKILLUSEFAILTYPE.DISTANCE)
            {
                if (Sender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
                {
                    //服务器认定 距离不够 再往前走点
                    Obj_Character targetCharacter = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(nTargetID);

                    if (targetCharacter)
                    {
                        Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);
                        if (_skillEx != null)
                        {
                            if (Sender.SkillCore.IsUsingSkill)
                            {
                                Sender.SkillCore.BreakCurSkill();
                            }
                            Singleton <ObjManager> .GetInstance().MainPlayer.CurUseSkillId = nSkillId;

                            Singleton <ObjManager> .GetInstance().MainPlayer.MoveTo(targetCharacter.Position, targetCharacter.gameObject, _skillEx.Radius - 2.0f);
                        }
                    }
                }
            }
            else
            {
                //结婚相关特殊表现
                if (nSkillId == GlobeVar.MARRY_SKILL_2)
                {
                    Sender.SkillCore.BreakCurSkill();
                    Sender.FaceTo(new UnityEngine.Vector3(13.79419f, 0.9015087f, 30.36249f));
                }
                //结婚相关特殊表现
                if (nSkillId == GlobeVar.MARRY_SKILL_1)
                {
                    Sender.SkillCore.BreakCurSkill();
                    Sender.FaceTo(new UnityEngine.Vector3(13.79419f, 0.9015087f, 4.068859f));
                }
                if (szSkillName != "")
                {
                    Sender.SkillCore.UseSkill(nSkillId, nSenderId, nTargetID, szSkillName);
                }
                else
                {
                    Sender.SkillCore.UseSkill(nSkillId, nSenderId, nTargetID);
                }

                Tab_SkillEx _skillEx = TableManager.GetSkillExByID(nSkillId, 0);
            }

            if (Sender is Obj_MainPlayer)
            {
                //if the main player in the state of changing mode

                int nImpactCount = GameManager.gameManager.PlayerDataPool.ClientImpactInfo.Count;

                Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .Instance.MainPlayer;
                Tab_SkillEx    _skillEx    = TableManager.GetSkillExByID(nSkillId, 0);

                Tab_SkillBase _skillBase = null;

                int nSkillIndex  = -1;
                int nChangeState = -1;
                if (null != _mainPlayer)
                {
                    for (int i = 0; i < _mainPlayer.OwnSkillInfo.Length; i++)
                    {
                        if (_mainPlayer.OwnSkillInfo[i].SkillId == nSkillId)
                        {
                            nSkillIndex = i;
                            break;
                        }
                    }

                    nChangeState = _mainPlayer.GetCurrentChangeState();

                    // added by mawenbin
                    // 缓存玩家使用的技能,用于挂机连续技的判定
                    AI_PlayerCombat aiPlayerCombat = _mainPlayer.GetComponent <AI_PlayerCombat>();
                    if (null != aiPlayerCombat && Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER == Sender.ObjType)
                    {
                        aiPlayerCombat.CurUseSkillId = nSkillId;
                    }
                }

                if (null != _skillEx)
                {
                    _skillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                }

                if (null != _skillBase)
                {
                    if (null != SkillBarLogic.Instance())
                    {
                        //if the skill is xp skill and can put into skillbar
                        if ((_skillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT) == 0 &&
                            (_skillBase.SkillClass & (int)SKILLCLASS.XP) == 0 &&
                            (_skillBase.GetChangeModebyIndex(_mainPlayer.CurChangeState) > 0) &&
                            (_skillBase.SkillClass & (int)SKILLCLASS.PASSIVITY) == 0)
                        {
                            for (int i = 0; i < SkillBarLogic.Instance().MySkillBarInfo.Length; i++)
                            {
                                if (nSkillId == SkillBarLogic.Instance().MySkillBarInfo[i].CurSkillId)
                                {
                                    SkillBarLogic.Instance().MySkillBarInfo[i].nPreSkillId           = nSkillId;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].fCurrentStartTime     = Time.realtimeSinceStartup;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].fCurDisabledStartTime = Time.realtimeSinceStartup;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].nCurrentCDTime        = _skillEx.NextSkillEffectTime / 1000.0f;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].fRemainCDTime         = _skillEx.NextSkillEffectTime / 1000.0f;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].fDisabledRemTime      = _skillEx.NextSkillDisabledTime / 1000.0f;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].fCurDisabedTime       = _skillEx.NextSkillDisabledTime / 1000.0f;
                                    SkillBarLogic.Instance().MySkillBarInfo[i].SkillCount++;
                                    if (false == GameManager.gameManager.PlayerDataPool.CommonData.GetCommondFlag((int)USER_COMMONFLAG.CF_COMBO_FIRSTUSED))
                                    {
                                        if (nSkillId == GlobeVar.SHUANGJIANSHI_SKILL1_COMBO1 || nSkillId == GlobeVar.SHUANGJIANSHI_SKILL1_COMBO2)
                                        {
                                            SkillBarLogic.Instance().MySkillBarInfo[i].nCurrentCDTime = 10;
                                            SkillBarLogic.Instance().MySkillBarInfo[i].fRemainCDTime  = 10;
                                        }
                                    }
                                    SkillBarLogic.Instance().SetSkillBarInfoForNext(i, _skillEx.NextContinueSkillId);

                                    //第一个连续技能来了,要有提示
                                    if (nSkillIndex != -1 && nSkillIndex == SkillBarLogic.Instance().MySkillBarInfo[i].SkillIndex)
                                    {
                                        if (null != ComboSkillTipLogic.Instance())
                                        {
                                            System.Collections.Generic.List <string> iconList = SkillBarLogic.Instance().GetContinueSkillIcons(_skillBase);
                                            ComboSkillTipLogic.Instance().Show(i, iconList.Count, iconList);
                                        }
                                    }

                                    if (null != ComboSkillTipLogic.Instance())
                                    {
                                        ComboSkillTipLogic.Instance().SetStep(i, SkillBarLogic.Instance().MySkillBarInfo[i].SkillCount);
                                    }
                                    if (_skillBase.NextIndex == _skillBase.FirstIndex)
                                    {
                                        SkillBarLogic.Instance().MySkillBarInfo[i].isCompleted = true;
                                        SkillBarLogic.Instance().MySkillBarInfo[i].SkillCount  = 0;
                                    }


                                    break;
                                }
                            }
                        }
                    }

                    //if it is xpSkill and attackSkill
                    if (((_skillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT) != 0) &&
                        _skillBase.GetChangeModebyIndex(_mainPlayer.CurChangeState) >= 0 &&
                        SkillBarLogic.Instance()._AttackBarInfo != null)
                    {
                        SkillBarLogic.Instance()._AttackBarInfo.fCurrentStartTime = Time.realtimeSinceStartup;
                        SkillBarLogic.Instance()._AttackBarInfo.fCurDisabledStartTime = Time.realtimeSinceStartup;
                        SkillBarLogic.Instance()._AttackBarInfo.nCurrentCDTime = _skillEx.NextSkillEffectTime;
                        SkillBarLogic.Instance()._AttackBarInfo.fRemainCDTime = _skillEx.NextSkillEffectTime;
                        SkillBarLogic.Instance()._AttackBarInfo.fDisabledRemTime = _skillEx.NextSkillDisabledTime;
                        SkillBarLogic.Instance()._AttackBarInfo.fCurDisabledTime = _skillEx.NextSkillDisabledTime;
                        SkillBarLogic.Instance()._AttackBarInfo.nCurSkillId = _skillEx.NextContinueSkillId;
                    }
                }
            }


            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemplo n.º 19
0
    public void UpdateShenQiViewInfo()
    {
        ClearnInfo();
        if (m_ShenQiItem == null)
        {
            return;
        }
        if (m_ShenQiItem.IsValid() == false)
        {
            return;
        }
        Tab_ShenQiInfo _ShenQiInfo = TableManager.GetShenQiInfoByID(m_ShenQiItem.DataID, 0);

        if (_ShenQiInfo == null)
        {
            return;
        }
        m_ShenQiSlot.InitInfo(ItemSlotLogic.SLOT_TYPE.TYPE_ITEM, m_ShenQiItem.DataID, ShowShenQiTipsInf);
        m_ShenQiNameLable.text = Utils.GetItemNameColor((int)m_ShenQiItem.GetQuality()) + m_ShenQiItem.GetName();//神器名字
        //技能信息
        int SkillInfIndex = (int)ShenQiDyData.SkillId;

        if (SkillInfIndex >= 0 && SkillInfIndex < m_ShenQiItem.DynamicData.Length)
        {
            Tab_SkillEx _skillEx = TableManager.GetSkillExByID(m_ShenQiItem.DynamicData[(int)ShenQiDyData.SkillId], 0);
            if (_skillEx != null)
            {
                Tab_SkillBase _SkillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                if (_SkillBase != null)
                {
                    m_ShenQiSkillNameLable.text = _SkillBase.Name;
                    m_ShenQiSkillLevLable.text  = _skillEx.Level.ToString() + "/" + _ShenQiInfo.MaxSkillLev.ToString();
                    m_ShenQiSkillDecLable.text  = _skillEx.SkillDesc;
                    Tab_ShenQiSkillInfo _ShenQiSkillInfo = TableManager.GetShenQiSkillInfoByID(_skillEx.SkillExID, 0);
                    if (_ShenQiSkillInfo != null)
                    {
                        int nSuiPianNum    = _ShenQiSkillInfo.NeedItemNum;
                        int nSuiPianOwnNum = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_ShenQiSkillInfo.NeedItemId);
                        if (nSuiPianNum <= nSuiPianOwnNum)
                        {
                            m_SheiQiSkillUpSuiPianLabel.text = "[32A100]" + nSuiPianNum;
                        }
                        else
                        {
                            m_SheiQiSkillUpSuiPianLabel.text = "[FF2222]" + nSuiPianNum;
                        }
                        if (_ShenQiSkillInfo.NextSkillId != -1)
                        {
                            m_ShowSkillInfoNextBt.SetActive(true);
                        }
                    }
                }
            }
        }
        //经验 元宝 经验
        m_CoinNumLabel.text = Utils.ConvertLargeNumToString(GameManager.gameManager.PlayerDataPool.Money.GetMoney_Coin());
        m_YBNumLable.text   = GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBao().ToString();
        m_ExpNumLable.text  = Utils.ConvertLargeNumToString(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Exp);
        //属性条
        for (int i = 0; i < (int)ShenQiInfo.MAXRANDATTRNUM; i++)
        {
            if (i + (int)ShenQiDyData.Attr1Info >= 0 && i + (int)ShenQiDyData.Attr1Info < m_ShenQiItem.DynamicData.Length)
            {
                int AttrRandData = m_ShenQiItem.DynamicData[i + (int)ShenQiDyData.Attr1Info];
                if (AttrRandData > 0)
                {
                    int AttrType    = m_ShenQiItem.GetShenQiRandAttrType(AttrRandData);
                    int AttrNum     = m_ShenQiItem.GetShenQiRandAttrNum(AttrRandData);
                    int AttrQuality = m_ShenQiItem.GetShenQiRandAttrQuality(AttrRandData);
                    m_AttrTypeLable[i].text = Utils.GetItemNameColor(AttrQuality + 1) + Utils.GetAttrTypeString(AttrType);
                    //if (1+_ShenQiInfo.ShenQiRefixPer>0 && _ShenQiInfo.ShenQiRefixPer>0)
                    //{
                    //    int nBaseAttr = (int) ((AttrNum*1.0f)/(1 + _ShenQiInfo.ShenQiRefixPer));
                    //    int nFixAttr = (int) (AttrNum*_ShenQiInfo.ShenQiRefixPer);
                    //    m_AttrNumLable[i].text = Utils.GetItemNameColor(AttrQuality+1) + "+" + nBaseAttr.ToString() + "+" + nFixAttr.ToString();
                    //}
                    //else
                    {
                        int nMaxNum = (int)(_ShenQiInfo.GetAttrMaxValuebyIndex(AttrType) * (1 + _ShenQiInfo.ShenQiRefixPer));
                        m_AttrNumLable[i].text = Utils.GetItemNameColor(AttrQuality + 1) + "+" + AttrNum + "[FF9933]" + StrDictionary.GetClientDictionaryString("#{5217}", nMaxNum);
                    }
                    m_AttrTypeLable[i].gameObject.SetActive(true);
                    m_AttrNumLable[i].gameObject.SetActive(true);
                    m_AttrToggle[i].gameObject.SetActive(true);
                }
                else
                {
                    m_AttrTypeLable[i].gameObject.SetActive(false);
                    m_AttrNumLable[i].gameObject.SetActive(false);
                    m_AttrToggle[i].gameObject.SetActive(false);
                }
            }
        }
        m_CoinNeedLable.text          = _ShenQiInfo.CoinCostMoney.ToString();
        m_YBNeedLable.text            = _ShenQiInfo.YBCostMoney.ToString();
        m_ExpNeedLable.text           = _ShenQiInfo.ExpCostNum.ToString();
        m_ShenQiCombatValueLable.text = m_ShenQiItem.GetCombatValue_ForShenQi().ToString();
    }
    public void Init(int skillid, int index, int fellowlevel)
    {
        if (skillid == GlobeVar.INVALID_ID)
        {
            if (index < 0 || index >= Fellow.FELLOW_ELEMENTSKILL_LEVELNEED.Length)
            {
                return;
            }

            m_SkillIcon.gameObject.SetActive(false);
            //m_QualityPic.spriteName = "white-jinengkuang";
            m_UnLockButton.SetActive(false);
            int LvValue = Fellow.FELLOW_ELEMENTSKILL_LEVELNEED[index];
            m_Level.text = LvValue.ToString();
            if (fellowlevel >= LvValue)
            {
                m_LockButton.SetActive(true);
                m_NoHoldSprite.SetActive(false);
                m_bValidSlot = true;
                m_bLocked    = false;
            }
            else
            {
                m_LockButton.SetActive(false);
                m_NoHoldSprite.SetActive(true);
                m_bValidSlot = false;
                m_bLocked    = true;
            }
        }
        else
        {
            Tab_CabalFellowElementSkill tabSkill = TableManager.GetCabalFellowElementSkillByID(skillid, 0);
            if (tabSkill == null)
            {
                return;
            }

            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(skillid, 0);
            if (tabSkillEx == null)
            {
                return;
            }

            Tab_SkillBase tabBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
            if (tabBase == null)
            {
                return;
            }

            m_SkillIcon.spriteName = tabBase.Icon;
            m_SkillIcon.gameObject.SetActive(true);
            Tab_CabalFellowElementSkill tabNextSkill = TableManager.GetCabalFellowElementSkillByID(tabSkill.NextSkillId, 0);
            if (tabNextSkill == null)
            {
                m_Level.text = "MAX";
            }
            m_Level.text = FellowTool.GetFellowElementLevelText(skillid);

            m_LockButton.SetActive(true);
            m_UnLockButton.SetActive(false);

            m_NoHoldSprite.SetActive(false);

            m_bValidSlot = true;
            m_bLocked    = false;
        }
    }
Exemplo n.º 21
0
    public void InitElementSkill_Info(int skillid)
    {
        Tab_CabalFellowElementSkill tabSkill = TableManager.GetCabalFellowElementSkillByID(skillid, 0);

        if (tabSkill == null)
        {
            return;
        }

        Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(skillid, 0);

        if (tabSkillEx == null)
        {
            return;
        }

        Tab_SkillBase tabBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);

        if (tabBase == null)
        {
            return;
        }

        m_TallentSkillId = GlobeVar.INVALID_ID;
        m_ElementSkillId = skillid;

        m_NameLabel.text = tabBase.Name;
        m_NameLabel.gameObject.SetActive(true);

        Tab_CabalFellowElementSkill tabNextSkill = TableManager.GetCabalFellowElementSkillByID(tabSkill.NextSkillId, 0);

        if (tabNextSkill == null)
        {
            m_ExpLabel.text = "MAX";
        }
        else
        {
            m_ExpLabel.text = StrDictionary.GetClientDictionaryString("#{10321}", GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(tabNextSkill.NeedBookId), tabNextSkill.NeedBookCount);
        }
        m_ExpLabel.gameObject.SetActive(true);

        m_SkillIcon.spriteName = tabBase.Icon;
        m_SkillIcon.gameObject.SetActive(true);

        m_QualityPic.spriteName = FellowTool.GetFellowElementSkillQualityPic(skillid);

        m_LevelLabel.text = FellowTool.GetFellowElementLevelText(skillid);
        m_LevelLabel.gameObject.SetActive(true);

        m_FlagLabel.gameObject.SetActive(false);
        m_LockSprite.SetActive(false);

        if (m_LevelUpButton != null)
        {
            m_LevelUpButton.SetActive(tabSkill.NextSkillId != GlobeVar.INVALID_ID);
        }

        updateElementRemindPoint(skillid);
        if (PartnerFrameLogic.Instance() != null)
        {
            PartnerFrameLogic.Instance().UpdateDevelopRemindPoint();
        }
    }
Exemplo n.º 22
0
        //======================================================

        public bool IsCanAddAutoSkill(int skillId)
        {
            Tab_SkillEx SkillExinfo = TableManager.GetSkillExByID(skillId, 0);

            if (SkillExinfo == null)
            {
                return(false);
            }
            Tab_SkillBase SkillBase = TableManager.GetSkillBaseByID(SkillExinfo.BaseId, 0);

            if (SkillBase == null)
            {
                return(false);
            }

            // 4个 普通技能
            if ((SkillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT) == 0 &&
                (SkillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) == 0 &&
                (SkillBase.SkillClass & (int)SKILLCLASS.XP) == 0 &&
                (SkillBase.SkillClass & (int)SKILLCLASS.PASSIVITY) == 0
                )
            {
                return(true);
            }

            //// 一二变区分
            // first
            return(false);

            if (SkillBase.LevelUpIndex != GlobeVar.INVALID_ID && SkillBase.LevelUpIndex / 10 >= 1 && SkillBase.LevelUpIndex / 10 < 2)
            {
                //xp
                if ((SkillBase.SkillClass & (int)SKILLCLASS.XP) > 0)
                {
                    return(true);
                }
                else if ((SkillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) > 0)
                {
                    Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                    if (PlayerPreferenceData.PVESkillIdCurUsing >= 0 && PlayerPreferenceData.PVESkillIdCurUsing < _mainPlayer.OwnSkillInfo.Length)
                    {
                        if (_mainPlayer.OwnSkillInfo[PlayerPreferenceData.PVESkillIdCurUsing].SkillId == skillId)
                        {
                            return(true);
                        }
                    }
                }
            }

            //second
            else if (SkillBase.LevelUpIndex != GlobeVar.INVALID_ID && SkillBase.LevelUpIndex / 10 >= 2)
            {
                //xp
                if ((SkillBase.SkillClass & (int)SKILLCLASS.XP) > 0)
                {
                    return(true);
                }
                else if ((SkillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) > 0)
                {
                    Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                    if (PlayerPreferenceData.PVPSkillIdCurUsing >= 0 && PlayerPreferenceData.PVESkillIdCurUsing < _mainPlayer.OwnSkillInfo.Length)
                    {
                        if (_mainPlayer.OwnSkillInfo[PlayerPreferenceData.PVPSkillIdCurUsing].SkillId == skillId)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Exemplo n.º 23
0
        public override void UpdateAI()
        {
            base.UpdateAI();
            if (m_player == null || m_player.Controller == null)
            {
                return;
            }
            if (m_player.IsDie())
            {
                return;
            }
            if (m_player.Controller.CombatFlag == false)
            {
                return;
            }
            if (m_player.AutoComabat == false)
            {
                return;
            }
            //轻功状态下 不挂机
            if (m_player.QingGongState)
            {
                return;
            }
            if (m_player.AcceleratedMotion != null && m_player.AcceleratedMotion.Going == true)
            {
                return;
            }
            //剧情播放中不挂机
            if (m_player.IsInModelStory)
            {
                return;
            }
            // 跟随不挂机
            if (false == m_player.IsTeamLeader() && m_player.IsInTeamFollow)
            {
                return;
            }
            if (Cutscene.CutsceneManager.Instance.IsPlayingMovieStory)
            {
                return;
            }
            //阻塞状态不挂机
            if (Cutscene.CutsceneManager.Instance.BlockAutoBattle)
            {
                return;
            }
            //自动交接任务的寻路过程中不挂机
            if (null != GameManager.gameManager.AutoSearch &&
                true == GameManager.gameManager.AutoSearch.IsAutoSearching)
            {
                return;
            }
            //modify 普通攻击:可以连续按。在技能结束前可以再次释放不能直接return。
            if (m_player.SkillCore.IsUsingSkill)
            {
                bool shouldReturn = true;
                if ((Time.time * 1000 - CurUseSkillStartTime) >= m_nNormalSkillInterval)
                {
                    if (IsNormalSkill(CurUseSkillId))
                    {
                        shouldReturn = false;
                    }
                }
                if (shouldReturn)
                {
                    return;
                }
            }

            #region UnUsed

            /* if (m_player.SkillCore.IsUsingSkill)
             * {
             *
             *   return;
             *   if (m_player.SkillCore.UsingSkillBaseInfo != null && m_player.SkillCore.UsingSkillExInfo !=null)
             *   {
             *       //正在使用祝融掌 则检测下当前目标是否还存在 不存在则重新选取目标
             *       //if (m_player.SkillCore.UsingSkillBaseInfo.Id ==(int)SKILLBASEID.ZLZ)
             *       //{
             *       //    if (m_player.SelectTarget ==null || m_player.SelectTarget.IsDie())
             *       //    {
             *       //        Obj_Character _NewAttackCharacter = SeleCanAttackTar(m_player.SkillCore.UsingSkillExInfo.Radius);
             *       //        if (_NewAttackCharacter != null)
             *       //        {
             *       //            //设置新的选中目标
             *       //            m_player.OnSelectTarget(_NewAttackCharacter.gameObject,false);
             *       //            m_player.MoveTo(_NewAttackCharacter.transform.position, _NewAttackCharacter.gameObject,1.0f);
             *       //        }
             *       //    }
             *       //}
             *
             *       //连续技特殊判定:
             *       //1、判定玩家是否主动打断;
             *       //2、不判定是否释放完成,一直尝试是否可释放;
             *       if (IsPlayerBreakRepeatSkill())
             *       {
             *           ClearPlayerBreakRepeatSkill();
             *           return;
             *       }
             *       //非连续技则等待一帧
             *       if (!IsUsingRepeatSkillWithNext())
             *       {
             *           return;
             *       }
             *   }
             * }
             * else
             * {
             *   if (m_fLastUseEndTime <=0.1f)
             *   {
             *       m_fLastUseEndTime = Time.time;
             *   }
             * }*/
            #endregion
            //留个缓冲时间
            //if (Time.time -m_fLastUseEndTime <0.5f)
            //{
            //    return;
            //}
            //有轻功点了出现了 向轻功点移动
            if (m_player.AutoMovetoQGPointId != -1)
            {
                //打断挂机状态
                m_player.BreakAutoCombatState();

                /*if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_YANZIWU)
                 * {
                 *  //燕子坞轻功点移动
                 *  m_player.AutoFightFlyInYanZiWu();
                 * }*/
                m_player.AutoMovetoQGPointId = -1;
                return;
            }
            m_fLastUseEndTime = 0.0f;
            int skillId = SeleSkill();
            if (skillId == -1)
            {
                return;
            }
            Tab_SkillEx skillExInfo = TableManager.GetSkillExByID(skillId, 0);
            if (skillExInfo == null)
            {
                return;
            }
            Tab_SkillBase skillBaseInfo = TableManager.GetSkillBaseByID(skillExInfo.BaseId, 0);
            if (skillBaseInfo == null)
            {
                return;
            }

            Obj_Character CanAttackCharacter = null;
            //如果当前选中的目标是敌对的了 则不需要再次选取目标
            if (m_player.SelectTarget != null && m_player.SelectTarget.IsDie() == false)
            {
                if (Reputation.IsEnemy(m_player.SelectTarget) ||
                    Reputation.IsNeutral(m_player.SelectTarget))
                {
                    CanAttackCharacter = m_player.SelectTarget;
                }
            }

            float skillRadius = skillExInfo.Radius;

            if (CanAttackCharacter == null ||
                (CanAttackCharacter != null && IsDisStartPointTooFar(skillRadius, CanAttackCharacter.Position))
                )
            {
                CanAttackCharacter = SeleCanAttackTar(skillRadius);
            }
            //是否有攻击目标 没有攻击目标就不要自动放技能了
            if (CanAttackCharacter == null)
            {
                /*
                 * if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_ZHENLONGQIJU)
                 * {
                 *  Vector3 pos = new Vector3(18, m_player.gameObject.transform.position.y, 16);
                 *  m_player.MoveTo(pos, null, 0.0f);
                 *
                 * }
                 * if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_YANGWANGGUMU)
                 * {
                 *  Vector3 pos = new Vector3(20, m_player.gameObject.transform.position.y, 21);
                 *  m_player.MoveTo(pos, null, 0.0f);
                 * }
                 *
                 * if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_YANZIWU)
                 * {
                 *  m_player.AutoFightInYanziwu();
                 * }
                 * if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FOURVILLAIN)
                 * {
                 *  Singleton<ObjManager>.Instance.MainPlayer.AutoFightInFourVillain();
                 * }
                 */
                if (GameManager.gameManager.ActiveScene != null && GameManager.gameManager.ActiveScene.IsStoryCopyScene())
                {
                    if (Singleton <ObjManager> .GetInstance().MainPlayer != null)
                    {
                        if (Singleton <ObjManager> .GetInstance().MainPlayer.AutoComabat)
                        {
                            float x = 0.0f, y = 0.0f, z = 0.0f;
                            if (GameManager.gameManager.ActiveScene.GetGuideDestination(ref x, ref z))
                            {
                                y = GameManager.gameManager.ActiveScene.GetTerrainHeight(new Vector3(x, 0.0f, z));
                                Singleton <ObjManager> .GetInstance().MainPlayer.MoveTo(new Vector3(x, y, z), null, 0.0f);
                            }
                        }
                    }
                }
                return;
            }
            //如果在野外场景攻击其它玩家return;
            if (CanAttackCharacter.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
            {
                if (GameManager.gameManager.ActiveScene.IsWildeScene())
                {
                    return;
                }
            }
            //设置为选中目标
            m_player.OnSelectTarget(CanAttackCharacter.gameObject, false);
            //距离不过 先跑过去
            float dis          = Vector3.Distance(m_player.Position, CanAttackCharacter.Position);
            float diffDistance = dis - skillRadius;
            m_player.CurUseSkillId = skillId;
            //需要向目标移动 则想目标移动
            if (diffDistance > 0 && skillBaseInfo.IsMoveToTarInAutoCombat == 1)
            {
                //move
                if (m_player.IsMoving == false && m_player.IsCanOperate_Move())
                {
                    m_player.MoveTo(CanAttackCharacter.Position, CanAttackCharacter.gameObject, skillRadius - 1.0f);
                    return;
                }
            }
            m_player.UseSkillOpt(skillId, null);
        }
Exemplo n.º 24
0
        //释放技能
        public void UseSkill(int skillId, int senderId, int targetId, string skillname = "")
        {
            if (m_bIsUsingSkill)
            {
                BreakCurSkill();
            }
            m_fLastUseSkillTime = Time.time;
            m_SkillSender       = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(senderId);

            if (m_SkillSender == null)
            {
                LogModule.DebugLog("MainPlayer is Null:" + senderId);
                return;
            }
            m_UsingSkillExInfo = TableManager.GetSkillExByID(skillId, 0);
            if (m_UsingSkillExInfo == null)
            {
                LogModule.DebugLog("SkillExinfo is Null: " + skillId);
                return;
            }
            int BaseSkillId = m_UsingSkillExInfo.BaseId;

            m_UsingSkillBaseInfo = TableManager.GetSkillBaseByID(BaseSkillId, 0);
            if (m_UsingSkillBaseInfo == null)
            {
                LogModule.DebugLog("SkillBaseInfo is Null" + BaseSkillId);
                return;
            }
            if (m_SkillSender.IsMoving)//可以攻击了且在移动 停止移动
            {
                m_SkillSender.StopMove();
            }

            //!!!使用的是旋风则 屏蔽旋转
            //if (m_UsingSkillBaseInfo.Id ==(int)SKILLBASEID.XFZBASEID)
            //{
            //    m_SkillSender.EnableMovingRotation(false);
            //}

            if (m_UsingSkillBaseInfo.Id == (int)SKILLBASEID.RIDE_SKILLID)
            {
                GameManager.gameManager.SoundManager.PlaySoundEffect(244);
            }

            //如果有目标 朝向目标
            Obj_Character _targetObjCharacter = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(targetId);

            if (_targetObjCharacter && _targetObjCharacter.ServerID != m_SkillSender.ServerID)
            {
                m_SkillSender.FaceTo(_targetObjCharacter.Position);
            }
            //如果有目标缓存一下目标位置
            TargetData.Clear();
            if (_targetObjCharacter != null)
            {
                TargetData._targetId  = targetId;
                TargetData._targetPos = _targetObjCharacter.transform.position;
                TargetData._hasSet    = true;
            }
            //开始播放动画
            PlayAnimation(m_UsingSkillExInfo.SatrtMotionId);
            m_UsingSkillStartAni = m_UsingSkillExInfo.SatrtMotionId;

            //子弹播放
            int nBulletNum = m_UsingSkillExInfo.getBulletEffectIDCount();

            for (int i = 0; i < nBulletNum; i++)
            {
                int _nBulletId = m_UsingSkillExInfo.GetBulletEffectIDbyIndex(i);
                if (_nBulletId != -1)
                {
                    if (_nBulletId == 93 || _nBulletId == 94 || _nBulletId == 95) //大理子弹 特殊处理下
                    {
                        m_SkillSender.PlayEffect(_nBulletId);
                    }
                    else
                    {
                        BulletData bulletData = new BulletData(senderId, targetId);
                        m_SkillSender.PlayEffect(_nBulletId, OnLoadBullet, bulletData);
                    }
                }
            }
            //显示技能名字
            if (m_UsingSkillBaseInfo.IsShowSkillName == 1 && m_SkillSender.ObjType != Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
            {
                if (skillname == "")
                {
                    if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
                    {
                        m_SkillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, m_UsingSkillBaseInfo.Name);
                    }
                    else if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
                    {
                        m_SkillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME_NPC, m_UsingSkillBaseInfo.Name, false);
                    }
                    else
                    {
                        m_SkillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, m_UsingSkillBaseInfo.Name, false);
                    }
                }
                else
                {
                    m_SkillSender.ShowDamageBoard_SkillName(Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.SKILL_NAME, skillname, false);
                }
            }
            //主角的一些的 特殊处理
            if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
            {
                Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                if (_mainPlayer)
                {
                    // 使用XP技能,如果有新手指引就 关掉
                    if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.XP) != 0 &&
                        SkillBarLogic.Instance() &&
                        SkillBarLogic.Instance().NewPlayerGuide_Step == 1)
                    {
                        NewPlayerGuidLogic.CloseWindow();
                    }

                    //当前释放的Xp技能成功了
                    if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.XP) != 0 && SkillBarLogic.Instance() != null)
                    {
                        SkillBarLogic.Instance().m_isUseSkillClick = true;
                        SkillBarLogic.Instance().OnClickXpShowBtn();
                        SkillBarLogic.Instance().TransformCon.TakeEffect();
                    }
                    int nSkillIndx = _mainPlayer.GetSkillIndexById(skillId);

                    int nChangeState = _mainPlayer.GetCurrentChangeState();

                    if (nSkillIndx >= 0 && nSkillIndx < _mainPlayer.OwnSkillInfo.Length)
                    {
                        //常规技能
                        if (m_UsingSkillBaseInfo.GetChangeModebyIndex(nChangeState) == 0)
                        {
                            Tab_CoolDownTime _coolDownTime = TableManager.GetCoolDownTimeByID(m_UsingSkillExInfo.CDTimeId, 0);
                            //吟唱技不在这里加CD 吟唱技能生效后才走CD 服务器同步过来
                            if (_coolDownTime != null && m_UsingSkillBaseInfo.UseType != (int)SKILLUSETYPE.YINCHANG)
                            {
                                _mainPlayer.OwnSkillInfo[nSkillIndx].CDTime = _coolDownTime.CDTime;
                            }

                            //非连续技 增加公共CD
                            int nPublicSkillCDId           = (int)SKILLDEFINE.PUBLICCDID;
                            Tab_CoolDownTime _publicCDTime = TableManager.GetCoolDownTimeByID(nPublicSkillCDId, 0);
                            if (_publicCDTime != null && m_UsingSkillBaseInfo.HasPublicCd == 1)
                            {
                                _mainPlayer.SkillPublicTime = _publicCDTime.CDTime;
                            }
                        }
                    }

                    //如果是冲撞技能
                    if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.CrashMove) != 0)
                    {
                        Tab_CoolDownTime _coolDownTime = TableManager.GetCoolDownTimeByID(m_UsingSkillExInfo.CDTimeId, 0);
                        _mainPlayer.CrashSkillCDTime = _coolDownTime.CDTime;

                        //非连续技 增加公共CD
                        int nPublicSkillCDId           = (int)SKILLDEFINE.PUBLICCDID;
                        Tab_CoolDownTime _publicCDTime = TableManager.GetCoolDownTimeByID(nPublicSkillCDId, 0);
                        if (_publicCDTime != null && m_UsingSkillBaseInfo.HasPublicCd == 1)
                        {
                            _mainPlayer.SkillPublicTime = _publicCDTime.CDTime;
                        }
                    }

                    if (CanShowSkillProgress(skillId))
                    {
                        //如果是吟唱技则 显示引导条
                        if (m_UsingSkillBaseInfo.UseType == (int)SKILLUSETYPE.YINCHANG)
                        {
                            //吟唱时间为当前动作的长度
                            float fYinChangTime = m_UsingSkillExInfo.YinChangTime / 1000.0f;//转换成秒
                            //设置持续时间
                            if (SkillProgressLogic.Instance() != null)
                            {
                                SkillProgressLogic.Instance().PlaySkillProgress(SkillProgressLogic.ProgressModel.ORDERMODEL, fYinChangTime);
                            }
                        }
                        else if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.DUTIAO) != 0)
                        {
                            //技能长度为当前引导条的长度
                            float fContiueTime = m_UsingSkillExInfo.SkillContinueTime / 1000.0f;//转换成秒
                            //设置持续时间
                            if (SkillProgressLogic.Instance() != null)
                            {
                                SkillProgressLogic.Instance().PlaySkillProgress(SkillProgressLogic.ProgressModel.REVERSEDMODE, fContiueTime);
                            }
                        }
                    }
                    if (m_SkillSender.Controller != null && m_SkillSender.Controller.CombatFlag)
                    {
                        _mainPlayer.AutoComabat = true;
                    }
                    //add by mawenbin
                    //移植天龙3D TT15398 死亡复活*复活点自动寻路过程中释放六脉神剑立马被打断
                    //清除自动寻路 加个开关限制
                    if (GameManager.gameManager.PlayerDataPool.IsServerFlagOpen(SERVER_FLAGS_ENUM.FLAG_SKILLBREAKAUTOMOVE))
                    {
                        if (null != GameManager.gameManager.AutoSearch &&
                            GameManager.gameManager.AutoSearch.IsAutoSearching)
                        {
                            GameManager.gameManager.AutoSearch.Stop();
                        }
                    }
                }
            }
            //npc和主角自身放技能 可以自带震屏效果
            if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER ||
                m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
            {
                //摄像机的 操作
                CameraOpt();
            }
            //测试用代码
            if (m_UsingSkillExInfo.HasRangeWarning == 1 && m_SkillSender.ObjEffectController != null)
            {
                m_SkillSender.ObjEffectController.PlaySkillWarningEffect(skillId);
            }

            m_nLastSkillId  = skillId;
            m_nLastSendId   = senderId;
            m_nLastTargetId = targetId;
            m_bIsUsingSkill = true;
        }
Exemplo n.º 25
0
    //显示装备属性
    public void ShowAttr(GameItem item, bool bUnEquiped = false)
    {
        ClearInfo();
        //获得身上对应槽位的装备
        int      slotindex    = item.GetEquipSlotIndex();
        GameItem compareEquip = GameManager.gameManager.PlayerDataPool.EquipPack.GetItem(slotindex);

        Tab_EquipAttr line = TableManager.GetEquipAttrByID(item.DataID, 0);

        if (line != null)
        {
            int index = 0;
            //血上限
            if (line.HP > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.HP, "HP");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAXHP);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.HP * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.HP);
                ++index;
            }
            //血上限(百分比)
            if (line.HPPer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.HPPer, "HPPer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAXHP);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.HPPer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //蓝上限
            if (line.MP > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MP, "MP");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAXMP);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.MP * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.MP);
                ++index;
            }
            //蓝上限(百分比)
            if (line.MPPer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MPPer, "MPPer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAXMP);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.MPPer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //物理攻击
            if (line.PhysicsAttack > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.PhysicsAttack, "PhysicsAttack");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.PYSATTACK);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.PhysicsAttack * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.PhysicsAttack);
                ++index;
            }
            //物理攻击(百分比)
            if (line.PhysicsAttackPer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.PhysicsAttackPer, "PhysicsAttackPer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.PYSATTACK);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.PhysicsAttackPer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //法术攻击
            if (line.MagicAttack > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MagicAttack, "MagicAttack");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAGATTACK);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.MagicAttack * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.MagicAttack);
                ++index;
            }
            //法术攻击(百分比)
            if (line.MagicAttackPer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MagicAttackPer, "MagicAttackPer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAGATTACK);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.MagicAttackPer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //物理防御
            if (line.PhysicsDefence > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.PhysicsDefence, "PhysicsDefence");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.PYSDEF);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.PhysicsDefence * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.PhysicsDefence);
                ++index;
            }
            //物理防御(百分比)
            if (line.PhysicsDefencePer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.PhysicsDefencePer, "PhysicsDefencePer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.PYSDEF);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.PhysicsDefencePer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //法术防御
            if (line.MagicDefence > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MagicDefence, "MagicDefence");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAGDEF);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.MagicDefence * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.MagicDefence);
                ++index;
            }
            //法术防御(百分比)
            if (line.MagicDefencePer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.MagicDefencePer, "MagicDefencePer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString(COMBATATTE.MAGDEF);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.MagicDefencePer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //攻击速度
            if (line.AttackSpeed > 0 && index < m_Attr.Length && index >= 0)
            {
                //策划要求 隐藏装备攻速属性
                //m_Attr[index].text = string.Format("{0}+{1}", ConvertAttrToString(COMBATATTE.ATTACKSPEED), line.AttackSpeed);
                //m_Attr[index].gameObject.SetActive(true);
                ////策划要求 攻速不受强化和打星影响
                //++index;
            }
            //攻击速度(百分比)
            if (line.AttackSpeedPer > 0 && index < m_Attr.Length && index >= 0)
            {
                //策划要求 隐藏装备攻速属性
                //m_Attr[index].text = string.Format("{0}+{1}%", ConvertAttrToString(COMBATATTE.ATTACKSPEED), line.AttackSpeedPer * 100);
                //m_Attr[index].gameObject.SetActive(true);
                //++index;
            }
            //全攻击
            if (line.AllAttack > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.AllAttack, "AllAttack");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)1000);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.AllAttack * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.AllAttack);
                ++index;
            }
            //全攻击(百分比)
            if (line.AllAttackPer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.AllAttackPer, "AllAttackPer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)1000);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.AllAttackPer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            //全防御
            if (line.AllDefence > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.AllDefence, "AllDefence");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)1001);
                m_AttrValue[index].text = strColor + string.Format("+{0}", (int)(line.AllDefence * item.GetAttrFactorRefix()));
                m_AttrWhole[index].SetActive(true);
                //强化
                SetEnchanceAndStarAttr(item, index, line.AllDefence);
                ++index;
            }
            //全防御(百分比)
            if (line.AllDefencePer > 0 && index < m_Attr.Length && index >= 0)
            {
                string strColor = GetAttrColor(bUnEquiped, compareEquip, line.AllDefencePer, "AllDefencePer");
                m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)1001);
                m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(line.AllDefencePer * 100));
                m_AttrWhole[index].SetActive(true);
                ++index;
            }
            // delete cut lines
            //if (index >= 1)
            //{
            //    if ((index - 1) >= 0 && (index - 1) < m_CutLine.Length)
            //    {
            //        m_CutLine[index - 1].SetActive(true);
            //    }

            //}
            //附加属性
            for (int attrIndex = 0; attrIndex < line.getAddAttrTypeCount(); ++attrIndex)
            {
                int   attrType  = line.GetAddAttrTypebyIndex(attrIndex);
                float attrValue = line.GetAddAttrValuebyIndex(attrIndex);
                if ((attrType >= (int)COMBATATTE.MAXHP && attrType < (int)COMBATATTE.COMBATATTE_MAXNUM) || attrType == 1000 || attrType == 1001)
                {
                    if (attrValue > 0)
                    {
                        if (index < m_Attr.Length && index >= 0)
                        {
                            //策划要求隐藏装备攻速属性
                            if (attrType == (int)COMBATATTE.ATTACKSPEED)
                            {
                                continue;
                            }

                            string strColor = GetAttrColor(bUnEquiped, compareEquip, attrValue, "AddAttr", attrIndex);
                            m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)attrType);
                            m_AttrValue[index].text = strColor + string.Format("+{0}", (int)attrValue);
                            m_AttrWhole[index].SetActive(true);
                            if (attrType != (int)COMBATATTE.ATTACKSPEED) //策划要求 攻速不受强化和打星影响
                            {
                                //强化
                                SetEnchanceAndStarAttr(item, index, attrValue, true);
                                //策划要求 附加属性不受打星影响
                            }
                            ++index;
                        }
                    }
                }
            }
            //附加属性(百分比)
            for (int attrIndex = 0; attrIndex < line.getAddAttrTypeCount(); ++attrIndex)
            {
                int   attrType = line.GetAddAttrTypebyIndex(attrIndex);
                float attrPer  = line.GetAddAttrPerbyIndex(attrIndex);
                if (attrType >= (int)COMBATATTE.MAXHP && attrType < (int)COMBATATTE.COMBATATTE_MAXNUM && attrPer > 0)
                {
                    if (index < m_Attr.Length && index >= 0)
                    {
                        string strColor = GetAttrColor(bUnEquiped, compareEquip, attrPer, "AddAttrPer", attrIndex);

                        m_Attr[index].text      = strColor + ItemTool.ConvertAttrToString((COMBATATTE)attrIndex);
                        m_AttrValue[index].text = strColor + string.Format("+{0}%", (int)(attrPer * 100));
                        m_AttrWhole[index].SetActive(true);
                        ++index;
                    }
                }
            }

            //神器属性
            if (item != null && item.IsShenQiEquipMent())
            {
                Tab_ShenQiInfo _ShenQiInfo = TableManager.GetShenQiInfoByID(item.DataID, 0);
                if (_ShenQiInfo != null)
                {
                    //   技能信息
                    int SkillInfIndex = (int)ShenQiDyData.SkillId;
                    if (SkillInfIndex >= 0 && SkillInfIndex < item.DynamicData.Length)
                    {
                        Tab_SkillEx _skillEx = TableManager.GetSkillExByID(item.DynamicData[(int)ShenQiDyData.SkillId], 0);
                        if (_skillEx != null)
                        {
                            Tab_SkillBase _SkillBase = TableManager.GetSkillBaseByID(_skillEx.BaseId, 0);
                            if (_SkillBase != null)
                            {
                                // delete cut lines
                                //if (index >= 1 && index - 1 < m_CutLine.Length)
                                //{
                                //    m_CutLine[index - 1].SetActive(true);
                                //}
                                m_ShenQiSkillNameLable.text = _SkillBase.Name + "(" + _skillEx.Level + "/" + _ShenQiInfo.MaxSkillLev + ")";
                                m_ShenQiSkillDescLable.text = _skillEx.SkillDesc;
                                m_ShenQiSkillName.SetActive(true);
                                m_ShenQiSkillDesc.SetActive(true);
                            }
                        }
                    }
                    //属性条
                    int nLastAttrIndex = -1;
                    for (int i = 0; i < (int)ShenQiInfo.MAXRANDATTRNUM && i < m_ShenQiAttrWhole.Length; i++)
                    {
                        if (i + (int)ShenQiDyData.Attr1Info >= 0 && i + (int)ShenQiDyData.Attr1Info < item.DynamicData.Length)
                        {
                            int AttrRandData = item.DynamicData[i + (int)ShenQiDyData.Attr1Info];
                            if (AttrRandData > 0)
                            {
                                int AttrType    = item.GetShenQiRandAttrType(AttrRandData);
                                int AttrNum     = item.GetShenQiRandAttrNum(AttrRandData);
                                int AttrQuality = item.GetShenQiRandAttrQuality(AttrRandData);
                                m_ShenQiAttrName[i].text = Utils.GetItemNameColor(AttrQuality + 1) + Utils.GetAttrTypeString(AttrType);
                                //if (1 + _ShenQiInfo.ShenQiRefixPer > 0 && _ShenQiInfo.ShenQiRefixPer > 0)
                                //{
                                //    int nBaseAttr = (int)((AttrNum * 1.0f) / (1 + _ShenQiInfo.ShenQiRefixPer));
                                //    int nFixAttr = (int)(AttrNum * _ShenQiInfo.ShenQiRefixPer);
                                //    m_ShenQiAttrValue[i].text = Utils.GetItemNameColor(AttrQuality+1) + "+" + nBaseAttr.ToString() + "+" + nFixAttr.ToString();
                                //}
                                //else
                                {
                                    m_ShenQiAttrValue[i].text = Utils.GetItemNameColor(AttrQuality + 1) + "+" + AttrNum;
                                }
                                m_ShenQiAttrWhole[i].SetActive(true);
                                nLastAttrIndex = i;
                            }
                        }
                    }
                    //分界线
                    //   m_ShenQiSkillCutLine.SetActive(true);
                    if (nLastAttrIndex >= 0 && nLastAttrIndex < m_ShenQiAttrCutLine.Length)
                    {
                        m_ShenQiAttrCutLine[nLastAttrIndex].SetActive(true);
                    }
                    //m_ShenQiCutLine2.SetActive(true);
                }
            }
            //m_Grid.Reposition();
            //m_TopGrid.Recenter(true);
            m_Table.sorted          = true;
            m_Table.hideInactive    = true;
            m_Table.keepWithinPanel = true;
            m_Table.repositionNow   = true;
        }
    }
Exemplo n.º 26
0
    void Init(string spriteName, GameObject destGameObject, NEWITEMTYPE type, int IntParam = GlobeVar.INVALID_ID, GameObject attachGameObject = null, string itemName = "", string strFuncName = "", string strDec = "")
    {
        _forShowWin();
        m_destGameObject = destGameObject;
        m_AttachItem.SetActive(false);
        hasAttachSkill = false;
        if (type == NEWITEMTYPE.TYPE_SKILL)
        {
            Dictionary <int, List <Tab_SkillActive> > dicTab_SkillActive = TableManager.GetSkillActive();

            foreach (KeyValuePair <int, List <Tab_SkillActive> > kv in dicTab_SkillActive)
            {
                Tab_SkillActive _skillActive = kv.Value[0];

                //有附带技能
                if (_skillActive.SkillId == IntParam && _skillActive.AttachSkillId != -1)
                {
                    m_AttachItem.SetActive(true);
                    m_NeedToShow           = true;
                    m_AttachItemIcon.atlas = SkillAtlas;


                    Tab_SkillEx _tabSkillEx = TableManager.GetSkillExByID(_skillActive.AttachSkillId, 0);
                    if (_tabSkillEx != null)
                    {
                        Tab_SkillBase _sttachSkillBase = TableManager.GetSkillBaseByID(_tabSkillEx.BaseId, 0);
                        if (_sttachSkillBase != null)
                        {
                            hasAttachSkill = true;
                            m_AttachItemIcon.spriteName = _sttachSkillBase.Icon;
                            m_AttachItemIcon.MakePixelPerfect();
                            m_AttachNameLabel.text = _sttachSkillBase.Name;
                            m_AttachDescLabel.text = _tabSkillEx.SkillDesc;
                            m_AttachItemIcon.gameObject.transform.localScale = Vector3.one;
                        }
                    }
                }
            }

            if (hasAttachSkill)
            {
                m_MainItem.transform.localPosition = new Vector3(12, -84, 0);
            }

            m_ItemIcon.atlas      = SkillAtlas;
            m_ItemIcon.spriteName = spriteName;
            //m_ItemIcon.MakePixelPerfect();
            m_SprTitle.spriteName = "Newjineng";// new skill

            Tab_SkillEx tabSkillEx = TableManager.GetSkillExByID(IntParam, 0);
            if (tabSkillEx != null)
            {
                Tab_SkillBase _skillBase = TableManager.GetSkillBaseByID(tabSkillEx.BaseId, 0);
                if (_skillBase != null)
                {
                    m_NameLabel.text = _skillBase.Name;
                    m_DescLabel.text = tabSkillEx.SkillDesc;
                    m_ItemIcon.gameObject.transform.localScale = Vector3.one;
                }
            }
        }
        else if (type == NEWITEMTYPE.TYPE_MENUBAR)
        {
            m_ItemIcon.atlas      = MainMenuBarAtlas;
            m_ItemIcon.spriteName = spriteName;
            //m_ItemIcon.MakePixelPerfect();
            m_ItemIcon.gameObject.transform.localScale = Vector3.one;
            m_SprTitle.spriteName = "Newxitong";
            m_NameLabel.text      = strFuncName;
            m_DescLabel.text      = "      " + strDec;
            m_ItemName.text       = itemName;
        }
        else if (type == NEWITEMTYPE.TYPE_FUNCTION)
        {
            if (IntParam == m_openServerId)
            {
                _hideShowWin();
                // 开服奖励的单独对待
                OpenServer.fakeId          = 67;
                OpenServer.destroyCallBack = () =>
                {
                    if (FunctionButtonLogic.Instance() != null)
                    {
                        FunctionButtonLogic.Instance().ShowTweenPosition();
                    }
                };
                UIManager.ShowUI(UIInfo.OpenServer, (bSuccess, param) =>
                {
                    if (bSuccess && OpenServer.Instance() != null)
                    {
                        OpenServer.Instance().ShowRideDesc();
                    }
                });
            }
            else
            {
                m_ItemIcon.atlas      = MainUIAtlas;
                m_ItemIcon.spriteName = spriteName;
                m_ItemIcon.gameObject.SetActive(!string.IsNullOrEmpty(spriteName));
                m_ItemIcon.MakePixelPerfect();
                m_ItemIcon.gameObject.transform.localScale = Vector3.one;
                m_SprTitle.spriteName = "Newxitong";
                m_NameLabel.text      = strFuncName;
                m_DescLabel.text      = "      " + strDec;
                m_ItemName.text       = itemName;
            }
        }
        else if (type == NEWITEMTYPE.TYPE_QINGGONG)
        {
            m_ItemIcon.atlas      = SkillAtlas;
            m_ItemIcon.spriteName = spriteName;
            m_ItemIcon.MakePixelPerfect();
            m_SprTitle.spriteName = "Newjineng";// new skill

            m_NameLabel.text = StrDictionary.GetClientDictionaryString("#{4584}");
            m_DescLabel.text = "      " + StrDictionary.GetClientDictionaryString("#{4586}");
            m_ItemIcon.gameObject.transform.localScale = 0.7f * Vector3.one;
        }
        else if (type == NEWITEMTYPE.TYPE_FELLOW3DSHOW)
        {
            _hideShowWin();
//            Transform parent = m_ItemIcon.transform.parent;
            m_ItemIcon.atlas = null;
            m_ItemIcon.transform.parent.FindChild("BGSprite").GetComponent <UISprite>().atlas = null;
            m_ItemIcon.transform.parent.FindChild("Sprite").GetComponent <UISprite>().atlas   = null;
            OpenServer.fakeId          = 79;
            OpenServer.destroyCallBack = () =>
            {
                NewItemOnClick();
            };
            UIManager.ShowUI(UIInfo.OpenServer, (bSuccess, param) =>
            {
                if (bSuccess && OpenServer.Instance() != null)
                {
                    OpenServer.Instance().ShowFellowDesc();
                }
            });
        }

        m_ItemTween.Reset();
        m_ItemTween.gameObject.SetActive(false);

        if (hasAttachSkill)
        {
            m_AttachItemTween.Reset();
            if (attachGameObject != null)
            {
                m_AttachItemTween.to = m_AttachItemTween.gameObject.transform.parent.InverseTransformPoint(attachGameObject.transform.position);
            }
        }

        m_ItemType = type;
        m_IntParam = IntParam;
    }
    private UInt64 m_MasterGuid;           //师门GUID

    //根据数据初始化控件
    public void Init(MasterPreviewInfo info, int nIndex)
    {
        //判断数据合法性
        if (info.MasterGuid == GlobeVar.INVALID_GUID)
        {
            return;
        }

        m_MasterGuid = info.MasterGuid;

        //填充数据
        if (null != m_MasterIndexLable)
        {
            m_MasterIndexLable.text = nIndex.ToString();
        }
        if (null != m_MasterNameLabel)
        {
            m_MasterNameLabel.text = info.MasterName;
        }
        if (null != m_MasterChiefNameLabel)
        {
            m_MasterChiefNameLabel.text = info.MasterChiefName;
        }
        if (null != m_MasterTorchLabel)
        {
            m_MasterTorchLabel.text = info.MasterTorch.ToString();
        }
        if (null != m_MasterMemberNumLabel)
        {
            m_MasterMemberNumLabel.text = info.MasterCurMemberNum.ToString();
        }
        int SkillIndex = 0;

        if (info.MasterSkillId1 >= 0)
        {
            Tab_SkillEx lineSkillEx = TableManager.GetSkillExByID(info.MasterSkillId1, 0);
            if (lineSkillEx != null)
            {
                Tab_SkillBase lineSkillBase = TableManager.GetSkillBaseByID(lineSkillEx.BaseId, 0);
                if (lineSkillBase != null &&
                    SkillIndex >= 0 &&
                    SkillIndex < m_MasterSkillSprite.Length &&
                    null != m_MasterSkillSprite[SkillIndex])
                {
                    m_MasterSkillSprite[SkillIndex].gameObject.SetActive(true);
                    m_MasterSkillSprite[SkillIndex].spriteName = lineSkillBase.Icon;
                    SkillIndex = SkillIndex + 1;
                }
            }
        }
        if (info.MasterSkillId2 >= 0)
        {
            Tab_SkillEx lineSkillEx = TableManager.GetSkillExByID(info.MasterSkillId2, 0);
            if (lineSkillEx != null)
            {
                Tab_SkillBase lineSkillBase = TableManager.GetSkillBaseByID(lineSkillEx.BaseId, 0);
                if (lineSkillBase != null &&
                    SkillIndex >= 0 &&
                    SkillIndex < m_MasterSkillSprite.Length &&
                    null != m_MasterSkillSprite[SkillIndex])
                {
                    m_MasterSkillSprite[SkillIndex].gameObject.SetActive(true);
                    m_MasterSkillSprite[SkillIndex].spriteName = lineSkillBase.Icon;
                    SkillIndex = SkillIndex + 1;
                }
            }
        }
        if (info.MasterSkillId3 >= 0)
        {
            Tab_SkillEx lineSkillEx = TableManager.GetSkillExByID(info.MasterSkillId3, 0);
            if (lineSkillEx != null)
            {
                Tab_SkillBase lineSkillBase = TableManager.GetSkillBaseByID(lineSkillEx.BaseId, 0);
                if (lineSkillBase != null &&
                    SkillIndex >= 0 &&
                    SkillIndex < m_MasterSkillSprite.Length &&
                    null != m_MasterSkillSprite[SkillIndex])
                {
                    m_MasterSkillSprite[SkillIndex].gameObject.SetActive(true);
                    m_MasterSkillSprite[SkillIndex].spriteName = lineSkillBase.Icon;
                    SkillIndex = SkillIndex + 1;
                }
            }
        }
        for (; SkillIndex < 4; SkillIndex++)
        {
            if (SkillIndex >= 0 &&
                SkillIndex < m_MasterSkillSprite.Length &&
                null != m_MasterSkillSprite[SkillIndex])
            {
                m_MasterSkillSprite[SkillIndex].gameObject.SetActive(false);
            }
        }
    }
Exemplo n.º 28
0
    // 三阶变身
    //private int skillId7 = GlobeVar.INVALID_ID;
    // private int skillId8 = GlobeVar.INVALID_ID;

    private void initSkillFirst()
    {
        Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .Instance.MainPlayer;

        if (_mainPlayer == null)
        {
            return;
        }

        int publicSkillIndex = 0;
        int xp1SkillChange   = 4;
        int xp1SkillIndex    = 5;
        int xp2SkillChange   = 6;
        int xp2SkillIndex    = 7;

        for (int i = 0; i < m_skillGameObj.Length; ++i)
        {
            m_skillGameObj[i].SetActive(false);
        }

        int skillId = GlobeVar.INVALID_ID;

        for (int i = 0; i < _mainPlayer.OwnSkillInfo.Length; ++i)
        {
            skillId = _mainPlayer.OwnSkillInfo[i].SkillId;
            if (skillId == GlobeVar.INVALID_ID)
            {
                continue;
            }

            Tab_SkillEx skillEx = TableManager.GetSkillExByID(skillId, 0);
            if (skillEx == null)
            {
                continue;
            }

            Tab_SkillBase skillBase = TableManager.GetSkillBaseByID(skillEx.BaseId, 0);              // skillEx.BaseId
            if (skillBase == null)
            {
                continue;
            }

            // 4个 普通技能
            if ((skillBase.SkillClass & (int)SKILLCLASS.AUTOREPEAT) == 0 &&
                (skillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) == 0 &&
                (skillBase.SkillClass & (int)SKILLCLASS.XP) == 0 &&
                (skillBase.SkillClass & (int)SKILLCLASS.PASSIVITY) == 0
                )
            {
                if (publicSkillIndex < 4)
                {
                    if (publicSkillIndex == 0)
                    {
                        skillId0 = skillId;
                    }

                    else if (publicSkillIndex == 1)
                    {
                        skillId1 = skillId;
                    }

                    else if (publicSkillIndex == 2)
                    {
                        skillId2 = skillId;
                    }

                    else if (publicSkillIndex == 3)
                    {
                        skillId3 = skillId;
                    }
                    m_skillSprite[publicSkillIndex].spriteName = _getSkillBaseIconName(skillId);
                    m_skillGameObj[publicSkillIndex].SetActive(true);
                    ++publicSkillIndex;
                }
            }

            //// 一二变区分
            // first
            if (skillBase.LevelUpIndex != GlobeVar.INVALID_ID && skillBase.LevelUpIndex / 10 >= 1 && skillBase.LevelUpIndex / 10 < 2)
            {
                //xp
                if ((skillBase.SkillClass & (int)SKILLCLASS.XP) > 0)
                {
                    m_skillSprite[xp1SkillChange].spriteName = _getSkillBaseIconName(skillId);
                    m_skillGameObj[xp1SkillChange].SetActive(true);
                    skillId4 = skillId;
                }
                else if ((skillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) > 0)
                {
                    if (PlayerPreferenceData.PVESkillIdCurUsing == i)
                    {
                        m_skillSprite[xp1SkillIndex].spriteName = _getSkillBaseIconName(skillId);
                        m_skillGameObj[xp1SkillIndex].SetActive(true);

                        skillId5 = skillId;
                    }
                }
            }

            //second
            else if (skillBase.LevelUpIndex != GlobeVar.INVALID_ID && skillBase.LevelUpIndex / 10 >= 2)
            {
                //xp
                if ((skillBase.SkillClass & (int)SKILLCLASS.XP) > 0)
                {
                    m_skillSprite[xp2SkillChange].spriteName = _getSkillBaseIconName(skillId);
                    m_skillGameObj[xp2SkillChange].SetActive(true);
                    skillId6 = skillId;
                }
                else if ((skillBase.SkillClass & (int)SKILLCLASS.CHANGEMODE) > 0)
                {
                    if (PlayerPreferenceData.PVPSkillIdCurUsing == i)
                    {
                        m_skillSprite[xp2SkillIndex].spriteName = _getSkillBaseIconName(skillId);
                        m_skillGameObj[xp2SkillIndex].SetActive(true);
                        skillId7 = skillId;
                    }
                }
            }
        }
    }
Exemplo n.º 29
0
    void ShowSkillInfo()
    {
        //找出需要显示的技能id
        List <int> totalSkillList = new List <int>();

        foreach (KeyValuePair <int, List <Tab_MasterSkill> > kvp in TableManager.GetMasterSkill())
        {
            Tab_MasterSkill line = kvp.Value[0];
            if (line != null)
            {
                if (line.Level == 1)
                {
                    totalSkillList.Add(line.Id);
                }
            }
        }

        //当前师门已经学习的技能
        Dictionary <int, string> masterSkillList = GameManager.gameManager.PlayerDataPool.MasterInfo.MasterSkillList;

        //当前个人已经激活的技能
        List <int> ownSkillList = new List <int>();

        OwnSkillData[] InfoArry = GameManager.gameManager.PlayerDataPool.OwnSkillInfo;
        for (int i = 0; i < InfoArry.Length; i++)
        {
            OwnSkillData info = InfoArry[i];
            if (info.SkillId >= 0)
            {
                ownSkillList.Add(info.SkillId);
            }
        }

        //显示技能信息
        for (int index = 0; index < SKILL_NUM && index < totalSkillList.Count; index++)
        {
            int skillid = totalSkillList[index];
            //技能是否合法
            Tab_SkillEx lineSkillEx = TableManager.GetSkillExByID(skillid, 0);
            if (lineSkillEx == null)
            {
                continue;
            }
            Tab_SkillBase lineSkillBase = TableManager.GetSkillBaseByID(lineSkillEx.BaseId, 0);
            if (lineSkillBase == null)
            {
                continue;
            }

            if (masterSkillList.ContainsKey(skillid))
            {
                //师门已经学习的技能
                int sameBaseSkillId = GetSameBaseSkill(ownSkillList, skillid);
                if (sameBaseSkillId >= 0)
                {
                    //个人已经激活的技能
                    m_SkillID[index]     = sameBaseSkillId;
                    m_SkillActive[index] = true;
                    m_SkillOwn[index]    = true;

                    m_SkillSprite[index].spriteName = lineSkillBase.Icon;
                    m_SkillName[index].text         = masterSkillList[skillid];
                }
                else
                {
                    //个人未激活的技能
                    m_SkillID[index]     = skillid;
                    m_SkillActive[index] = true;
                    m_SkillOwn[index]    = false;

                    m_SkillSprite[index].spriteName = lineSkillBase.Icon;
                    m_SkillName[index].text         = masterSkillList[skillid];
                }
            }
            else
            {
                int sameBaseSkillId = GetSameBaseSkill(ownSkillList, skillid);
                if (sameBaseSkillId >= 0)
                {
                    m_SkillID[index]  = sameBaseSkillId;
                    m_SkillOwn[index] = true;
                }
                else
                {
                    m_SkillID[index]  = skillid;
                    m_SkillOwn[index] = false;
                }
                //师门未学习的技能
                m_SkillActive[index] = false;

                m_SkillSprite[index].spriteName = lineSkillBase.Icon;
                //m_SkillName[index].text = "未学习";
                m_SkillName[index].text = StrDictionary.GetClientDictionaryString("#{2795}");
            }
        }
        //隐藏按钮
        m_SkillLearnBtn.gameObject.SetActive(false);
        m_SkillActiveBtn.gameObject.SetActive(false);
        m_SkillForgetBtn.gameObject.SetActive(false);
        m_SkillNameInputObject.gameObject.SetActive(false);

        //默认选中技能
        OnClickSkill((m_CurSelectSkillIndex >= 0) ? m_CurSelectSkillIndex : 0);
    }
Exemplo n.º 30
0
        public void SkillFinsh()
        {
            if (m_nLastSkillId == -1 || m_bIsUsingSkill == false)
            {
                return;
            }
            //清除数据
            m_bIsUsingSkill     = false;
            m_fLastUseSkillTime = 0;
            m_nLastSkillId      = -1;
            if (m_UsingSkillBaseInfo == null || m_UsingSkillExInfo == null || m_SkillSender == null)
            {
                return;
            }

            m_SkillSender.EnableMovingRotation(true);

            if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER ||
                m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
            {
                Obj_OtherPlayer player = m_SkillSender as Obj_OtherPlayer;
                if (null != player)
                {
                    player.UpdateVisualAfterSkill();
                }

                if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.CrashMove) != 0)
                {
                    Obj_MainPlayer _mainPlayer = (Obj_MainPlayer)player;
                    _mainPlayer.IsFirstUseCrash = false;
                }
            }

            ////XP 阳关三叠 放完 恢复之前的视角
            //if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.XP) != 0 ||
            //     m_UsingSkillBaseInfo.Id == (int)SKILLBASEID.YGSDID)
            //{
            //    CameraController camController = Singleton<ObjManager>.GetInstance().MainPlayer.GetComponent<CameraController>();
            //    if (camController != null)
            //    {
            //        if (m_OldCameraScan !=-1)
            //        {
            //            camController.m_Scale = m_OldCameraScan;
            //        }
            //    }
            //}
            for (int i = 0; i < m_UsingSkillBaseInfo.getIsNeedStopEffectIdCount(); i++)
            {
                int nIsNeedStopEffectId = m_UsingSkillBaseInfo.GetIsNeedStopEffectIdbyIndex(i);
                //如果需要在技能结束的时候 停止对应的特效 则停止
                if (nIsNeedStopEffectId != -1)
                {
                    m_SkillSender.StopEffect(nIsNeedStopEffectId);
                }
            }

            if (m_SkillSender.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
            {
                Obj_MainPlayer player = m_SkillSender as Obj_MainPlayer;
                if (null != player)
                {
                    player.SyncPosToServer(true);
                }
                if ((m_UsingSkillBaseInfo.SkillClass & (int)SKILLCLASS.XP) != 0 && SkillBarLogic.Instance() != null)
                {
                    //SkillBarLogic.Instance().TransformCon.End();
                }

                if (SkillBarLogic.Instance() != null)
                {
                    SkillBarLogic.Instance().SetAttackBarCanUseNext(true);
                }
            }

            //清除数据
            m_UsingSkillBaseInfo = null;
            m_UsingSkillExInfo   = null;
            m_SkillSender        = null;
        }