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()