public override void Start()
 {
     base.Start();
     if (m_nTargetID == 0)
     {
         CameraManager.Instance.LookPos(m_TargetPos, CameraMoveOver, m_fDuration);
     }
     if (m_nTargetID < 0)
     {
         if (null != Singleton <ObjManager> .GetInstance().MainPlayer)
         {
             CameraManager.Instance.LookTarget(Singleton <ObjManager> .GetInstance().MainPlayer, CameraMoveOver, m_fDuration);
         }
         else
         {
             Finish();
         }
     }
     if (m_nTargetID > 0)
     {
         Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(m_nTargetID, 0);
         if (null != RoleBase)
         {
             Obj_Character targetCharacter = ObjManager.Instance.FindObjCharacterInSceneByName(RoleBase.Name, true, 20);
             if (null != targetCharacter)
             {
                 CameraManager.Instance.LookTarget(targetCharacter, CameraMoveOver, m_fDuration);
             }
         }
     }
 }
 /// <summary>
 /// 添加模型固有特效
 /// </summary>
 public static void AddCharModelEffects(Obj_Character obj, EEffectBindTargetType type = EEffectBindTargetType.TYPE_CHARACTER)
 {
     if (obj == null)
     {
         LogModule.ErrorLog("AddCharModelEffects called but parameter obj is null!");
         return;
     }
     if (type == EEffectBindTargetType.TYPE_CHARACTER)
     {
         Tab_CharModel table = TableManager.GetCharModelByID(obj.ModelID, 0);
         if (table != null)
         {
             int totalEffectCountOnModel = table.getEffectIdCount();
             int tmpValue;
             for (int i = 0; i < totalEffectCountOnModel; i++)
             {
                 tmpValue = table.GetEffectIdbyIndex(i);
                 if (tmpValue >= 0)
                 {
                     obj.PlayEffect(tmpValue);
                 }
             }
         }
     }
 }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_PLAY_EFFECT packet = (GC_PLAY_EFFECT)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }

            Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjID);

            if (null != _objChar)
            {
                _objChar.PlayEffect(packet.EffectID);

                if (packet.HasStartMotionID && packet.StartMotionID != GlobeVar.INVALID_ID && packet.StartMotionID == (int)CharacterDefine.CharacterAnimId.DizzyId && _objChar.AnimLogic != null)
                {
                    _objChar.InDizzy         = true;
                    _objChar.CurObjAnimState = Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_NORMOR;
                }

                //是否需要播放附加动作
                if (packet.HasStartMotionID && _objChar.AnimLogic != null)
                {
                    _objChar.AnimLogic.Stop();
                    _objChar.AnimLogic.Play(packet.StartMotionID);
                }
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #4
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_REMOVEEFFECT packet = (GC_REMOVEEFFECT)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjId);

            if (_objChar)
            {
                if (_objChar.ObjEffectController != null)
                {
                    _objChar.ObjEffectController.StopEffect(packet.EffectId);
                }

                if (packet.HasStartMotionID && packet.StartMotionID != GlobeVar.INVALID_ID && packet.StartMotionID == (int)CharacterDefine.CharacterAnimId.DizzyId && _objChar.AnimLogic != null)
                {
                    _objChar.InDizzy = false;
                    _objChar.AnimLogic.Stop();
                }
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_SKILL_FINISH packet = (GC_SKILL_FINISH )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic

            int _objId = packet.ObjId;

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

            if (Sender == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            SkillCore _skillCore = Sender.SkillCore;

            if (_skillCore == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            if (packet.FinsjType == (int)SKILLFINISHREASON.BREAK)
            {
                _skillCore.BreakCurSkill();
            }
            else if (packet.FinsjType == (int)SKILLFINISHREASON.FINISH)
            {
                _skillCore.SkillFinsh();
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_MOUNT_DATA packet = (GC_MOUNT_DATA )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            int nObjServerID = packet.ObjServerID;
            int nMountID     = packet.MountID;

            int EnterSceneServerID = GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterSceneServerID;

            // Çг¡¾°»º´æ
            if (EnterSceneServerID == nObjServerID)
            {
                GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterSceneMountID = nMountID;
            }
            else
            {
                Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(nObjServerID);

                if (obj)
                {
                    if (obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER ||
                        obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER)
                    {
                        Obj_OtherPlayer Player = obj as Obj_OtherPlayer;
                        Player.ShowRideOnEffect = true;
                        Player.RideOrUnMount(nMountID);
                    }

                    else
                    {
                        if (nMountID == GlobeVar.INVALID_ID)
                        {
                            Obj_MainPlayer main = Singleton <ObjManager> .Instance.MainPlayer;
                            if (main != null)
                            {
                                main.RideOrUnMount(nMountID);
                            }
                        }
                    }
                }
                else
                {
                    if (nMountID == GlobeVar.INVALID_ID)
                    {
                        Obj_MainPlayer main = Singleton <ObjManager> .Instance.MainPlayer;
                        if (main != null)
                        {
                            main.RideOrUnMount(nMountID);
                        }
                    }
                }
            }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #7
0
    void Start()
    {
        if (m_BindObj != null)
        {
            Obj_OtherPlayer objOtherPlayer = m_BindObj.GetComponent <Obj_OtherPlayer>();
            if (null != objOtherPlayer)
            {
                // 关于直接创建坐骑上的玩家的名字板高度修正 应该也会执行一次Obj_Mount的RideMount 相当于设置了两次高度 没什么大影响 暂时不删除此处
                m_fDeltaHeight = objOtherPlayer.DeltaHeight + objOtherPlayer.GetMountNameBoardHeight();
            }
            else
            {
                Obj_Character objCharacter = m_BindObj.GetComponent <Obj_Character>();
                if (null != objCharacter)
                {
                    m_fDeltaHeight = objCharacter.DeltaHeight;
                }
            }

            m_Position     = new Vector3(0, m_fDeltaHeight, 0);
            m_BindObjTrans = m_BindObj.transform;
        }

        m_Transform = transform;
    }
Exemple #8
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_USE_LIGHT_SKILL packet = (GC_USE_LIGHT_SKILL)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }

            //首先检查场景是否一致
            if (GameManager.gameManager.RunningScene != packet.SceneId)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            //再找到该玩家
            Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjId);

            if (null != obj)
            {
                Vector3 dstPos = new Vector3((float)packet.DstPosX / 100, 0.0f, (float)packet.DstPosZ / 100);
                obj.PlayLightSkill(dstPos, packet.Step);
            }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #9
0
    public void Awake()
    {
        //m_posList = new List<AutoMovePos>();

        //必须是Obj_Character才有效
        m_BindObj = gameObject.GetComponent <Obj_Character>();
    }
Exemple #10
0
    void Update()
    {
        if (null == m_ObjTransform || null == m_ObjTransform.parent)
        {
            return;
        }

        Vector3       targetPos;
        Obj_Character Target = Singleton <ObjManager> .Instance.FindObjCharacterInScene(m_targetID);

        if (null == Target)
        {
            FXController curController = m_ObjTransform.parent.GetComponent <FXController>();
            if (null != curController)
            {
                curController.Stop();
            }

            return;
        }

        targetPos    = Target.transform.position;
        targetPos.y += Height;
        LightingParent.localScale = new Vector3(1, 1, (targetPos - m_ObjTransform.position).magnitude / OrgLength);
        transform.LookAt(targetPos);
    }
Exemple #11
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_UPDATE_ANIMATION_STATE packet = (GC_UPDATE_ANIMATION_STATE )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic

            Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjId);

            if (_objChar == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            //NPC受击动作单独处理
            if (_objChar.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC && _objChar.CurObjAnimState == Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HIT)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            _objChar.CurObjAnimState = (Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE)(packet.AnimationState);
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override void Start()
        {
            base.Start();
            if (m_nTargetID != -1)
            {
                // 暂时试试以RoleBaseAttr中的名字来取得Obj
                Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(m_nTargetID, 0);
                if (null != RoleBase)
                {
                    Obj_Character character = ObjManager.Instance.FindObjCharacterInSceneByName(RoleBase.Name, true, 20);
                    if (null != character)
                    {
                        Animation animComp = character.AnimLogic.GetAnimation();
                        if (null != animComp)
                        {
                            // 有些动作竟然会跳出屏幕,这还怎么玩?
                            animComp.cullingType = AnimationCullingType.AlwaysAnimate;
                            character.AnimLogic.Play(m_nAnimID, AnimFinishCallback);
                        }
                        else
                        {
                            Finish();
                        }
                    }
                    else
                    {
                        Finish();
                    }
                }
                else
                {
                    Finish();
                }
            }
            else
            {
                Obj_Character character = Singleton <ObjManager> .GetInstance().MainPlayer;

                if (null != character)
                {
                    Animation animComp = character.AnimLogic.GetAnimation();
                    if (null != animComp)
                    {
                        animComp.cullingType = AnimationCullingType.AlwaysAnimate;
                        character.AnimLogic.Play(m_nAnimID, AnimFinishCallback);
                        m_bIsPlayingMainPlayerAnim = true;
                    }
                    else
                    {
                        Finish();
                    }
                }
                else
                {
                    Finish();
                }
            }
        }
Exemple #13
0
    static void OnLoadHeadInfo(GameObject resObj, object parent, object fun)
    {
        if (null != resObj)
        {
            if (null != GameManager.gameManager.ActiveScene.NameBoardRoot)
            {
                resObj.transform.parent = GameManager.gameManager.ActiveScene.NameBoardRoot.transform;
            }

            resObj.transform.localPosition = Vector3.zero;
            resObj.transform.localRotation = Quaternion.LookRotation(Vector3.forward);
            BillBoard billboard = resObj.GetComponent <BillBoard>();
            if (null == billboard)
            {
                billboard = resObj.AddComponent <BillBoard>();
                if (null != billboard)
                {
                    billboard.BindObj = parent as GameObject;
                }
            }
            else
            {
                billboard.BindObj = parent as GameObject;
                billboard.enabled = true;
            }

            //由于会复用,所以需要重新设置名字版的高度修正
            if (null != billboard && null != billboard.BindObj)
            {
                Obj_OtherPlayer objOtherPlayer = billboard.BindObj.GetComponent <Obj_OtherPlayer>();
                if (null != objOtherPlayer)
                {
                    billboard.fDeltaHeight = objOtherPlayer.DeltaHeight + objOtherPlayer.GetMountNameBoardHeight();
                }
                else
                {
                    Obj_Character objCharacter = billboard.BindObj.GetComponent <Obj_Character>();
                    if (null != objCharacter)
                    {
                        billboard.fDeltaHeight = objCharacter.DeltaHeight;
                    }
                }
            }

            LoadHeadInfoDelegate delFun = fun as LoadHeadInfoDelegate;
            if (null != delFun)
            {
                delFun(resObj);
            }
        }
        else
        {
            LogModule.ErrorLog("load headinfo fail");
        }
    }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_SYNC_ACTIVETITLE packet = (GC_SYNC_ACTIVETITLE )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            if (packet.Serverid != Singleton <ObjManager> .GetInstance().MainPlayer.ServerID)
            {
                Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.Serverid);

                if (obj != null)
                {
                    if (obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER ||
                        obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER)
                    {
                        Obj_OtherPlayer objOtherPlayer = (Obj_OtherPlayer)obj;
                        if (objOtherPlayer != null)
                        {
                            Tab_TitleData tabTitleData = TableManager.GetTitleDataByID(packet.Titleid, 0);
                            if (tabTitleData != null)
                            {
                                string strTitle = Utils.GetTitleColor(tabTitleData.ColorLevel);
                                if (tabTitleData.Type >= (int)USERDEF_SUBTYPE.TITLE_DEFTYPE_NUM)
                                {
                                    // 系统称号
                                    strTitle += tabTitleData.InvestitiveName;
                                }
                                else if ((int)USERDEF_SUBTYPE.TITLE_DEFTYPE_INVALID < tabTitleData.Type && tabTitleData.Type < (int)USERDEF_SUBTYPE.TITLE_DEFTYPE_NUM)
                                {
                                    // 自定义称号
                                    if (packet.HasTitlename)
                                    {
                                        strTitle += packet.Titlename;
                                    }
                                }
                                objOtherPlayer.CurTitleID          = packet.Titleid;
                                objOtherPlayer.StrTitleInvestitive = strTitle;
                                objOtherPlayer.ShowTitleInvestitive();
                            }
                            else
                            {
                                objOtherPlayer.CurTitleID          = GlobeVar.INVALID_ID;
                                objOtherPlayer.StrTitleInvestitive = "";
                                objOtherPlayer.ShowTitleInvestitive();
                            }
                        }
                    }
                }
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #15
0
 public void RecoverHeight()
 {
     if (m_BindObj != null)
     {
         Obj_Character objChar = m_BindObj.GetComponent <Obj_Character>();
         if (null != objChar)
         {
             fDeltaHeight = objChar.DeltaHeight;
         }
     }
 }
Exemple #16
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);
            }
        }
 bool IsGuildBossNpc(Obj_Character targetObj)
 {
     if (targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
     {
         Obj_NPC rNpc = targetObj as Obj_NPC;
         if (rNpc != null)
         {
             return(rNpc.IsGuildActivityBoss);
         }
     }
     return(false);
 }
Exemple #18
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_TELEMOVE packet = (GC_TELEMOVE )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjId);

            if (_objChar == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }
            Vector3 targetPos = new Vector3(packet.TargetPosX / 100.0f, 0, packet.TargetPosZ / 100.0f);

            targetPos = ActiveScene.GetTerrainPosition(targetPos);
            //如果_objChar为轻功状态,则打断轻功
            if (_objChar.IsLightState)
            {
                //_objChar.EndLightSkillMove();
                _objChar.BeginTeleMoveInLight(targetPos);
            }
            //是否需要改变朝向
            if (packet.NeedChangeFaceto == 1)
            {
                _objChar.FaceTo(targetPos);
            }
            else
            {
                _objChar.IsMoveToNoFaceTo = true;
            }
            AutoMove autoMove = _objChar.AutoMoveComponent;

            if (autoMove != null)
            {
                autoMove.ResetAutoMove();
            }
            //向目标点移动
            _objChar.MoveTo(targetPos, null, 0);
            //是否需要播放附加动作
            if (packet.HasAnimaId && _objChar.AnimLogic != null)
            {
                _objChar.AnimLogic.Stop();
                _objChar.AnimLogic.Play(packet.AnimaId);
                //现在这里播放击退效果 todo临时的
                _objChar.PlayEffect(121);
            }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemple #19
0
    public void PlayMountPlayerAnima(CharacterDefine.MountAction value, Obj_Character obj)
    {
        int realAniID = GetMountAnimation(value, obj);

        if (realAniID < 0)
        {
            return;
        }
        if (m_MountPlayer && m_MountPlayer.AnimLogic)
        {
            m_MountPlayer.AnimLogic.Play(realAniID);
        }
    }
        //将模型变成变身状态下
        public static void ChangeOtherPLayerObjToChangeModel(int nCharmodelID, Obj_Character otherPlayer)
        {
            Tab_CharModel charModel = TableManager.GetCharModelByID(nCharmodelID, 0);

            if (charModel == null)
            {
                LogModule.ErrorLog("Tab_CharModel is null == " + nCharmodelID);
                return;
            }
            otherPlayer.AnimationFilePath = charModel.AnimPath;
            otherPlayer.ModelID           = nCharmodelID;
            LoadModelToRoot(nCharmodelID, EResourceType.CharacterModel,
                            LoadModelComplete, otherPlayer.gameObject, charModel, true);
        }
Exemple #21
0
        /// <summary>
        /// 获取最近的NPC并接近和他对话
        /// </summary>
        private void getNPC()
        {
            Obj_NPC        TargetNpc   = null;
            List <Obj_NPC> npcList     = new List <Obj_NPC>();
            float          minDistance = float.PositiveInfinity;
            Vector3        mainPlayerPos;

            mainPlayerPos = Singleton <ObjManager> .GetInstance().MainPlayer.Position;

            foreach (string strName in Singleton <ObjManager> .GetInstance().ObjPools.Keys)
            {//遍历场景中的npc
                Obj_Character objChar = Singleton <ObjManager> .GetInstance().ObjPools[strName] as Obj_Character;

                if (null == objChar)
                {
                    continue;
                }
                TargetNpc = objChar as Obj_NPC;
                if (TargetNpc == null)
                {
                    continue;
                }
                if (Reputation.IsFriend(TargetNpc))
                {//如果是友好NPC则添加进npc列表
                    npcList.Add(TargetNpc);
                }
            }
            for (int i = 0; i < npcList.Count; i++)
            {//比较距离,得到最近的那个npc
                float curDistance = Vector3.Distance(mainPlayerPos, npcList[i].Position);
                if (curDistance < minDistance)
                {
                    minDistance = curDistance;
                    TargetNpc   = npcList[i];
                }
            }

            if (TargetNpc == null)
            {
                return;
            }

            if (null != Singleton <ObjManager> .GetInstance().MainPlayer)
            {
                Singleton <ObjManager> .GetInstance().MainPlayer.SelectTarget = TargetNpc;

                Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(TargetNpc.gameObject);
            }
        }
Exemple #22
0
    // Update is called once per frame
    void Update()
    {
        if (mTrans == null || null == mFxController)
        {
            return;
        }
//        Obj_Character Target = Singleton<ObjManager>.Instance.FindObjCharacterInScene(m_targetID);

        m_targetGetTimer -= Time.deltaTime;

        if (null == mTargetTrans || m_targetGetTimer <= 0)
        {
            Obj_Character objTarget = Singleton <ObjManager> .Instance.FindObjCharacterInScene(m_targetID);

            if (objTarget == null)
            {
                mFxController.Stop();
                return;
            }
            else
            {
                mTargetTrans = objTarget.transform;

                m_targetGetTimer = 0.3f;
            }
        }

        Vector3 m_targetTransPos = mTargetTrans.position;

        m_targetTransPos.y = mTrans.position.y;
        m_dir            = (m_targetTransPos - mTrans.position).normalized;
        mTrans.position += m_dir * m_speed * Time.deltaTime;

        mTrans.LookAt(m_targetTransPos);

        float sqDist = (m_targetTransPos.z - mTrans.position.z) * (m_targetTransPos.z - mTrans.position.z) +
                       (m_targetTransPos.y - mTrans.position.y) * (m_targetTransPos.y - mTrans.position.y) +
                       (m_targetTransPos.x - mTrans.position.x) * (m_targetTransPos.x - mTrans.position.x);


        if (sqDist < minDistance * minDistance)
        {
            if (mFxController != null)
            {
                mFxController.Stop();
            }
        }
    }
    // 寻路找怪处理
    void FindEnamyTick()
    {
        if (m_bNotEnamyNpcFlag != 0)
        {
            return;
        }
        //如果有目标名字则寻找该目标,进行交互
        if (m_Path.AutoSearchTargetName != "")
        {
            Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName);

            if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
            {
                Obj_NPC objNpc = obj as Obj_NPC;
                //根据目标NPC的势力确认是对话还是攻击
                if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc))
                {
                    Singleton <ObjManager> .GetInstance().MainPlayer.StopMove();

                    m_Path.AutoSearchPosCache.Clear();
                    m_Path.ResetPath();
                    IsAutoSearching = false;
                    m_EndPointCache.Clean();

                    //如果是地方NPC,则开始攻击
                    Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject);

                    Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>());

                    m_bNotEnamyNpcFlag = 1;

                    // 杀怪任务寻路结束,如果没在自动战斗状态,则进入自动战斗
                    Obj_MainPlayer mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                    if (null != mainPlayer && !mainPlayer.GetAutoCombatState() && Singleton <ObjManager> .Instance.MainPlayer.IsOpenCabalAuto)
                    {
                        mainPlayer.EnterAutoCombat();
                        GameManager.gameManager.MissionManager.MissionAutoCombat = true;
                    }
                }
                else
                {
                    m_bNotEnamyNpcFlag = 2;
                    return;
                }
            }
        }
    }
Exemple #24
0
    public void InitData(int sendId, int targetId)
    {
        mTrans = transform;
        if (null == mTrans.parent)
        {
            mFxController = null;
            return;
        }
        else
        {
            mFxController = mTrans.parent.GetComponent <FXController>();
        }

        if (null == mFxController)
        {
            return;
        }

        Obj_Character Sender = Singleton <ObjManager> .Instance.FindObjCharacterInScene(sendId);

        Obj_Character Target = Singleton <ObjManager> .Instance.FindObjCharacterInScene(targetId);

        if (null == Sender || null == Target)
        {
            mFxController.Stop();
            return;
        }

        m_startPos      = Sender.transform.position;
        m_startPos.y   += startHeight;
        mTrans.position = m_startPos;

        m_targetPos    = Target.transform.position;
        m_targetPos.y += startHeight;
        m_dir          = (m_targetPos - m_startPos);
        if (m_duration > 0)
        {
            m_speed = m_dir.magnitude / m_duration;
        }
        m_dir.Normalize();

        m_targetID = targetId;



        m_targetGetTimer = 0;
    }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_FORCE_SETPOS packet = (GC_FORCE_SETPOS )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic

            Obj obj = Singleton <ObjManager> .Instance.FindObjInScene(packet.ServerID);

            if (obj != null)
            {
                if (obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER ||
                    obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER ||
                    obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER ||
                    obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_FELLOW ||
                    obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
                {
                    Obj_Character objChar = obj as Obj_Character;
                    Vector3       vec     = new Vector3((float)packet.PosX / 100, 0, (float)packet.PosZ / 100);

                    if (objChar.NavAgent != null)
                    {
                        UnityEngine.GameObject.DestroyImmediate(objChar.NavAgent);
                    }
                    objChar.Position = ActiveScene.GetTerrainPosition(vec);
                    if (objChar.NavAgent == null)
                    {
                        objChar.InitNavAgent();
                    }

                    if (obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER &&
                        JtddSceneControl.Instance() != null &&
                        GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FB_CABALINTRO)
                    {
                        JtddSceneControl.Instance().GotoNextScene();
                        GameManager.gameManager.SoundManager.PlayBGMusic(180, 0.5f, 0.5f);
                        Cutscene.CutsceneManager.Instance.CloseSyncPos = false;
                    }
                }
            }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_DELETE_OBJ packet = (GC_DELETE_OBJ)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }

            int serverId = packet.ServerId;

            if (serverId < 0)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            Obj obj = Singleton <ObjManager> .GetInstance().FindObjInScene(serverId);

            if (null != obj)
            {
                //如果删除的目标为选择框目标,则取消选择框
                if (obj.gameObject == GameManager.gameManager.ActiveScene.SelectObj)
                {
                    GameManager.gameManager.ActiveScene.DeactiveSelectCircle();
                }

                //如果删除的目标为当前头像,则取消
                if (null != Singleton <ObjManager> .GetInstance().MainPlayer&&
                    Singleton <ObjManager> .GetInstance().MainPlayer.SelectTarget == obj)
                {
                    Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(null);
                }

                //清除身上的绑定,防止显示错乱
                Obj_Character charobj = obj as Obj_Character;
                if (charobj != null)
                {
                    charobj.BindParent = -1;
                    List <int> emptylist = new List <int>();
                    charobj.UpdateBindChildren(emptylist);
                }
            }
            Singleton <ObjManager> .GetInstance().RemoveObj(serverId);

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
    void SwitchHpInfo(Obj_Character obj)
    {
        if (obj == null)
        {
            return;
        }
        bool bNormal = true;

        if (obj.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
        {
            Obj_NPC npcObj = obj as Obj_NPC;
            if (null != npcObj)
            {
                if (npcObj.NpcType == GameDefine_Globe.NPC_TYPE.BOSS)
                {
                    bNormal = false;
                }
            }
        }
        if (bNormal)
        {
            m_NormalHPInfo.SetActive(true);
            m_BossHPInfo.SetActive(false);

            m_HpInfo.m_TargetHPSprite      = m_NormalHPSprite;
            m_HpInfo.m_TargetHPBakSprite   = m_NormalHPBakSprite;
            m_HpInfo.m_TargetHPText        = m_NormalHPText;
            m_HpInfo.m_TargetHpCount       = m_NormalHpCount;
            m_HpInfo.m_TargetHPotherSprite = null;

            m_HpInfo.m_TargetHpCount.gameObject.SetActive(true);
        }
        else
        {
            m_NormalHPInfo.SetActive(false);
            m_BossHPInfo.SetActive(true);

            m_HpInfo.m_TargetHPSprite      = m_BossHPSprite;
            m_HpInfo.m_TargetHPBakSprite   = m_BossHPBakSprite;
            m_HpInfo.m_TargetHPText        = m_BossHPText;
            m_HpInfo.m_TargetHpCount       = m_BossHpCount;
            m_HpInfo.m_TargetHPotherSprite = m_BossHPOtherSprite;

            m_HpInfo.m_TargetHpCount.gameObject.SetActive(false);
        }
    }
Exemple #28
0
    //////////////////////////////////////////////////////////////////////////
    //对话相关接口
    //////////////////////////////////////////////////////////////////////////
    // 弹出最近对话框 --寻路完响应
    public void AutoDialog(int nMissionID)
    {
        Tab_MissionBase MissionBase = TableManager.GetMissionBaseByID(nMissionID, 0);

        if (MissionBase == null)
        {
            LogModule.ErrorLog("Can not find missionBase {0}", nMissionID);
            return;
        }

        Obj_NPC TargetNpc = null;

        foreach (string strName in Singleton <ObjManager> .GetInstance().ObjPools.Keys)
        {
            Obj_Character objChar = Singleton <ObjManager> .GetInstance().ObjPools[strName] as Obj_Character;

            if (null == objChar)
            {
                return;
            }

            if (objChar.BaseAttr.RoleBaseID == MissionBase.AcceptDataID ||
                objChar.BaseAttr.RoleBaseID == MissionBase.CompleteDataID)
            {
                TargetNpc = objChar as Obj_NPC;
                break;
            }
        }
        if (TargetNpc == null)
        {
            LogModule.ErrorLog("Can not find TargetNPC of ID: {0} or {1}", MissionBase.AcceptDataID, MissionBase.CompleteDataID);
            return;
        }

        if (null != Singleton <ObjManager> .GetInstance().MainPlayer)
        {
            Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(TargetNpc.gameObject);
        }
        if (!TargetNpc.IsHaveMission(nMissionID))
        {
            LogModule.ErrorLog("Do not have mission {0}", nMissionID);
            return;
        }

        Show(TargetNpc);
    }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_RET_SELOBJ_INFO packet = (GC_RET_SELOBJ_INFO )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
//            int nObjId = packet.ObjId;
            int            nSelObjId   = packet.SeleobjId;
            Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

            if (_mainPlayer == null)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            Obj_Character selObj = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(nSelObjId);

            if (selObj)
            {
                _mainPlayer.SelectTarget = selObj;
            }
            else
            {
                _mainPlayer.SelectTarget = null;
            }
            //更新选择目标头像
            _mainPlayer.UpdateTargetFrame(selObj);
            //如果选择的目标在播放技能范围的特效 切换目标时得 修改特效播放的对象
            if (_mainPlayer.CurPressSkillId != -1 && _mainPlayer.SelectTarget)
            {
                Tab_SkillEx _skillEx = TableManager.GetSkillExByID(_mainPlayer.CurPressSkillId, 0);
                if (_skillEx != null)
                {
                    if (_skillEx.RangeEffectType != -1 && _skillEx.RangeEffectTarType == (int)SKILLRANGEEFFECTTAR.SELECTTARGET)
                    {
                        _mainPlayer.SelectTarget.PlaySkillRangeEffect();
                    }
                }
            }

            //enter your logic
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_SYNC_FLY_ANIMATION_STATE packet = (GC_SYNC_FLY_ANIMATION_STATE)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(packet.ObjID);

            if (_objChar != null)
            {
                _objChar._FlyStateData = new Obj_Character.FlyStateData(packet.RemainTime, packet.AnimaId, Time.time);
                _objChar._FlyStateData.SetNstartAnimationTime(_objChar.GetCurFlyStartAnimTime(_objChar._FlyStateData.nStartAnimationId));
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }