diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 8324928321..ef9bef9348 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -669,6 +669,23 @@ namespace PerfectWorld.Scripts.Managers return CECGameRun.Instance.GetHostPlayer(); } + /// Returns character IDs of all other players in the world (excluding host). Used e.g. by DlgArrangeTeam for nearby list. + public List GetOtherPlayerCharacterIds() + { + var list = new List(); + CECHostPlayer pHost = GetHostPlayer(); + int idHost = pHost != null ? pHost.GetCharacterID() : 0; + lock (m_csPlayerTab) + { + foreach (int cid in m_PlayerTab.Keys) + { + if (cid != idHost) + list.Add(cid); + } + } + return list; + } + public bool OnMsgPlayerExtProp(ECMSG Msg) { object pData; diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 7fa718f687..55f48b917c 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -1,4 +1,4 @@ -using Animancer; +using Animancer; using BrewMonster; using BrewMonster.Managers; using BrewMonster.Network; @@ -1280,14 +1280,14 @@ namespace BrewMonster // UpdateWeaponHangerPosBySkillAction(idSkill); // 根据技能播放的动作,更改武器悬挂位置 / Update weapon hanger position based on skill action return true; } + /// Override in CECHostPlayer to return current team; base returns null. + public virtual CECTeam GetTeam() { return null; } + public bool IsTeamMember(int idPlayer) { - //TODO: HoangDev implement later - return false; - /* if (!m_pTeam) - return false; - - return m_pTeam->GetMemberByID(idPlayer) ? true : false;*/ + var pTeam = GetTeam(); + if (pTeam == null) return false; + return pTeam.GetMemberByID(idPlayer) != null; } public bool PlaySkillAttackActionWithName(int idSkill, string szActName, bool bNoFX = false, CECAttackEvent attackEvent = null) { @@ -1500,6 +1500,14 @@ namespace BrewMonster return m_strName; } + /// Set player display name (used when base info is received, e.g. else player). + protected void SetPlayerName(string name) + { + m_strName = name ?? ""; + if (gameObject != null) + gameObject.name = m_strName; + } + public enumWingType GetWingType() { return m_wingType; } diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 5d55628c80..c0780f7399 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -637,6 +637,7 @@ namespace BrewMonster m_iProfession = iProf; m_iGender = iGender; m_bBaseInfoReady = true; + SetPlayerName(szName ?? ""); } // Level up public void LevelUp()