Linkshell and WorkValue work.

This commit is contained in:
Filip Maj 2016-12-16 20:06:17 -05:00
parent 1148619ca5
commit 2cc63960a7
10 changed files with 156 additions and 45 deletions

View file

@ -1,6 +1,7 @@
using FFXIVClassic.Common;
using FFXIVClassic_World_Server.DataObjects;
using FFXIVClassic_World_Server.DataObjects.Group;
using FFXIVClassic_World_Server.Packets.Receive.Subpackets;
using FFXIVClassic_World_Server.Packets.WorldPackets.Receive;
using FFXIVClassic_World_Server.Packets.WorldPackets.Receive.Group;
using System;
@ -161,12 +162,11 @@ namespace FFXIVClassic_World_Server
public void OnReceiveSubPacketFromZone(ZoneServer zoneServer, SubPacket subpacket)
{
uint sessionId = subpacket.header.targetId;
Session session = GetSession(sessionId);
if (subpacket.gameMessage.opcode >= 0x1000)
{
subpacket.DebugPrintSubPacket();
uint targetSession = subpacket.header.targetId;
Session session = GetSession(targetSession);
subpacket.DebugPrintSubPacket();
switch (subpacket.gameMessage.opcode)
{
@ -236,6 +236,21 @@ namespace FFXIVClassic_World_Server
break;
}
}
//Special case for groups. If it's a world group, send values, else send to zone server
else if (subpacket.gameMessage.opcode == 0x133)
{
GroupCreatedPacket groupCreatedPacket = new GroupCreatedPacket(subpacket.data);
if (mCurrentWorldGroups.ContainsKey(groupCreatedPacket.groupId))
{
mCurrentWorldGroups[groupCreatedPacket.groupId].SendInitWorkValues(session);
}
else //Not a world group, send to zone server
{
ClientConnection conn = mZoneSessionList[sessionId].clientConnection;
conn.QueuePacket(subpacket, true, false);
conn.FlushQueuedSendPackets();
}
}
else if (mZoneSessionList.ContainsKey(sessionId))
{
ClientConnection conn = mZoneSessionList[sessionId].clientConnection;