Party invite done, as well as chat. Fixed double output of say packets. Note: Still need to implement name version of invite!!!

This commit is contained in:
Filip Maj 2017-01-02 14:35:11 -05:00
parent 5af1f6dba6
commit 5d494255ad
16 changed files with 231 additions and 23 deletions

View file

@ -286,7 +286,7 @@
<Compile Include="packets\WorldPackets\Send\Group\CreateLinkshellPacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\DeleteLinkshellPacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\ModifyLinkshellPacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\PartyInviteResultPacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\GroupInviteResultPacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\PartyInvitePacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\PartyLeavePacket.cs" />
<Compile Include="packets\WorldPackets\Send\Group\PartyModifyPacket.cs" />

View file

@ -111,7 +111,8 @@ namespace FFXIVClassic_Map_Server
return; ;
}
session.GetActor().BroadcastPacket(SendMessagePacket.BuildPacket(session.id, session.id, chatMessage.logType, session.GetActor().customDisplayName, chatMessage.message), false);
if (chatMessage.logType == SendMessagePacket.MESSAGE_TYPE_SAY || chatMessage.logType == SendMessagePacket.MESSAGE_TYPE_SHOUT)
session.GetActor().BroadcastPacket(SendMessagePacket.BuildPacket(session.id, session.id, chatMessage.logType, session.GetActor().customDisplayName, chatMessage.message), false);
break;
//Langauge Code (Client safe to send packets to now)

View file

@ -748,6 +748,23 @@ namespace FFXIVClassic_Map_Server
currentPlayerParties.Remove(party.groupIndex);
}
public void CreateInvitePartyGroup(Player player, string name)
{
SubPacket invitePacket = PartyInvitePacket.BuildPacket(player.playerSession, name);
player.QueuePacket(invitePacket);
}
public void CreateInvitePartyGroup(Player player, uint actorId)
{
SubPacket invitePacket = PartyInvitePacket.BuildPacket(player.playerSession, actorId);
player.QueuePacket(invitePacket);
}
public void GroupInviteResult(Player player, uint groupType, uint result)
{
SubPacket groupInviteResultPacket = GroupInviteResultPacket.BuildPacket(player.playerSession, groupType, result);
player.QueuePacket(groupInviteResultPacket);
}
public Player GetPCInWorld(string name)
{
foreach (Zone zone in zoneList.Values)

View file

@ -608,14 +608,15 @@ namespace FFXIVClassic_Map_Server.Actors
public void BroadcastPacket(SubPacket packet, bool sendToSelf)
{
if (sendToSelf)
QueuePacket(packet);
foreach (Actor a in playerSession.actorInstanceList)
{
if (a is Player)
{
Player p = (Player)a;
Player p = (Player)a;
if (p.Equals(this) && !sendToSelf)
continue;
SubPacket clonedPacket = new SubPacket(packet, a.actorId);
p.QueuePacket(clonedPacket);
}

View file

@ -9,18 +9,19 @@ using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Send.Group
{
class PartyInviteResultPacket
class GroupInviteResultPacket
{
public const ushort OPCODE = 0x1023;
public const uint PACKET_SIZE = 0x28;
public static SubPacket BuildPacket(Session session, uint result)
public static SubPacket BuildPacket(Session session, uint groupType, uint result)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
binWriter.Write((UInt32)groupType);
binWriter.Write((UInt32)result);
}
}