mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-21 04:07:48 +00:00
Merge branch 'develop' of https://bitbucket.org/Ioncannon/ffxiv-classic-server into develop
This commit is contained in:
commit
0c8642d6ab
5 changed files with 34 additions and 6 deletions
|
@ -56,9 +56,12 @@ namespace FFXIVClassic_Map_Server
|
||||||
//World Server - Session Begin
|
//World Server - Session Begin
|
||||||
case 0x1000:
|
case 0x1000:
|
||||||
subpacket.DebugPrintSubPacket();
|
subpacket.DebugPrintSubPacket();
|
||||||
|
|
||||||
|
SessionBeginPacket beginSessionPacket = new SessionBeginPacket(subpacket.data);
|
||||||
|
|
||||||
session = mServer.AddSession(subpacket.header.targetId);
|
session = mServer.AddSession(subpacket.header.targetId);
|
||||||
|
|
||||||
if (session.GetActor().destinationZone != 0)
|
if (beginSessionPacket.isLogin)
|
||||||
Server.GetWorldManager().DoZoneIn(session.GetActor(), false, session.GetActor().destinationSpawnType);
|
Server.GetWorldManager().DoZoneIn(session.GetActor(), false, session.GetActor().destinationSpawnType);
|
||||||
|
|
||||||
Program.Log.Info("{0} has been added to the session list.", session.GetActor().customDisplayName);
|
Program.Log.Info("{0} has been added to the session list.", session.GetActor().customDisplayName);
|
||||||
|
|
|
@ -9,11 +9,25 @@ namespace FFXIVClassic_Map_Server.packets.WorldPackets.Receive
|
||||||
{
|
{
|
||||||
class SessionBeginPacket
|
class SessionBeginPacket
|
||||||
{
|
{
|
||||||
|
public bool isLogin;
|
||||||
public bool invalidPacket = false;
|
public bool invalidPacket = false;
|
||||||
|
|
||||||
public SessionBeginPacket(byte[] data)
|
public SessionBeginPacket(byte[] data)
|
||||||
{
|
{
|
||||||
|
using (MemoryStream mem = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (BinaryReader binReader = new BinaryReader(mem))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
isLogin = binReader.ReadByte() != 0;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
invalidPacket = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,9 +150,9 @@ namespace FFXIVClassic_World_Server.DataObjects
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendSessionStart(Session session)
|
public void SendSessionStart(Session session, bool isLogin = false)
|
||||||
{
|
{
|
||||||
SendPacket(SessionBeginPacket.BuildPacket(session));
|
SendPacket(SessionBeginPacket.BuildPacket(session, isLogin));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendSessionEnd(Session session)
|
public void SendSessionEnd(Session session)
|
||||||
|
|
|
@ -56,7 +56,7 @@ namespace FFXIVClassic_World_Server
|
||||||
mServer.AddSession(client, Session.Channel.ZONE, hello.sessionId);
|
mServer.AddSession(client, Session.Channel.ZONE, hello.sessionId);
|
||||||
Session session = mServer.GetSession(hello.sessionId);
|
Session session = mServer.GetSession(hello.sessionId);
|
||||||
session.routing1 = mServer.GetWorldManager().GetZoneServer(session.currentZoneId);
|
session.routing1 = mServer.GetWorldManager().GetZoneServer(session.currentZoneId);
|
||||||
session.routing1.SendSessionStart(session);
|
session.routing1.SendSessionStart(session, true);
|
||||||
}
|
}
|
||||||
else if (packet.header.connectionType == BasePacket.TYPE_CHAT)
|
else if (packet.header.connectionType == BasePacket.TYPE_CHAT)
|
||||||
mServer.AddSession(client, Session.Channel.CHAT, hello.sessionId);
|
mServer.AddSession(client, Session.Channel.CHAT, hello.sessionId);
|
||||||
|
|
|
@ -14,10 +14,21 @@ namespace FFXIVClassic_World_Server.Packets.WorldPackets.Send
|
||||||
public const ushort OPCODE = 0x1000;
|
public const ushort OPCODE = 0x1000;
|
||||||
public const uint PACKET_SIZE = 0x24;
|
public const uint PACKET_SIZE = 0x24;
|
||||||
|
|
||||||
public static SubPacket BuildPacket(Session session)
|
public static SubPacket BuildPacket(Session session, bool isLogin)
|
||||||
{
|
{
|
||||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
byte[] data = new byte[PACKET_SIZE - 0x20];
|
||||||
|
|
||||||
|
if (isLogin)
|
||||||
|
{
|
||||||
|
using (MemoryStream mem = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
||||||
|
{
|
||||||
|
binWriter.Write((Byte)1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new SubPacket(true, OPCODE, 0, session.sessionId, data);
|
return new SubPacket(true, OPCODE, 0, session.sessionId, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue