Ejemplo n.º 1
0
        void OnClickPlayer(CEventBaseArgs data)
        {
            // 破碎死域要屏蔽这个界面
            if (SceneHelp.Instance.IgnoreClickPlayer == true)
            {
                return;
            }

            GameObject selectedObj = (GameObject)data.arg;

            if (selectedObj != null)
            {
                ActorMono actMono = ActorHelper.GetActorMono(selectedObj);
                if (actMono != null)
                {
                    Actor actor = actMono.BindActor;
                    if (actor != null && (actor is LocalPlayer) == false && ActorHelper.IsShemale(actor.UID.obj_idx) == false)
                    {
                        Dictionary <string, string> playerInfo = new Dictionary <string, string>();
                        playerInfo.Clear();
                        playerInfo.Add("uuid", actor.UID.obj_idx.ToString());
                        xc.ui.ugui.UIManager.Instance.ShowWindow("UIWatchPlayerWindow", playerInfo);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 响应aoi消失的消息
        /// </summary>
        /// <param name="pack"></param>
        public void HandleUnitDisapper(S2CNwarDisappear pack)
        {
#if TEST_WILD_PROTOCOL
            if (IsPlayer(pack.uuid))
            {
                GameDebug.Log(">>>MSG_NWAR_DISAPPEAR player id = " + pack.uuid);
            }
            else if (IsSummon(pack.uuid))
            {
                GameDebug.Log(">>>MSG_NWAR_DISAPPEAR summon id = " + pack.uuid);
            }
            else
            {
                GameDebug.Log(">>>MSG_NWAR_DISAPPEAR monster id = " + pack.uuid);
            }
#endif

            var uuid = pack.uuid;

            // 不需要处理本地玩家的disappear
            if (uuid == Game.Instance.LocalPlayerID.obj_idx)
            {
                return;
            }

            // 如果是玩家或者人形怪
            if (ActorHelper.IsPlayer(uuid) || ActorHelper.IsShemale(uuid))
            {
                var player_info = GetWildPlayerInfo(uuid, false);
                if (player_info != null)
                {
                    player_info.HandleDisappear();

                    AddPlayerToDisappear(player_info);
                }
            }
            // 如果是召唤怪
            else if (ActorHelper.IsSummon(uuid))
            {
                var monster_info = GetWildMonsterInfo(uuid, false);
                if (monster_info != null)
                {
                    monster_info.HandleDisappear();
                    AddMonsterToDisappear(monster_info);
                }
            }
            // 如果是普通怪物
            else
            {
                var monster_info = GetWildMonsterInfo(uuid, false);
                if (monster_info != null)
                {
                    monster_info.HandleDisappear();
                    AddMonsterToDisappear(monster_info);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据玩家的uuid获取所在的服务器名字
        /// </summary>
        /// <param name="uuid"></param>
        /// <returns></returns>
        public string GetServerNameByUuid(uint uuid)
        {
            uint serverId = 0;

            // 如果是人形怪,则使用本地登录的服务器id
            if (ActorHelper.IsShemale(uuid) == true)
            {
                serverId = (uint)GlobalConfig.Instance.LoginInfo.ServerInfo.SId;
            }
            else
            {
                serverId = UuidToServerId(uuid);
            }

            return(GetServerNameByServerId(serverId));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 判断两个玩家是否在同一服务器
        /// </summary>
        public bool IsInSameServer(uint uuid, uint uuid2)
        {
            // 如果是人形怪,则使用本地登录的服务器id,直接返回true
            if (ActorHelper.IsShemale(uuid) == true && ActorHelper.IsShemale(uuid2) == true)
            {
                return(true);
            }

            uint serverId2 = UuidToServerId(uuid2);

            // 玩家服务器
            uint serverId = UuidToServerId(uuid);

            // 是否都在当前服的入口列表中
            if (mMergedEntrances.Contains(serverId2) == true && mMergedEntrances.Contains(serverId) == true)
            {
                return(true);
            }

            return(serverId2 == serverId);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 判断玩家是否和本地玩家在同一服务器
        /// </summary>
        public bool IsInSameServer(uint uuid)
        {
            // 如果是人形怪,则使用本地登录的服务器id,直接返回true
            if (ActorHelper.IsShemale(uuid) == true)
            {
                return(true);
            }

            // 本地玩家服务器
            uint localUuid   = xc.Game.Instance.LocalPlayerID.obj_idx;
            uint curServerId = UuidToServerId(localUuid);

            // 玩家服务器
            uint serverId = UuidToServerId(uuid);

            // 是否都在当前服的入口列表中
            if (mMergedEntrances.Contains(curServerId) == true && mMergedEntrances.Contains(serverId) == true)
            {
                return(true);
            }

            return(curServerId == serverId);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 响应aoi出现的消息
        /// </summary>
        /// <param name="pack"></param>
        public void HandleUnitAppear(S2CNwarAppear pack)
        {
            var uuid = pack.move.id;

            // 如果是玩家或者人形怪
            if (ActorHelper.IsPlayer(uuid) || ActorHelper.IsShemale(uuid))
            {
#if TEST_WILD_PROTOCOL
                GameDebug.Log(">>>MSG_NWAR_APPEAR player id = " + pack.moves.id);
#endif
                // 不需要处理本地玩家的appear
                if (uuid == Game.GetInstance().LocalPlayerID.obj_idx)
                {
                    return;
                }

                // 超出极限了,直接抛弃
                if (IsPlayerReachLimit())
                {
                    return;
                }

                var info = GetWildPlayerInfo(pack.move.id, true);
                if (info != null)
                {
                    info.HandleAppear(pack.move, pack.version, pack.buffs, (uint)pack.appear_bit);
                }
            }
            // 如果是召唤怪物
            else if (ActorHelper.IsSummon(uuid))
            {
#if TEST_WILD_PROTOCOL
                GameDebug.Log(">>>MSG_NWAR_APPEAR summon id = " + pack.moves.id);
#endif
                // 不需要处理本地玩家的召唤怪
                if (ActorHelper.IsMySummon(uuid))
                {
                    return;
                }

                var monster_info = GetWildMonsterInfo(pack.move.id, true);
                if (monster_info != null)
                {
                    monster_info.HandleAppear(pack.move, pack.buffs);
                }
            }
            // 如果是普通怪物
            else
            {
#if TEST_WILD_PROTOCOL
                GameDebug.Log(">>>MSG_NWAR_APPEAR monster id = " + pack.moves.id);
#endif
                var monster_info = GetWildMonsterInfo(pack.move.id, true);
                if (monster_info != null)
                {
                    monster_info.HandleAppear(pack.move, pack.buffs);
                }
            }

            var monBrief = pack.mon_brief;
            if (monBrief != null)
            {
                GetWildMonsterInfo(monBrief.uuid, true).HandleBriefInfo(monBrief);
            }
        }