Esempio n. 1
0
        /// <summary>
        /// 请求重连消息
        /// </summary>
        private void ReqReconnect()
        {
            byte state = (byte)MapMgr.Instance.CurMapType;

            if (state < 0 || state > 2)
            {
                LogMgr.UnityError(string.Format("filtered map state:{0}", state));

                return;
            }

            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_OBJ_CLEAR, null);

            return;

            /*
             * MsgData_cReconnect data = new MsgData_cReconnect();
             * data.Account = Account.Instance.AccountIDBytes;
             * data.Cookie = Account.Instance.Cookie;
             * data.Status = (sbyte)state;
             * data.ServerID = Account.Instance.ServerId;
             *
             * CoreEntry.netMgr.send((Int16)NetMsgDef.C_RECONNECT, data);
             */
        }
Esempio n. 2
0
        // Use this for initialization
        void Start()
        {
            if (m_beginEfxPrefab != null && m_holdEfxPrefab != null && m_overEfxPrefab != null)
            {
                m_beginEfxObj = Instantiate(m_beginEfxPrefab) as GameObject;
                if (m_beginEfxObj != null)
                {
                    m_beginEfxObj.transform.position      = this.transform.position;
                    m_beginEfxObj.transform.localRotation = this.transform.localRotation;
                }
                else
                {
                    LogMgr.UnityError("beginEfxObj create failed!");
                }

                m_holdEfxObj = Instantiate(m_holdEfxPrefab) as GameObject;
                if (m_holdEfxObj != null)
                {
                    m_holdEfxObj.transform.position      = this.transform.position;
                    m_holdEfxObj.transform.localRotation = this.transform.localRotation;
                    //yy
                    m_holdEfxObj.AddComponent <DetailObject>();
                    m_holdEfxObj.SetActive(false);
                }
                else
                {
                    LogMgr.UnityError("holdEfxObj create failed!");
                }


                m_overEfxObj = Instantiate(m_overEfxPrefab) as GameObject;
                if (m_overEfxObj != null)
                {
                    m_overEfxObj.transform.position      = this.transform.position;
                    m_overEfxObj.transform.localRotation = this.transform.localRotation;
                    m_overEfxObj.SetActive(false);
                }
                else
                {
                    LogMgr.UnityError("overEfxObj create failed!");
                }


                Close();
            }

            GameObject obstacle = new GameObject();

            obstacle.name = "obstacle";
            NavMeshObstacle navObs = obstacle.AddComponent <NavMeshObstacle>();

            m_navObs                         = navObs;
            navObs.radius                    = 1.0f;
            navObs.carving                   = true;
            obstacle.transform.parent        = this.transform;
            obstacle.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
        }
Esempio n. 3
0
        public void PlayUISound(int id, GameObject obj = null)
        {
            if (!CoreEntry.cfg_bEaxToggle)
            {
                return;
            }

            if (id == 0)
            {
                return;
            }

            string path = GetAudioPath(id);

            if (path == null)
            {
                LogMgr.UnityError("无效音效ID:" + id);
                return;
            }

            AudioClip clip = (AudioClip)CoreEntry.gResLoader.Load(path, typeof(AudioClip));

            if (clip == null)
            {
                LogMgr.UnityError("音效配置错误 路径:" + path + "  id" + id);
                return;
            }

            AudioSource source = null;

            if (obj != null)
            {
                source = obj.GetComponent <AudioSource>();
            }
            else
            {
                source = GetComponent <AudioSource>();
            }
            if (source == null)
            {
                if (obj != null)
                {
                    source = obj.AddComponent <AudioSource>();
                }
                else
                {
                    source = gameObject.AddComponent <AudioSource>();
                }
                source.minDistance = 1.0f;
                source.maxDistance = 5000;
                source.rolloffMode = AudioRolloffMode.Linear;
                //source.transform.position = transform.position;
            }
            source.clip = clip;

            source.Play();
        }
Esempio n. 4
0
        private void LoadWeapon(Transform mainBody, int id, bool bDoubleWeapon)
        {
            Transform rTran = ActorObj.RecursiveFindChild(mainBody, "DM_R_Hand");

            if (null == rTran)
            {
                LogMgr.UnityError("no DM_R_Hand point!!!");

                return;
            }

            GameObject obj = SceneLoader.LoadModelObject(id);

            if (null == obj)
            {
                LogMgr.UnityError("no weapon:id " + id);

                return;
            }

            if (bDoubleWeapon)
            {
                Transform lTran = ActorObj.RecursiveFindChild(mainBody, "DM_L_Hand");
                if (null == lTran)
                {
                    LogMgr.UnityError("no DM_L_Hand point!!!");

                    return;
                }

                Transform lWeapon = obj.transform.Find("DM_L_wuqi01");
                Transform rWeapon = obj.transform.Find("DM_R_wuqi01");

                lWeapon.SetParent(lTran);
                lWeapon.localPosition = Vector3.zero;
                lWeapon.localScale    = Vector3.one;
                lWeapon.localRotation = Quaternion.identity;

                rWeapon.SetParent(rTran);
                rWeapon.localPosition = Vector3.zero;
                rWeapon.localScale    = Vector3.one;
                rWeapon.localRotation = Quaternion.identity;

                UnityEngine.Object.Destroy(obj);
            }
            else
            {
                obj.transform.SetParent(rTran);
                obj.transform.localPosition = Vector3.zero;
                obj.transform.localScale    = Vector3.one;
                obj.transform.localRotation = Quaternion.identity;
            }
        }
Esempio n. 5
0
        public IEnumerator _FastMoveToTarget(int cfgID)
        {
            ActorObj actorBase = CoreEntry.gActorMgr.GetActorByConfigID(cfgID);

            if (actorBase == null)
            {
                LogMgr.UnityError("找不到怪物ID:" + cfgID);
                yield break;
            }


            CameraFollow cameraFollow = null;

            if (null != MainCamera)
            {
                cameraFollow = MainCamera.GetComponent <CameraFollow>();
            }
            if (cameraFollow == null)
            {
                CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_TASK_Camera_end, null);
                yield break;
            }

            lastDistance = cameraFollow.m_distance;
            lastHeight   = cameraFollow.m_height;

            CoreEntry.gGameMgr.pauseGame();

            yield return(new WaitForSeconds(0.6f));


            //TweenAttr2.SetAttr fnSetHeight = new TweenAttr2.SetAttr(cameraFollow.SetHeight);
            //TweenAttr.SetAttr fnSetDistance = new TweenAttr.SetAttr(cameraFollow.SetDistance);

            float distance = cameraFollow.getDistance(actorBase.transform);

            if (distance < 10)
            {
                cameraSpeed = 4;
            }
            else if (distance < 20)
            {
                cameraSpeed = 6;
            }
            LogMgr.UnityLog("镜头速度调整为:" + cameraSpeed);

            //播放动作
            yield return(new WaitForSeconds(1.9f));

            //通知剧情, 镜头已经移动到目标
            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_TASK_Camera_Focus, null);
        }
Esempio n. 6
0
            protected override void Main()
            {
                LogMgr.UnityLog("NetMgr.SenderThread.Main: Begin");

                while (!IsTerminateFlagSet())
                {
                    bool       sleep  = false;
                    SendBuffer buffer = null;

                    lock (m_sendMsgs)
                    {
                        if (m_sendMsgs.Count > 0)
                        {
                            buffer = m_sendMsgs.Dequeue();
                        }
                        else
                        {
                            sleep = true;
                            //LogMgr.UnityError("======sendMsgs.Count ==0 =====");
                        }
                    }
                    if (buffer != null)
                    {
                        try
                        {
                            NetStream.Write(buffer.msg, 0, buffer.Length);
                            NetStream.Flush();
                        }
                        catch (IOException e)
                        {
                            LogMgr.UnityError("SenderThread, Message: " + e.Message);
                            LogMgr.UnityError("SenderThread, StackTrace: " + e.StackTrace);
                            LogMgr.UnityError("SenderThread, InnerException.Message: " + e.InnerException.Message);
                        }

                        lock (cacheSendMsgs)
                        {
                            cacheSendMsgs.Cache(buffer);
                        }
                    }

                    if (sleep)
                    {
                        Thread.Sleep(15);
                    }
                }

                LogMgr.UnityLog("NetMgr.SenderThread.Main: End");
            }
Esempio n. 7
0
        /*
         *  创建贴花
         */
        static WarningDecel Create(string DecelPerferb, Vector3 wordPositon)
        {
            GameObject go = (GameObject)Instantiate(CoreEntry.gResLoader.LoadResource(DecelPerferb));

            if (go)
            {
                WarningDecel wd = go.AddComponent <WarningDecel>(); //go.GetComponent<WarningDecel>() as WarningDecel;
                if (wd)
                {
                    wd.Init(wordPositon, ref go);
                }
                return(wd);
            }
            else
            {
                LogMgr.UnityError("[WarningDecal Create Failed]");
                return(null);
            }
        }
Esempio n. 8
0
        // Use this for initialization
        public static void SendEvent(string sEvtName)
        {
            List <UIOnEvent> eventList;

            if (g_UIOnEventDict.TryGetValue(sEvtName, out eventList))
            {
                for (int i = 0; i < eventList.Count; ++i)
                {
                    g_strEvent = sEvtName;
                    try
                    {
                        eventList[i]();
                    }
                    catch (System.Exception e)
                    {
                        LogMgr.UnityError(e.ToString());
                    }
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 本接口采集玩家在游戏内点击各个面板按钮的日志,配置表在MainPanelUIConfig.xlsx表的t_panelindex页签
        /// </summary>
        /// <param name="id">t_panelindex配置id</param>
        /// <param name="buttonIndex">各个面板里面子按钮的自定义编号</param>
        public void TrackGameOptLog(int id, int buttonIndex)
        {
            if (bSDK && mSKDType == 1)
            {
                LuaTable tb = ConfigManager.Instance.Common.GetPanelIndexConfig(id);
                if (null == tb)
                {
                    LogMgr.UnityError("no config found in t_panelindex with id=" + id);

                    return;
                }
                string   ic         = "TrackEvent";
                string   cat        = "Client";
                string   act        = "RolePanelOP";
                string   channel_id = XYSDK.Instance.getMasterID();
                string   app_id     = XYSDK.Instance.GetAppID();
                int      server_id  = SG.Account.Instance.ServerId;
                int      cserver_id = SG.Account.Instance.ServerId;
                string   user_id;
                LuaTable G = LuaMgr.Instance.GetLuaEnv().Global;
                user_id = "" + G.GetInPath <int>("ModelManager.LoginModel.userID");
                string          role_id    = PlayerData.Instance.RoleID.ToString();
                string          role_name  = WWW.EscapeURL("[" + Account.Instance.ServerId.ToString() + "]" + PlayerData.Instance.Name);
                string          client_ip  = Account.Instance.GetExtranetIPAddress(); //Network.player.externalIP.Equals("UNASSIGNED_SYSTEM_ADDRESS") ? Network.player.ipAddress : Network.player.externalIP;
                System.TimeSpan ts         = System.DateTime.UtcNow - new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
                long            lt         = (long)ts.TotalSeconds;
                string          event_time = lt.ToString();
                string          log_id     = Bundle.Md5Tool.Md5Sum(channel_id + app_id + server_id + "RolePanelOP" + event_time + user_id + role_id);
                int             button_tid = tb.Get <int>("index");
                int             button_id  = button_tid + buttonIndex;

                string url = string.Format("http://analytics.52xiyou.com/mo.json?ic={0}&cat={1}&act={2}&channel_id={3}&app_id={4}&server_id={5}&cserver_id={6}&user_id={7}&role_id={8}&role_name={9}&client_ip={10}&event_time={11}&log_id={12}&button_id={13}&button_tid={14}",
                                           ic, cat, act, channel_id, app_id, server_id, cserver_id,
                                           user_id, role_id, role_name, client_ip,
                                           event_time, log_id, button_id, button_tid);

                // LogMgr.Log("url: " + url);
                MonoInstance.Instance.StartCoroutine(HttpGet(url));
            }
        }
Esempio n. 10
0
        void ModifySceneProperties(LuaTable mapDesc)
        {
            //Debug.Break();
            if (mapDesc != null)
            {
                GameObject doorRoot = GameObject.Find("door");
                if (doorRoot != null)
                {
                    List <Door> doors = new List <Door>();

                    GameObject[] doorsObj = GameObject.FindGameObjectsWithTag("door"); //doorRoot.GetComponentsInChildren<Door>(true);
                    for (int i = 0; i < doorsObj.Length; ++i)
                    {
                        doors.Add(doorsObj[i].GetComponent <Door>());
                    }
                }
                else
                {
                    LogMgr.UnityError("can not find door or it is hidden");
                }
            }
        }
Esempio n. 11
0
        /// <summary>
        /// ��ʼ�����á�
        /// </summary>
        public void InitConfig()
        {
            LuaTable G = LuaMgr.Instance.GetLuaEnv().Global;

            m_ConstsCfg  = G.Get <Dictionary <int, LuaTable> >("t_consts");
            m_NameIDDict = new Dictionary <string, LuaTable>();
            foreach (var data in m_ConstsCfg)
            {
                LuaTable tbl        = data.Value;
                string   configName = tbl.Get <string>("name");
                if (!string.IsNullOrEmpty(configName))
                {
                    if (!m_NameIDDict.ContainsKey(configName))
                    {
                        m_NameIDDict.Add(configName, tbl);
                    }
                    else
                    {
                        LogMgr.UnityError("Config:t_consts: repeated name:" + configName);
                    }
                }
            }
        }
Esempio n. 12
0
        void Fire()
        {
            CancelInvoke("Fire");

            //屏震    不是主玩家 , 就不震屏幕
            if (m_skillBase != null && m_skillBase.m_actor != null && m_skillBase.m_actor.gameObject != null)
            {
                if (m_skillBase.m_actor.IsMainPlayer() || m_skillBase.m_actor.mActorType == ActorType.AT_BOSS)
                {
                    if (m_fireFlyAttackDesc.cameraShakeDesc != null)
                    {
                        //GameObject cellObj = (GameObject)Object.Instantiate(CoreEntry.gResLoader.LoadResource(m_fireFlyAttackDesc.cameraShakeDesc.prefabPath));//CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(m_fireFlyAttackDesc.cameraShakeDesc.prefabPath);
                        GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(m_fireFlyAttackDesc.cameraShakeDesc.prefabPath);
                        cellObj.transform.parent = transform;

                        ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                        skillCell.Init(m_fireFlyAttackDesc.cameraShakeDesc, m_skillBase);

                        m_skillBase.AddSkillCell(cellObj);
                    }
                }
            }

            //发射点位置
            Transform flyTransform = null;

            if (m_skillBase != null)
            {
                flyTransform = m_skillBase.FindChildTransform(m_fireFlyAttackDesc.firePos);
            }
            if (flyTransform == null)
            {
                LogMgr.UnityError("FireflyCell没有找到绑定点 \"" + m_fireFlyAttackDesc.firePos + "\"");
                return;
            }
            if (m_skillBase == null)
            {
                return;
            }
            // float diffAngle = 360f / m_fireFlyAttackDesc.bulletNum;
            float diffAngle = m_fireFlyAttackDesc.fAngle;

            for (int i = 0; i < m_fireFlyAttackDesc.bulletNum; ++i)
            {
                //加载子弹
                GameObject objBullet =
                    (GameObject)Instantiate(CoreEntry.gResLoader.LoadResource(m_fireFlyAttackDesc.bulletPrefab));
                if (objBullet == null)
                {
                    return;
                }

                objBullet.transform.position = flyTransform.position;

                Vector3 targetpos = new Vector3(0, 0, 0);

                // 下面这句有时候会造成弓箭兵 射出的箭向后飞,目标错乱
                //ActorObj actorObj = m_skillBase.m_actor.GetAttackObj();
                //if (actorObj == null)
                //    actorObj = m_skillBase.m_hateActor;

                ActorObj actorObj = m_skillBase.GetSelTarget();

                if (actorObj != null && m_fireFlyAttackDesc.bulletNum == 1)
                {
                    //单个目标,指向目标方向
                    //Vector3 aimPos = new Vector3(actorObj.thisGameObject.transform.position.x,
                    //    objBullet.transform.position.y, actorObj.thisGameObject.transform.position.z);

                    //aimPos = Vector3.Normalize(aimPos);

                    //objBullet.transform.LookAt(aimPos);

                    //Vector3 aimPos = new Vector3(actorObj.thisGameObject.transform.position.x,
                    //    objBullet.transform.position.y, actorObj.thisGameObject.transform.position.z);

                    Vector3 aimPos = new Vector3();
                    aimPos   = actorObj.thisGameObject.transform.position;
                    aimPos.y = actorObj.GetBehitEfxPosition().y;

                    Vector3 lookRot = aimPos - flyTransform.position;

                    // 穿透的子弹不需要考虑高度
                    if (m_fireFlyAttackDesc.bThroughFlag)
                    {
                        lookRot.y = 0;  // 设置为0时 高度不同时就打不到了
                    }
                    if (lookRot == Vector3.zero)
                    {
                        return;
                    }
                    lookRot.Normalize();
                    objBullet.transform.rotation = Quaternion.LookRotation(lookRot);

                    targetpos = aimPos;
                }
                else
                {
                    if (i == 0)
                    {
                        //朝向
                        Quaternion rot =
                            Quaternion.Euler(m_transform.rotation.eulerAngles.x,
                                             m_transform.rotation.eulerAngles.y + diffAngle * i, m_transform.rotation.eulerAngles.z);

                        objBullet.transform.rotation = rot;
                    }


                    if (i % 2 == 0)
                    {
                        //朝向
                        Quaternion rot =
                            Quaternion.Euler(m_transform.rotation.eulerAngles.x,
                                             m_transform.rotation.eulerAngles.y + diffAngle * (i + 1) * 0.5f, m_transform.rotation.eulerAngles.z);

                        objBullet.transform.rotation = rot;
                    }
                    else
                    {
                        //朝向
                        Quaternion rot =
                            Quaternion.Euler(m_transform.rotation.eulerAngles.x,
                                             m_transform.rotation.eulerAngles.y - diffAngle * (i + 1) * 0.5f, m_transform.rotation.eulerAngles.z);

                        objBullet.transform.rotation = rot;
                    }
                }

                // 弹弹乐
                TanTanLe tantan = objBullet.GetComponent <TanTanLe>();
                if (tantan != null)
                {
                    BulletParam param = new BulletParam();
                    param.flySpeed            = m_fireFlyAttackDesc.flySpeed;
                    param.flyTime             = m_fireFlyAttackDesc.flyTime;
                    param.skillID             = m_skillBase.m_skillID;
                    param.castObj             = m_skillBase.m_actor.thisGameObject;
                    param.damageActorTypeList = m_fireFlyAttackDesc.aimActorTypeList;

                    param.bThroughFlag  = m_fireFlyAttackDesc.bThroughFlag;
                    param.projectile    = m_fireFlyAttackDesc.projectile;
                    param.TanTanLeCount = m_fireFlyAttackDesc.TanTanLeCount;
                    param.TanTanLeDis   = m_fireFlyAttackDesc.TanTanLeDis;
                    param.dizzyTime     = m_fireFlyAttackDesc.dizzyTime;

                    param.targetpos = targetpos;
                    if (m_skillBase != null && m_skillBase.m_actor != null)
                    {
                        ActorObj actorobj = m_skillBase.m_hitActor;
                        if (actorobj != null)
                        {
                            param.aimTransform = actorobj.transform;
                        }
                        else
                        {
                            actorObj = m_skillBase.m_actor.GetAttackObj();
                            if (actorObj == null)
                            {
                                actorObj = m_skillBase.m_hitActor;
                            }
                            if (actorobj != null)
                            {
                                param.aimTransform = actorobj.transform;
                            }
                            {
                                ActorObj gameobj = m_skillBase.GetSelTarget();
                                if (gameobj != null)
                                {
                                    param.aimTransform = gameobj.transform;
                                }
                            }
                        }
                    }
                    tantan.Init(param);
                }
                else // 子弹
                {
                    Bullet      bullet = objBullet.GetComponent <Bullet>();
                    BulletParam param  = new BulletParam();

                    param.m_skillBase = m_skillBase;

                    param.flySpeed            = m_fireFlyAttackDesc.flySpeed;
                    param.flyTime             = m_fireFlyAttackDesc.flyTime;
                    param.skillID             = m_skillBase.m_skillID;
                    param.castObj             = m_skillBase.m_actor.thisGameObject;
                    param.damageActorTypeList = m_fireFlyAttackDesc.aimActorTypeList;

                    param.bThroughFlag              = m_fireFlyAttackDesc.bThroughFlag;
                    param.projectile                = m_fireFlyAttackDesc.projectile;
                    param.targetpos                 = targetpos;
                    param.bTakeAwayTarget           = m_fireFlyAttackDesc.bTakeAwayTarget;
                    param.disappearWhenTouchWall    = m_fireFlyAttackDesc.disappearWhenTouchWall;
                    param.bCanNotMoveWhenTakenAway  = m_fireFlyAttackDesc.bCanNotMoveWhenTakenAway;
                    param.bTraceTarget              = m_fireFlyAttackDesc.bTraceTarget;
                    param.bAttachToSkill            = m_fireFlyAttackDesc.bAttachToSkill;
                    param.bAttackMoreThanOnce       = m_fireFlyAttackDesc.bAttackMoreThanOnce;
                    param.bEndTheSkillWhenDisappear = m_fireFlyAttackDesc.bEndTheSkillWhenDisappear;
                    bullet.Init(param);
                }
            }
        }
Esempio n. 13
0
        public IEnumerator _moveToTarget(int resID)
        {
            //等待场景加载完才播boss 动画
            while (CoreEntry.bLoadSceneComplete != true)
            {
                LogMgr.UnityLog("_moveToTarget 等待场景加载完才播boss 动画 ");
                yield return(new WaitForSeconds(0.1f));
            }


            ActorObj actorBase = CoreEntry.gActorMgr.GetActorByConfigID(resID);

            if (actorBase == null)
            {
                LogMgr.UnityError("找不到怪物ID:" + resID);
                CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_TASK_Camera_end, null);
                yield break;
            }
            IActorState state = actorBase.GetActorState(ACTOR_STATE.AS_ENTER);

            if (state != null)
            {
                //state.Reset();
                try
                {
                    EnterState eState = state as EnterState;
                    eState.EndEnterStateFromCamera(actorBase);
                }
                catch (Exception e)
                {
                    LogMgr.UnityError(e.ToString());  //状态没有初始化
                }
            }


            CameraFollow cameraFollow = null;

            if (null != MainCamera)
            {
                cameraFollow = MainCamera.GetComponent <CameraFollow>();
            }
            if (cameraFollow == null)
            {
                CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_TASK_Camera_end, null);
                yield break;
            }

            lastDistance = cameraFollow.m_distance;
            lastHeight   = cameraFollow.m_height;

            CoreEntry.gGameMgr.pauseGame();

            yield return(new WaitForSeconds(0.6f));


            //TweenAttr2.SetAttr fnSetHeight = new TweenAttr2.SetAttr(cameraFollow.SetHeight);
            //TweenAttr.SetAttr fnSetDistance = new TweenAttr.SetAttr(cameraFollow.SetDistance);


            float distance = cameraFollow.getDistance(m_bossObj.transform);

            if (distance < 10)
            {
                cameraSpeed = 4;
            }
            else if (distance < 20)
            {
                cameraSpeed = 6;
            }
            LogMgr.UnityLog("镜头速度调整为:" + cameraSpeed);

            yield return(new WaitForSeconds(1.9f));

            //通知剧情, 镜头已经移动到目标
            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_TASK_Camera_Focus, null);
        }
Esempio n. 14
0
 public void OnServerPushItemData(GameEvent ge, EventParameter parameter)
 {
     LogMgr.UnityError("---------------OnServerPushItemData");
 }
Esempio n. 15
0
        void Start()
        {
            CancelInvoke("Start");

            if (m_skillBase == null || m_skillBase.m_actor == null)
            {
                return;
            }

            m_skillBase.m_actor.ReqirueCanNotBeControlledByInput();

            //主角在电梯上禁止美术位移
            if (CoreEntry.gSceneMgr.IsPlayerOnElevator())
            {
                return;
            }

            if (m_movePosAttackDesc == null)
            {
                return;
            }

            LuaTable skillDesc = m_skillBase.m_actor.GetCurSkillDesc(m_skillBase.m_skillID);

            if (skillDesc == null)
            {
                LogMgr.UnityError("non SkillDesc! " + m_skillBase.m_skillID);
                return;
            }

            //SkillClassDisplayDesc skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(skillDesc.Get<int>("skillDisplayID"));

            //计算位移距离
            m_distance = m_movePosAttackDesc.moveDistance;

            //使用目标的位置, 前面0.5米

            if (m_skillBase.m_actor.IsMainPlayer())
            {
                if (m_skillBase.m_actor.m_SelectTargetObject != null)
                {
                    float dist1 = Vector3.Distance(transform.position, m_skillBase.m_actor.m_SelectTargetObject.transform.position) - 0.5f;
                    if (dist1 > m_distance)
                    {
                        dist1 = m_distance;
                    }

                    m_distance = dist1;
                }
            }

            float resetDistance = m_distance;

            //设置位移
            do
            {
                ActorObj ActorObj = m_skillBase.m_actor.GetAttackObj();
                if (ActorObj == null)
                {
                    ActorObj = m_skillBase.m_hitActor;
                }

                if (ActorObj == null)
                {
                    LogMgr.UnityLog("CurveMove:no target");
                    break;
                }

                GameObject targetObj = ActorObj.thisGameObject;
                if (targetObj == null)
                {
                    LogMgr.UnityLog("CurveMove:no target");
                    break;
                }

                ActorObj targetActorBase = targetObj.GetComponent <ActorObj>();
                if (targetActorBase == null)
                {
                    LogMgr.UnityError("CurveMove:no actorbase");
                    break;
                }


                if (m_movePosAttackDesc.isStopForTarget)
                {
                    float fDistTo = m_skillBase.m_actor.GetColliderRadius() + targetObj.GetComponent <ActorObj>().GetColliderRadius();

                    if (CoreEntry.gGameMgr.IsPvpState())
                    {
                        fDistTo += 1.2f;
                    }


                    //不可以穿透,重置位移大小
                    float aimDistance = Vector3.Distance(m_transform.position, targetObj.transform.position) - fDistTo - 0.2f;    //两个物体间的距离

                    //范围内,不需要位移
                    if (aimDistance <= 0)
                    {
                        //Debug.LogWarning("CurveMove: don't need excute!");
                        return;
                    }

                    resetDistance = Mathf.Min(aimDistance, resetDistance);
                }
                else
                {
                    resetDistance = m_distance;
                }
            } while (false);



            Quaternion r0  = Quaternion.Euler(m_transform.eulerAngles);
            Vector3    pos = m_transform.position +
                             r0 * Vector3.forward * resetDistance;

            //找到对应地面上的点
            Vector3 aimPos = m_baseTool.GetGroundPoint(pos);

            if (aimPos.Equals(Vector3.zero))
            {
                return;
            }

            Vector3 dstDir = aimPos - m_transform.position;

            dstDir.Normalize();

            //左手方向
            //Vector3 leftDir = Quaternion.Euler(new Vector3(0, 90, 0)) * dstDir;
            //Vector3 rightDir = Quaternion.Euler(new Vector3(0, -90, 0)) * dstDir;
            //Vector3 backDir = Quaternion.Euler(new Vector3(0, 180, 0)) * dstDir;

            //float dstDistance = Vector3.Distance(m_transform.position, aimPos);
            m_needMove = true;

            //向上移动点
            //aimPos += new Vector3(0, 0.2f, 0);
            aimPos = m_baseTool.GetLineReachablePos(m_transform.position, aimPos);
            aimPos = m_baseTool.GetGroundPoint(aimPos);

            if (m_skillBase.m_actor.IsMainPlayer())
            {
                m_dstPos = aimPos;
            }
            else
            {
                m_dstPos = m_skillBase.m_actor.m_CurveMovePos;
            }

            //使用曲线
            CurveMoveParam param = new CurveMoveParam();

            param.aimActorTypeList = m_movePosAttackDesc.resetAimActorTypeList;
            param.isCarryOffTarget = m_movePosAttackDesc.isCarryOffTarget;
            param.isStopForTarget  = m_movePosAttackDesc.isStopForTarget;

            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(m_skillBase.m_skillID);

            if (skill_action != null)
            {
                m_uuid = m_skillBase.m_actor.UseCurveData3(skill_action.Get <string>("animation"), m_dstPos,// m_dstPos,
                                                           param);
            }

            m_param = param;

            //拖尾特效
            if (m_movePosAttackDesc.efxPrefab.Length > 0)
            {
                //GameObject efxObj = Instantiate(CoreEntry.gResLoader.LoadResource(m_movePosAttackDesc.efxPrefab)) as GameObject;
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(m_movePosAttackDesc.efxPrefab);

                EfxAttachActionPool efx = efxObj.GetComponent <EfxAttachActionPool>();
                if (efx == null)
                {
                    efx = efxObj.AddComponent <EfxAttachActionPool>();
                }

                float efxTime = 1.0f;
                if (skill_action != null)
                {
                    m_skillBase.m_actor.GetLeftActionTime(skill_action.Get <string>("animation"));
                }

                efx.Init(m_skillBase.m_actor.transform, efxTime);
            }
        }
Esempio n. 16
0
        //播放动画,特效,声音
        IEnumerator PlayActionEfxSound(SkillPlayParam param, float delayTime)
        {
            if (m_actor == null)
            {
                yield  break;
            }
            m_strActionName = param.action;
            if (m_strActionName != null && m_strActionName.Length > 0)
            {
                //动作带位移 的 不能延迟播放,  延迟播放将影响 位移曲线计算
                m_actor.PlayAction(m_strActionName, false);
                m_actor.SetActionTime(m_strActionName, param.startTime);
                m_actor.SetSkillActionSpeed(m_strActionName, param.speed, m_skillDesc);
            }

            //其它玩家不播放了
            if (m_actor.mActorType == ActorType.AT_REMOTE_PLAYER)
            {
                yield break;
            }

            if (m_actor.mActorType == ActorType.AT_PET)
            {
                PetObj pet = m_actor as PetObj;
                if (null != pet && pet.m_MasterActor != CoreEntry.gActorMgr.MainPlayer)
                {
                    yield break;
                }
            }

            //播放声音
            string sound1 = param.sound;
            string sound2 = param.voice;

            if (sound1 != null && sound1.Length > 0)
            {
                m_actor.StopSound();
                m_actor.PlaySound(sound1);
            }

            if (sound2 != null && sound2.Length > 0)
            {
                m_actor.StopSound2();
                m_actor.PlaySound2(sound2);
            }

            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(m_skillID);

            if (skill_action == null)
            {
                Debug.LogError("==skill_action == is null m_skillID = " + m_skillID);
                yield break;
            }
            Vector3 efxPos   = m_actor.transform.position;
            bool    isBind   = skill_action.Get <bool>("isBind");
            int     bindType = skill_action.Get <int>("skillEfxPos");

            if (!isBind)
            {
                if (bindType == 1)
                {
                    ActorObj target = m_actor.GetSelTarget();
                    if (null != target)
                    {
                        efxPos = target.transform.position;
                    }
                }
            }

            if (delayTime > 0.0001f)
            {
                yield return(new WaitForSeconds(delayTime));
            }

            //if (ByteToString.toString(m_skillDesc.szAttackEfxPrefab).Length > 0)
            if (param.actionEfx != null && param.actionEfx.Length > 0)
            {
                if (/*m_skillDesc.skilltype == 0 && */ m_actor.mActorType == ActorType.AT_BOSS)
                {
                    yield return(new WaitForSeconds(m_actor.NoramalAttackEffectDelayTime));
                }
                if (skill_action != null)
                {
                    param.actionEfx = skill_action.Get <string>("skilleffect");
                    //efxObj = Instantiate(CoreEntry.gResLoader.LoadResource(param.actionEfx)) as GameObject;//CoreEntry.gGameObjPoolMgr.InstantiateEffect(param.actionEfx);
                    efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(param.actionEfx);
                    if (efxObj == null)
                    {
                        LogMgr.LogError("找不到attackEfxPrefab:" + skill_action.Get <string>("skilleffect") + " " + m_skillDesc.Get <string>("name"));
                    }
                }

                float maxEfxTime = 0;
                if (skill_action.Get <float>("skillEfxLength") > 0)
                {
                    maxEfxTime = skill_action.Get <float>("skillEfxLength");
                }


                //LogMgr.UnityLog("maxEfxTime=" + maxEfxTime + ", " + m_strActionName);

                //特效存在时间
                if (maxEfxTime <= 0.001)
                {
                    maxEfxTime = m_actor.GetActionLength(m_strActionName);

                    if (maxEfxTime <= 0.001)
                    {
                        LogMgr.UnityError("技能 动作时间 没有配置 skillID:" + m_skillDesc.Get <int>("id"));
                    }
                }


                bool isFollowMove       = false;
                EfxAttachActionPool efx = efxObj.GetComponent <EfxAttachActionPool>();
                if (efx == null)
                {
                    efx = efxObj.AddComponent <EfxAttachActionPool>();
                }

                if (efx != null)
                {
                    efx.Init(m_actor.transform, maxEfxTime, isFollowMove);

                    m_actionEfx = efx;

                    if (isBind)
                    {
                        ActorObj bindActor = null;
                        if (bindType == 0)
                        {
                            bindActor = m_actor;
                        }
                        else
                        {
                            bindActor = m_actor.GetSelTarget();
                        }

                        Transform bindTran = null;
                        if (null != bindActor)
                        {
                            string hangPoint = skill_action.Get <string>("hangPoint");
                            if (!string.IsNullOrEmpty(hangPoint))
                            {
                                bindTran = bindActor.transform.FindChild(hangPoint);
                            }
                            if (null == bindTran)
                            {
                                bindTran = bindActor.transform;
                            }
                        }
                        else
                        {
                            bindTran = m_actor.transform;
                        }

                        m_actionEfx.transform.parent        = bindTran;
                        m_actionEfx.transform.localPosition = Vector3.zero;
                        m_actionEfx.transform.localScale    = Vector3.one;
                        m_actionEfx.transform.rotation      = m_actor.transform.rotation;
                    }
                    else
                    {
                        if (bindType == 1)
                        {
                            m_actionEfx.transform.position = efxPos;
                        }
                        else
                        {
                            m_actionEfx.transform.position = m_actor.transform.position;
                        }
                        m_actionEfx.transform.localScale = Vector3.one;
                        m_actionEfx.transform.rotation   = m_actor.transform.rotation;
                    }

                    //设置有挂点的特效
                    Transform[] childTransform = efxObj.GetComponentsInChildren <Transform>();
                    //foreach (Transform childTrans in childTransform)
                    for (int i = 0; i < childTransform.Length; ++i)
                    {
                        Transform         childTrans = childTransform[i];
                        EfxSetAttachPoint setAttach  = childTrans.gameObject.GetComponent <EfxSetAttachPoint>();
                        if (setAttach == null || setAttach.m_attachPointEnum == AttachPoint.E_None)
                        {
                            continue;
                        }

                        setAttach.Init(false);

                        Transform parent = m_actor.GetChildTransform(setAttach.m_attachPointEnum.ToString());
                        if (parent != null)
                        {
                            childTrans.parent        = parent;
                            childTrans.localPosition = Vector3.zero;
                            childTrans.localRotation = Quaternion.identity;
                            childTrans.localScale    = Vector3.one;

                            m_attachEfxObjectlist.Add(childTrans.gameObject);
                        }
                    }

                    //影子
                    ghostMesh[] ghostMesh = efx.GetComponentsInChildren <ghostMesh>();

                    if (ghostMesh.Length > 0)
                    {
                        SkinnedMeshRenderer MianSkinMesh = m_actor.m_skinnedMeshRenderer[0];
                        for (int i = 0; i < m_actor.m_skinnedMeshRenderer.Length; ++i)
                        {
                            if (m_actor.m_skinnedMeshRenderer[i].name.Contains("weapon"))
                            {
                                continue;
                            }
                            MianSkinMesh = m_actor.m_skinnedMeshRenderer[i];
                        }

                        for (int i = 0; i < ghostMesh.Length; ++i)
                        {
                            ghostMesh[i].characterMesh[0] = MianSkinMesh;
                        }
                    }
                }
            }

            yield return(1);
        }
Esempio n. 17
0
        private void ShowBossSkillWarning()
        {
            if (null == m_actor || m_actor.mActorType != ActorType.AT_BOSS)
            {
                return;
            }

            if (null == m_skillDesc || null == m_skilleffect)
            {
                return;
            }

            int castSkillType = m_skillDesc.Get <int>("faction_limit");

            if (castSkillType == 2)
            {
                return;
            }
            castSkillType = m_skillDesc.Get <int>("subtype");
            if (castSkillType < (int)SkillType.SKILL_CHARGE || castSkillType > (int)SkillType.SKILL_BIGAOE)
            {
                LogMgr.UnityError(string.Format("skill:{0} has an invalid skill subtype:{1}", m_skillID, castSkillType));

                return;
            }
            if (castSkillType == (int)SkillType.SKILL_NORMAL)
            {
                return;
            }

            int rangeType = m_skilleffect.Get <int>("range");
            int param1    = m_skilleffect.Get <int>("distance");
            int param2    = m_skilleffect.Get <int>("angle");

            GameObject efxObj = null;
            Vector3    pos;
            bool       isRectWarning = false;

            if (rangeType == (int)SkillRangeType.SKILL_TARGET || rangeType == (int)SkillRangeType.SKILL_TARGET_CIRCLE)
            {
                ActorObj target = m_actor.GetSelTarget();
                if (null == target)
                {
                    return;
                }

                pos    = target.transform.position;
                efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect("Effect/skill/remain/fx_yujing_yuan");
                if (null != efxObj)
                {
                    efxObj.transform.localRotation = Quaternion.identity;
                    efxObj.transform.localScale    = new Vector3(param1 * 2.0f, 1.0f, param1 * 2.0f);
                }
            }
            else
            {
                pos = m_actor.transform.position;

                if (rangeType == (int)SkillRangeType.SKILL_SELF_FUN)
                {
                    efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect("Effect/skill/remain/fx_yujing_shanxing");
                    if (null != efxObj)
                    {
                        efxObj.transform.rotation   = m_actor.transform.rotation;
                        efxObj.transform.localScale = new Vector3(param1, 1.0f, param1);
                    }
                }
                else if (rangeType == (int)SkillRangeType.SKILL_SELF_RECT)
                {
                    efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect("Effect/skill/remain/fx_yujing_changfang");
                    if (null != efxObj)
                    {
                        efxObj.transform.rotation   = m_actor.transform.rotation;
                        efxObj.transform.localScale = new Vector3(param2, 1.0f, param1);
                    }
                    isRectWarning = true;
                }
                else if (rangeType == (int)SkillRangeType.SKILL_SELF_CIRCLE)
                {
                    efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect("Effect/skill/remain/fx_yujing_yuan");
                    if (null != efxObj)
                    {
                        efxObj.transform.localRotation = Quaternion.identity;
                        efxObj.transform.localScale    = new Vector3(param1 * 2.0f, 1.0f, param1 * 2.0f);
                    }
                }
            }

            if (null == efxObj)
            {
                return;
            }

            efxObj.transform.position = pos;

            int delayTime           = m_skilleffect.Get <int>("delay");
            EfxAttachActionPool efx = efxObj.GetComponent <EfxAttachActionPool>();

            if (efx == null)
            {
                efx = efxObj.AddComponent <EfxAttachActionPool>();
            }

            if (efx != null)
            {
                efx.Init(null, delayTime * 0.001f + 0.5f);
            }

            Transform aniTransform = efxObj.transform.FindChild("liquan");

            if (null != aniTransform)
            {
                if (isRectWarning)
                {
                    aniTransform.localPosition = Vector3.zero;
                    TweenPosition.Begin(aniTransform.gameObject, delayTime * 0.001f, Vector3.forward);
                }
                else
                {
                    aniTransform.localScale = Vector3.zero;
                    TweenScale.Begin(aniTransform.gameObject, delayTime * 0.001f, Vector3.one);
                }
            }
        }
Esempio n. 18
0
        public void Preload(ActorObj own, int skillID)
        {
            m_skillID            = skillID;
            m_onlyShowSkillScope = true;
            m_actor     = own;
            m_skillDesc = ConfigManager.Instance.Skill.GetSkillConfig(m_skillID);
            if (m_skillDesc == null)
            {
                return;
            }

            SkillClassDisplayDesc skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(m_skillDesc.Get <int>("skillDisplayID"));

            if (skillClass == null)
            {
                return;
            }

            //吟唱阶段
            for (int i = 0; i < skillClass.prepareStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.prepareStageDataList[i].prefabPath);
                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.prepareStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            //技能元素
            for (int i = 0; i < skillClass.castStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.castStageDataList[i].prefabPath);
                if (cellObj == null)
                {
                    LogMgr.UnityError("Can not found prefab: " + skillClass.castStageDataList[i].prefabPath + " ! of skillID " + skillClass.skillID + " : " + skillClass.castStageDataList[i].ToString());
                    continue;
                }

                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.castStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            // 动作特效加载
            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(skillID);

            if (skill_action != null && skill_action.Get <string>("skilleffect").Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(skill_action.Get <string>("skilleffect"));
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
                else
                {
                    LogMgr.LogError("can not find attackEfxPrefab path: " + skill_action.Get <string>("skilleffect"));
                }
            }

            // 受击特效加载
            string pfx_hurt = m_skillDesc.Get <string>("pfx_hurt");

            if (pfx_hurt.Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(pfx_hurt);
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
            }

            DestroyEfx();
        }
Esempio n. 19
0
        // Use this for initialization
        void Start()
        {
            CancelInvoke("Start");

            if (m_skillBase == null || m_skillBase.m_actor == null)
            {
                return;
            }

            m_isHadLoadFrameStop = false;

            //yy test
            //LuaTable desc =  ConfigManager.Instance.Skill.GetSkillConfig( m_skillBase.m_skillID ) ;

            ////伤害计算
            //m_skillBase = this.transform.root.gameObject.GetComponent<SkillBase>();

            if (m_skillBase.m_onlyShowSkillScope)
            {
                return;
            }

            //gamedb.SkillDesc skillDesc = m_skillBase.m_actor.GetCurSkillDesc(m_skillBase.m_skillID);
            //SkillClassDisplayDesc skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(m_skillBase.m_skillID);

            //if (skillClass.damageList.Count <= m_dataIndex)
            //{
            //    return;
            //}

            //m_oneDamageInfo = skillDesc.astDamageCellArray[m_dataIndex];
            //m_oneDamageInfo = skillClass.damageList[m_dataIndex];
            if (m_oneDamageInfo == null)
            {
                return;
            }

            m_repeateKeep = m_oneDamageInfo.keepTime;

            float hitTime = m_oneDamageInfo.hitTime / m_skillBase.m_speed;

            //float endTime = (m_oneDamageInfo.keepTime * m_oneDamageInfo.damageDiff) / m_skillBase.m_speed;

            float delayTime = 0;

            float curTime = m_skillBase.GetCurActionTime();

            //if (desc.attackAction.Length <1 )
            // {
            //    curTime = 0;
            //}


            //LogMgr.UnityLog("hitTime=" + hitTime + ", curTime=" + curTime + ", skillid=" + m_skillBase.m_skillID);

            if (m_skillBase.SkillOverTime < hitTime)
            {
                LogMgr.UnityError(string.Format("技能结束时间:{0} < 打击时间:{1} , 将引发释放不出来 的BUG  skillID:{2}", m_skillBase.SkillOverTime, hitTime, m_skillBase.m_skillID));
            }


            if (curTime >= hitTime)
            {
                CalculateDamage();
                LogMgr.UnityLog("----curTime:" + curTime + "     hitTime:" + hitTime);
            }
            else
            {
                delayTime = hitTime - curTime;
                Invoke("CalculateDamage", delayTime);
            }

            if (m_oneDamageInfo.isRepeatedly)
            {
                //Invoke("EndDamage", endTime);
            }
        }
Esempio n. 20
0
        //加载非主角
        void LoadMonster()
        {
            OneZoneData zoneData = m_gameDBMgr.GetAimPosZoneData(m_curMonsterGroupId, m_sceneMgr.curOpenZoneID);

            if (zoneData == null)
            {
                LogMgr.UnityError("Load zoneData error. mapid:" + m_curMonsterGroupId + " zoneid:" + m_sceneMgr.curOpenZoneID);
                return;
            }
            //add by lzp
            SetGuidSkill();

            StartLoadMonster();
            //所有的种怪
            SpawnMonster[] monsters = m_gameDBMgr.GetSpawnMonsterInfo(m_curMonsterGroupId);
            for (int i = 0; i < monsters.Length; ++i)
            {
                if (!monsters[i].enable)
                {
                    continue;
                }

                if (CurMonsterWaveSeq != monsters[i].waveSequence)
                {
                    continue;
                }

                Vector3 pos = monsters[i].pos;

                //是否当前区域怪
                if (zoneData != null && m_isLoadZone)
                {
                    if (pos.x < zoneData.startPos.x || pos.x > zoneData.endPos.x ||
                        pos.z < zoneData.startPos.z || pos.z > zoneData.endPos.z)
                    {
                        continue;
                    }
                }

                //刷怪时间扰动,避免所有怪一起刷新动作太整齐的问题
                if (m_curWaveTriggerInfo.turbulenceTime > 0f)
                {
                    m_TurbulenceSpawnMonsters.Add(monsters[i]);
                }
                else
                {
                    SpawnActor(monsters[i]);
                }
            }

            //发送怪物被加载完了
            m_eventMgr.TriggerEvent(GameEvent.GE_EVENT_AFTER_MONSTER_LOADED, null);

            if (m_TurbulenceSpawnMonsters.Count > 0)
            {
                InvokeRepeating("TurbulenceSpawnMonster", Random.Range(0f, m_curWaveTriggerInfo.turbulenceTime / m_TurbulenceSpawnMonsters.Count),
                                m_curWaveTriggerInfo.turbulenceTime / m_TurbulenceSpawnMonsters.Count);
            }

            //m_bCurWaveLoaded = true;

            if (m_bWaveLoop == false && IsLoopMonsterAllDeath() == false)
            {
                m_bWaveLoop = true;
                TriggerLoopWave();
            }

            // 下一波怪在这波开始时延时刷新情况
            if (IsOpenZoneFinalWaveMonster() == false &&
                (GetNextWaveTrigType() == WTC_TYPE.LASTWAVEBEGAN || GetNextWaveTrigType() == WTC_TYPE.ZONE))
            {
                CurMonsterWaveSeq++;
                UpdateWaveTriggerInfo();
                //m_bCurWaveLoaded = false;

                if (m_curWaveTriggerInfo.trigType == (int)WTC_TYPE.LASTWAVEBEGAN)
                {
                    if (m_curWaveTriggerInfo.arg1 > 0)
                    {
                        StartDelayLoadMonster();
                        Invoke("DelaySpawnMonster", m_curWaveTriggerInfo.arg1);
                    }
                    else
                    {
                        LoadMonster();
                    }
                }
                else if (m_curWaveTriggerInfo.trigType == (int)WTC_TYPE.ZONE)
                {
                    m_bNeedCheckZone = true;
                    SetMonsterTips(true);
                }
            }
        }
Esempio n. 21
0
        /// <summary>
        /// 展示掉落物品
        /// </summary>
        /// <param name="monsterID"></param>
        /// <param name="position"></param>
        private void ShowDropItem(MsgData_sSceneObjectEnterItem itemStruct)
        {
            if (itemStruct.Owner != CoreEntry.gActorMgr.MainPlayer.ServerID)
            {
                return;
            }
            Vector3 position = CommonTools.ServerPosToClient(itemStruct.PosX, itemStruct.PosY);

            position.y = CommonTools.GetTerrainHeight(position);

            LuaTable itemCfg  = null;
            LuaTable equipCfg = null;

            itemCfg = ConfigManager.Instance.BagItem.GetItemConfig(itemStruct.ConfigID);
            if (null == itemCfg)
            {
                equipCfg = ConfigManager.Instance.BagItem.GetItemConfig(itemStruct.ConfigID);
            }

            if (null == itemCfg && null == equipCfg)
            {
                LogMgr.UnityError("config error:id " + itemStruct.ConfigID + " no config data");

                return;
            }

            string dmeshid     = string.Empty;
            string itemName    = string.Empty;
            int    itemQuality = 0;

            if (null != itemCfg)
            {
                dmeshid     = itemCfg.Get <string>("dmeshid");
                itemName    = itemCfg.Get <string>("name");
                itemQuality = itemCfg.Get <int>("quality");
            }
            else
            {
                if (equipCfg != null)
                {
                    dmeshid     = equipCfg.Get <string>("dmeshid");
                    itemName    = equipCfg.Get <string>("name");
                    itemQuality = equipCfg.Get <int>("quality");
                }
            }

            DropItemInfo dropItem = null;

            if (m_UnusedDropItemList.Count > 0)
            {
                dropItem = m_UnusedDropItemList[m_UnusedDropItemList.Count - 1];
                m_UnusedDropItemList.RemoveAt(m_UnusedDropItemList.Count - 1);
            }
            else
            {
                dropItem             = new DropItemInfo();
                dropItem.dropItemObj = null;
            }

            dropItem.cfgID        = itemStruct.ConfigID;
            dropItem.serverID     = itemStruct.Guid;
            dropItem.count        = itemStruct.Count;
            dropItem.dropPosition = position;
            string[] strs = dmeshid.Split('#');
            if (strs == null || strs.Length != 2)
            {
                LogMgr.UnityError("item config error:" + itemStruct.ConfigID + ";" + dmeshid);

                return;
            }
            GenerateDropItem(dropItem.dropPosition, strs[1], itemQuality, ref dropItem);
            if (dropItem != null && dropItem.dropItem != null)
            {
                dropItem.dropItem.Init(dropItem.dropType, itemName, dropItem.count, strs[0], itemQuality);
                m_DropItemList.Add(dropItem);
            }
        }
Esempio n. 22
0
 //HashSet<int> m_errorSet = new HashSet<int>();
 public void actorGameObjectListNullError(int index)
 {
     LogMgr.UnityError("actorGameObjectListNullError index:" + index);
     Invoke("DelayProcese_actorGameObjectListNullError", 0.001f);
 }