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); } } } }
/// <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); } } }
/// <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)); }
/// <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); }
/// <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); }
/// <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); } }