Added a "silent" option for LuaEngine calls. More content instance work. Full classpath now used for zones.

This commit is contained in:
Filip Maj 2017-04-29 20:30:54 -04:00
parent cc44d6b63c
commit 8c9ecebae6
15 changed files with 313 additions and 136 deletions

View file

@ -40,7 +40,7 @@ namespace FFXIVClassic_Map_Server.actors.group
members.Add(actor.actorId);
if (actor is Character)
{
((Character)actor).SetCurrentContentGroup(GetTypeId());
((Character)actor).SetCurrentContentGroup(this);
SendCurrentContentSync(actor);
}
SendGroupPacketsAll(members);
@ -50,16 +50,17 @@ namespace FFXIVClassic_Map_Server.actors.group
{
members.Remove(memberId);
SendGroupPacketsAll(members);
CheckDestroy();
}
public override List<GroupMember> BuildMemberList(uint id)
{
List<GroupMember> groupMembers = new List<GroupMember>();
groupMembers.Add(new GroupMember(id, -1, 0, false, true, Server.GetWorldManager().GetActorInWorld(id).customDisplayName));
groupMembers.Add(new GroupMember(id, -1, 0, false, true, ""));
foreach (uint charaId in members)
{
if (charaId != id)
groupMembers.Add(new GroupMember(charaId, -1, 0, false, true, Server.GetWorldManager().GetActorInWorld(charaId).customDisplayName));
groupMembers.Add(new GroupMember(charaId, -1, 0, false, true, ""));
}
return groupMembers;
}
@ -139,5 +140,23 @@ namespace FFXIVClassic_Map_Server.actors.group
SendDeletePackets(members);
}
public void CheckDestroy()
{
bool foundSession = false;
foreach (uint memberId in members)
{
Session session = Server.GetServer().GetSession(memberId);
if (session != null)
{
foundSession = true;
break;
}
}
if (!foundSession)
Server.GetWorldManager().DeleteContentGroup(groupIndex);
}
}
}