mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-05-20 08:26:59 -04:00
Party sync is done. Finished kick/promote code. Client is now always at the top of pt list.
This commit is contained in:
@@ -43,7 +43,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return -1;
|
||||
}
|
||||
|
||||
public virtual List<GroupMember> BuildMemberList()
|
||||
public virtual List<GroupMember> BuildMemberList(uint id)
|
||||
{
|
||||
return new List<GroupMember>();
|
||||
}
|
||||
@@ -62,7 +62,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
public void SendGroupPackets(Session session)
|
||||
{
|
||||
ulong time = Utils.MilisUnixTimeStampUTC();
|
||||
List<GroupMember> members = BuildMemberList();
|
||||
List<GroupMember> members = BuildMemberList(session.sessionId);
|
||||
|
||||
session.clientConnection.QueuePacket(GroupHeaderPacket.buildPacket(session.sessionId, session.currentZoneId, time, this), true, false);
|
||||
session.clientConnection.QueuePacket(GroupMembersBeginPacket.buildPacket(session.sessionId, session.currentZoneId, time, this), true, false);
|
||||
|
@@ -83,7 +83,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return Group.CompanyGroup;
|
||||
}
|
||||
|
||||
public override List<GroupMember> BuildMemberList()
|
||||
public override List<GroupMember> BuildMemberList(uint id)
|
||||
{
|
||||
List<GroupMember> groupMembers = new List<GroupMember>();
|
||||
foreach (LinkshellMember member in members)
|
||||
|
@@ -21,6 +21,11 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
}
|
||||
|
||||
public void SetLeaderPlayerRequest(Session requestSession, string name)
|
||||
{
|
||||
SetLeaderPlayerRequest(requestSession, GetIdForName(name));
|
||||
}
|
||||
|
||||
public void SetLeaderPlayerRequest(Session requestSession, uint actorId)
|
||||
{
|
||||
if (GetLeader() != requestSession.sessionId)
|
||||
{
|
||||
@@ -28,16 +33,16 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return;
|
||||
}
|
||||
|
||||
uint newLeader = GetIdForName(name);
|
||||
uint newLeader = actorId;
|
||||
|
||||
if (newLeader == 0)
|
||||
if (!members.Contains(actorId))
|
||||
{
|
||||
requestSession.SendGameMessage(30575, 0x20);
|
||||
requestSession.SendGameMessage(30567, 0x20);
|
||||
return;
|
||||
}
|
||||
else if (newLeader == GetLeader())
|
||||
{
|
||||
requestSession.SendGameMessage(30563, 0x20, name);
|
||||
requestSession.SendGameMessage(30559, 0x20, (Object)Server.GetServer().GetNameForId(actorId));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -49,13 +54,18 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
Session session = Server.GetServer().GetSession(members[i]);
|
||||
if (session == null)
|
||||
continue;
|
||||
session.SendGameMessage(30429, 0x20, Server.GetServer().GetNameForId(members[i]));
|
||||
session.SendGameMessage(30429, 0x20, (Object)Server.GetServer().GetNameForId(actorId));
|
||||
}
|
||||
|
||||
Server.GetServer().GetWorldManager().SendPartySync(this);
|
||||
Server.GetServer().GetWorldManager().SendPartySync(this);
|
||||
}
|
||||
|
||||
public void KickPlayerRequest(Session requestSession, string name)
|
||||
{
|
||||
KickPlayerRequest(requestSession, GetIdForName(name));
|
||||
}
|
||||
|
||||
public void KickPlayerRequest(Session requestSession, uint actorId)
|
||||
{
|
||||
if (GetLeader() != requestSession.sessionId)
|
||||
{
|
||||
@@ -63,9 +73,9 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return;
|
||||
}
|
||||
|
||||
uint kickedMemberId = GetIdForName(name);
|
||||
uint kickedMemberId = actorId;
|
||||
|
||||
if (kickedMemberId == 0)
|
||||
if (!members.Contains(actorId))
|
||||
{
|
||||
requestSession.SendGameMessage(30575, 0x20);
|
||||
return;
|
||||
@@ -80,7 +90,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
if (members[i] == kickedMemberId)
|
||||
session.SendGameMessage(30410, 0x20);
|
||||
else
|
||||
session.SendGameMessage(30428, 0x20, (Object)name);
|
||||
session.SendGameMessage(30428, 0x20, (Object)Server.GetServer().GetNameForId(actorId));
|
||||
}
|
||||
|
||||
//All good, remove
|
||||
@@ -106,7 +116,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
|
||||
public void SetLeader(uint actorId)
|
||||
{
|
||||
partyGroupWork._globalTemp.owner = (ulong)((actorId << 32) | 0xB36F92);
|
||||
partyGroupWork._globalTemp.owner = (ulong)(((ulong)actorId << 32) | 0xB36F92);
|
||||
}
|
||||
|
||||
public uint GetLeader()
|
||||
@@ -152,11 +162,15 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return Group.PlayerPartyGroup;
|
||||
}
|
||||
|
||||
public override List<GroupMember> BuildMemberList()
|
||||
public override List<GroupMember> BuildMemberList(uint id)
|
||||
{
|
||||
List<GroupMember> groupMembers = new List<GroupMember>();
|
||||
groupMembers.Add(new GroupMember(id, -1, 0, false, true, Server.GetServer().GetNameForId(id)));
|
||||
foreach (uint charaId in members)
|
||||
groupMembers.Add(new GroupMember(charaId, -1, 0, false, true, Server.GetServer().GetNameForId(charaId)));
|
||||
{
|
||||
if (charaId != id)
|
||||
groupMembers.Add(new GroupMember(charaId, -1, 0, false, true, Server.GetServer().GetNameForId(charaId)));
|
||||
}
|
||||
return groupMembers;
|
||||
}
|
||||
|
||||
|
@@ -31,7 +31,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return Group.GroupInvitationRelationGroup;
|
||||
}
|
||||
|
||||
public override List<GroupMember> BuildMemberList()
|
||||
public override List<GroupMember> BuildMemberList(uint id)
|
||||
{
|
||||
List<GroupMember> groupMembers = new List<GroupMember>();
|
||||
|
||||
|
@@ -63,7 +63,7 @@ namespace FFXIVClassic_World_Server.DataObjects.Group
|
||||
return Group.RetainerGroup;
|
||||
}
|
||||
|
||||
public override List<GroupMember> BuildMemberList()
|
||||
public override List<GroupMember> BuildMemberList(uint id)
|
||||
{
|
||||
List<GroupMember> groupMembers = new List<GroupMember>();
|
||||
|
||||
|
Reference in New Issue
Block a user