数据包分类

This commit is contained in:
Longfeng Qin 2024-09-16 16:58:51 +08:00
parent 5c0737cade
commit 3cf5b50ed2
69 changed files with 331 additions and 91 deletions

View File

@ -232,9 +232,8 @@ namespace PSO2SERVER
{
// Check for and create packets directory if it doesn't exist
var packetPath = string.Format(
"packets/{0}/0x{1:X2} - 0x{2:X2}"
"packets/{0}"
, _server.StartTime.ToShortDateString().Replace('/', '-')
, typeA, typeB
);
if (!Directory.Exists(packetPath))
@ -264,9 +263,8 @@ namespace PSO2SERVER
{
// Check for and create packets directory if it doesn't exist
var packetPath = string.Format(
"UnkClientPackets/{0}/0x{1:X2} - 0x{2:X2}"
"UnkClientPackets/{0}"
, _server.StartTime.ToShortDateString().Replace('/', '-')
, typeA, typeB
);
if (!Directory.Exists(packetPath))
Directory.CreateDirectory(packetPath);

View File

@ -991,7 +991,7 @@ namespace PSO2SERVER
context.SendPacket(new NoPayloadPacket(0x03, 0x2B));
context.SendPacket(new UnlockControlsPacket());
}

View File

@ -37,7 +37,7 @@ namespace PSO2SERVER.Models
public enum PacketFlags : byte
{
None,
PACKED = 0x4,
PACKED = 0x04,
FLAG_10 = 0x10,
FULL_MOVEMENT = 0x20,
OBJECT_RELATED = 0x40

View File

@ -17,7 +17,7 @@ namespace PSO2SERVER.Packets.Handlers
if (context.User == null || context.Character == null)
return;
context.SendPacket(new NoPayloadPacket(0x03, 0x23));
context.SendPacket(new LoadingScreenRemovePacket());
}
#endregion

View File

@ -11,8 +11,9 @@ using PSO2SERVER.Zone;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x34)]
class ReturnToLobbyHandler : PacketHandler
class TeleportCasinoToLobby : PacketHandler
{
/// (0x03, 0x34) Move Casino -> Lobby.
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
PacketReader reader = new PacketReader(data);

View File

@ -10,8 +10,9 @@ using System.Text;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x35)]
class CasinoTeleportHandler : PacketHandler
class TeleportLobbyToCasino : PacketHandler
{
/// (0x03, 0x35) Move Lobby -> Casino.
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
if (context.User == null)

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using PSO2SERVER.Models;
using PSO2SERVER.Object;
using PSO2SERVER.Packets.PSOPackets;
using PSO2SERVER.Zone;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x38)]
class TeleportBridgeToLobby : PacketHandler
{
/// (0x03, 0x38) Move Bridge -> Lobby. TODO
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
PacketReader reader = new PacketReader(data);
reader.ReadUInt64(); // Skip 8 bytes
if(reader.ReadUInt32() != 0x10)
{
Logger.WriteWarning("[WRN] Packet 0x3 0x34's first value was not 0x10! Investigate.");
}
uint partOfLobby = reader.ReadUInt32();
PSOLocation destination;
if(partOfLobby == 0) // Gate area
{
destination = new PSOLocation(0f, 1f, 0f, 0f, -0.22f, 2.4f, 198.75f);
}
else // Shop area
{
destination = new PSOLocation(0f, 1f, 0f, 20f, 0.20f, 1.23f, -175.25f);
}
Map lobbyMap = ZoneManager.Instance.MapFromInstance("lobby", "lobby");
lobbyMap.SpawnClient(context, destination, "lobby");
}
}
}

View File

@ -0,0 +1,30 @@
using PSO2SERVER.Models;
using PSO2SERVER.Object;
using PSO2SERVER.Packets.PSOPackets;
using PSO2SERVER.Zone;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x39)]
class TeleportLobbyToBridge : PacketHandler
{
/// (0x03, 0x39) Move Lobby -> Bridge.
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
if (context.User == null)
return;
// Dunno what these are yet.
context.SendPacket(0x11, 0xA, 0x0, BitConverter.GetBytes(context.User.PlayerId));
context.SendPacket(0x1E, 0xC, 0x0, BitConverter.GetBytes(101));
Map bridgeMap = ZoneManager.Instance.MapFromInstance("bridge", "lobby");
bridgeMap.SpawnClient(context, bridgeMap.GetDefaultLocation());
}
}
}

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using PSO2SERVER.Models;
using PSO2SERVER.Object;
using PSO2SERVER.Packets.PSOPackets;
using PSO2SERVER.Zone;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x3B)]
class TeleportCafeToLobby : PacketHandler
{
/// (0x03, 0x3B) Move Cafe -> Lobby.
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
PacketReader reader = new PacketReader(data);
reader.ReadUInt64(); // Skip 8 bytes
if(reader.ReadUInt32() != 0x10)
{
Logger.WriteWarning("[WRN] Packet 0x3 0x34's first value was not 0x10! Investigate.");
}
uint partOfLobby = reader.ReadUInt32();
PSOLocation destination;
if(partOfLobby == 0) // Gate area
{
destination = new PSOLocation(0f, 1f, 0f, 0f, -0.22f, 2.4f, 198.75f);
}
else // Shop area
{
destination = new PSOLocation(0f, 1f, 0f, 20f, 0.20f, 1.23f, -175.25f);
}
Map lobbyMap = ZoneManager.Instance.MapFromInstance("lobby", "lobby");
lobbyMap.SpawnClient(context, destination, "lobby");
}
}
}

View File

@ -0,0 +1,30 @@
using PSO2SERVER.Models;
using PSO2SERVER.Object;
using PSO2SERVER.Packets.PSOPackets;
using PSO2SERVER.Zone;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Packets.Handlers
{
[PacketHandlerAttr(0x03, 0x3C)]
class TeleportLobbyToCafe : PacketHandler
{
/// (0x03, 0x3C) Move Lobby -> Cafe.
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
if (context.User == null)
return;
// Dunno what these are yet.
context.SendPacket(0x11, 0xA, 0x0, BitConverter.GetBytes(context.User.PlayerId));
context.SendPacket(0x1E, 0xC, 0x0, BitConverter.GetBytes(101));
Map dstMap = ZoneManager.Instance.MapFromInstance("cafe", "lobby");
dstMap.SpawnClient(context, dstMap.GetDefaultLocation());
}
}
}

View File

@ -8,27 +8,6 @@ namespace PSO2SERVER.Packets.Handlers
[PacketHandlerAttr(0x07, 0x00)]
public class ChatHandler : PacketHandler
{
//public uint Unk1 { get; set; }
//public uint Unk2 { get; set; }
//public uint Unk3 { get; set; }
//public byte[] VerId { get; set; } = new byte[0x20];
//public List<NetInterface> Interfaces { get; set; } = new List<NetInterface>();
//public byte[] Unk4 { get; set; } = new byte[0x90];
//public byte[] Unk5 { get; set; } = new byte[0x10];
//public Language TextLang { get; set; }
//public Language VoiceLang { get; set; }
//public Language TextLang2 { get; set; }
//public Language LangLang { get; set; }
//public string Language { get; set; } = new string(' ', 0x10);
//public uint Unk6 { get; set; }
//public uint Unk7 { get; set; }
//public uint Magic1 { get; set; }
//public byte[] Unk8 { get; set; } = new byte[0x20];
//public byte[] Unk9 { get; set; } = new byte[0x44];
//public string Username { get; set; } = new string(' ', 0x40);
//public string Password { get; set; } = new string(' ', 0x40);
//public uint Unk10 { get; set; }
//public string Unk11 { get; set; }
#region implemented abstract members of PacketHandler
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)

View File

@ -37,7 +37,7 @@ namespace PSO2SERVER.Packets.Handlers
lobbyMap.SpawnClient(context, lobbyMap.GetDefaultLocation(), "lobby");
// Unlock Controls
context.SendPacket(new NoPayloadPacket(0x03, 0x2B));
context.SendPacket(new UnlockControlsPacket());
//context.SendPacket(File.ReadAllBytes("testbed/237.23-7.210.189.208.30.bin"));

View File

@ -0,0 +1,38 @@
using PSO2SERVER.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Packets.PSOPackets
{
public class LoadingScreenRemovePacket : Packet
{
private readonly byte _subtype;
private readonly byte _type;
public LoadingScreenRemovePacket()
{
_type = 0x03;
_subtype = 0x23;
}
#region implemented abstract members of Packet
public override byte[] Build()
{
return new byte[0];
}
public override PacketHeader GetHeader()
{
return new PacketHeader
{
Type = _type,
Subtype = _subtype
};
}
#endregion
}
}

View File

@ -0,0 +1,34 @@
using PSO2SERVER.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Packets.PSOPackets
{
public class LoadingLevelPacket : Packet
{
private readonly byte _subtype;
private readonly byte _type;
public LoadingLevelPacket()
{
_type = 0x03;
_subtype = 0x24;
}
#region implemented abstract members of Packet
public override byte[] Build()
{
return new byte[0];
}
public override PacketHeader GetHeader()
{
return new PacketHeader(_type, _subtype, PacketFlags.PACKED);
}
#endregion
}
}

View File

@ -0,0 +1,38 @@
using PSO2SERVER.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Packets.PSOPackets
{
public class UnlockControlsPacket : Packet
{
private readonly byte _subtype;
private readonly byte _type;
public UnlockControlsPacket()
{
_type = 0x03;
_subtype = 0x2B;
}
#region implemented abstract members of Packet
public override byte[] Build()
{
return new byte[0];
}
public override PacketHeader GetHeader()
{
return new PacketHeader
{
Type = _type,
Subtype = _subtype
};
}
#endregion
}
}

View File

@ -26,7 +26,7 @@ namespace PSO2SERVER.Packets.PSOPackets
public override PacketHeader GetHeader()
{
return new PacketHeader(0x4, 0x2, PacketFlags.OBJECT_RELATED);
return new PacketHeader(0x04, 0x02, PacketFlags.OBJECT_RELATED);
}
}
}

View File

@ -170,52 +170,59 @@
<Compile Include="Models\Quest.cs" />
<Compile Include="Network\PortChecker.cs" />
<Compile Include="Object\ObjectManager.cs" />
<Compile Include="Packets\Handlers\03-06-UNK.cs" />
<Compile Include="Packets\Handlers\03-00-MapTransfer.cs" />
<Compile Include="Packets\Handlers\03-03-InitialLoad.cs" />
<Compile Include="Packets\Handlers\03-0C-PingResponse.cs" />
<Compile Include="Packets\Handlers\03-10-DoItMaybe.cs" />
<Compile Include="Packets\Handlers\03-16-CampshipTeleportDown.cs" />
<Compile Include="Packets\Handlers\04-13-UNK.cs" />
<Compile Include="Packets\Handlers\03-12-CampshipTeleport.cs" />
<Compile Include="Packets\Handlers\03-35-CasinoTeleportHandler.cs" />
<Compile Include="Packets\Handlers\04-08-MovementActionHandler.cs" />
<Compile Include="Packets\Handlers\04-3C-ActionUpdateHandler.cs" />
<Compile Include="Packets\Handlers\04-71-MovementEndHandler.cs" />
<Compile Include="Packets\Handlers\0B-09-UNK.cs" />
<Compile Include="Packets\Handlers\0B-15-QuestCounterAvailableHander.cs" />
<Compile Include="Packets\Handlers\0B-17-QuestListRequestHandler.cs" />
<Compile Include="Packets\Handlers\0B-19-QuestDifficultyRequestHandler.cs" />
<Compile Include="Packets\Handlers\0B-30-QuestCounterHandler.cs" />
<Compile Include="Packets\Handlers\0E-19-UNK.cs" />
<Compile Include="Packets\Handlers\11-06-DeleteCharacter.cs" />
<Compile Include="Packets\Handlers\11-0D-PingTimestampResponse.cs" />
<Compile Include="Packets\Handlers\11-1D-GuildInfoRequest.cs" />
<Compile Include="Packets\Handlers\11-2B-LogOutRequest.cs" />
<Compile Include="Packets\Handlers\11-3E-CharacterSpawn.cs" />
<Compile Include="Packets\Handlers\04-14-ObjectInteract.cs" />
<Compile Include="Packets\Handlers\0E-0C-QuestCounterHandler.cs" />
<Compile Include="Packets\Handlers\03-34-ReturnToLobbyHandler.cs" />
<Compile Include="Packets\Handlers\11-41-CreateCharacterOne.cs" />
<Compile Include="Packets\Handlers\2F-06-SymbolArtHandler.cs" />
<Compile Include="Packets\PSOPackets\03-08-ServerHelloPacket.cs" />
<Compile Include="Packets\PSOPackets\1C-1F-GuildInfoPacket.cs" />
<Compile Include="Packets\PSOPackets\11-01-LoginDataPacket.cs" />
<Compile Include="Packets\PSOPackets\04-07-MovementPacket.cs" />
<Compile Include="Packets\PSOPackets\04-15-ObjectActionPacket.cs" />
<Compile Include="Packets\PSOPackets\21-01-PalettePacket.cs" />
<Compile Include="Packets\PSOPackets\0E-02-PartyInitPacket.cs" />
<Compile Include="Packets\PSOPackets\0E-31-QuestStartPacket.cs" />
<Compile Include="Packets\PSOPackets\0B-1A-QuestDifficultyPacket.cs" />
<Compile Include="Packets\PSOPackets\0B-16-QuestAvailablePacket.cs" />
<Compile Include="Packets\PSOPackets\0B-18-QuestListPacket.cs" />
<Compile Include="Packets\PSOPackets\11-1C-SetCurrencyPacket.cs" />
<Compile Include="Packets\PSOPackets\0F-14-SetMesetaPacket.cs" />
<Compile Include="Packets\PSOPackets\0E-25-SetQuestPacket.cs" />
<Compile Include="Packets\PSOPackets\03-04-LoadingScreenTransitionPacket.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-06-UNK.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-00-MapTransfer.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-03-InitialLoad.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-0C-PingResponse.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-10-DoItMaybe.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-16-CampshipTeleportDown.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-3B-TeleportCafeToLobby.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-3C-TeleportLobbyToCafe.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-39-TeleportLobbyToBridge.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-38-TeleportBridgeToLobby.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-13-UNK.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-12-CampshipTeleport.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-35-TeleportLobbyToCasino.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-08-MovementActionHandler.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-3C-ActionUpdateHandler.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-71-MovementEndHandler.cs" />
<Compile Include="Packets\Handlers\0B-QuestHandler\0B-09-UNK.cs" />
<Compile Include="Packets\Handlers\0B-QuestHandler\0B-15-QuestCounterAvailableHander.cs" />
<Compile Include="Packets\Handlers\0B-QuestHandler\0B-17-QuestListRequestHandler.cs" />
<Compile Include="Packets\Handlers\0B-QuestHandler\0B-19-QuestDifficultyRequestHandler.cs" />
<Compile Include="Packets\Handlers\0B-QuestHandler\0B-30-QuestCounterHandler.cs" />
<Compile Include="Packets\Handlers\0E-PartyHandler\0E-19-UNK.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-06-DeleteCharacter.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-0D-PingTimestampResponse.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-1D-GuildInfoRequest.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-2B-LogOutRequest.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-3E-CharacterSpawn.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-14-ObjectInteract.cs" />
<Compile Include="Packets\Handlers\0E-PartyHandler\0E-0C-QuestCounterHandler.cs" />
<Compile Include="Packets\Handlers\03-ServerHandler\03-34-TeleportCasinoToLobby.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-41-CreateCharacterOne.cs" />
<Compile Include="Packets\Handlers\2F-SymbolHandler\2F-06-SymbolArtHandler.cs" />
<Compile Include="Packets\PSOPackets\03-ServerPacket\03-2B-UnlockControlsPacket.cs" />
<Compile Include="Packets\PSOPackets\03-ServerPacket\03-24-LoadingLevelPacket.cs" />
<Compile Include="Packets\PSOPackets\03-ServerPacket\03-23-LoadingScreenRemovePacket.cs" />
<Compile Include="Packets\PSOPackets\03-ServerPacket\03-08-ServerHelloPacket.cs" />
<Compile Include="Packets\PSOPackets\1C-AlliancePacket\1C-1F-GuildInfoPacket.cs" />
<Compile Include="Packets\PSOPackets\11-ClientPacket\11-01-LoginDataPacket.cs" />
<Compile Include="Packets\PSOPackets\04-ObjectPacket\04-07-MovementPacket.cs" />
<Compile Include="Packets\PSOPackets\04-ObjectPacket\04-15-ObjectActionPacket.cs" />
<Compile Include="Packets\PSOPackets\21-PalettePacket\21-01-PalettePacket.cs" />
<Compile Include="Packets\PSOPackets\0E-PartyPacket\0E-02-PartyInitPacket.cs" />
<Compile Include="Packets\PSOPackets\0E-PartyPacket\0E-31-QuestStartPacket.cs" />
<Compile Include="Packets\PSOPackets\0B-QuestPacket\0B-1A-QuestDifficultyPacket.cs" />
<Compile Include="Packets\PSOPackets\0B-QuestPacket\0B-16-QuestAvailablePacket.cs" />
<Compile Include="Packets\PSOPackets\0B-QuestPacket\0B-18-QuestListPacket.cs" />
<Compile Include="Packets\PSOPackets\11-ClientPacket\11-1C-SetCurrencyPacket.cs" />
<Compile Include="Packets\PSOPackets\0F-ItemPacket\0F-14-SetMesetaPacket.cs" />
<Compile Include="Packets\PSOPackets\0E-PartyPacket\0E-25-SetQuestPacket.cs" />
<Compile Include="Packets\PSOPackets\03-ServerPacket\03-04-LoadingScreenTransitionPacket.cs" />
<Compile Include="Packets\PSOPackets\UN-UN-SetScenePacket.cs" />
<Compile Include="Packets\PSOPackets\2F-07-SymbolArtList.cs" />
<Compile Include="Packets\PSOPackets\04-02-TeleportTransferPacket.cs" />
<Compile Include="Packets\PSOPackets\2F-SymbolPacket\2F-07-SymbolArtList.cs" />
<Compile Include="Packets\PSOPackets\04-ObjectPacket\04-02-TeleportTransferPacket.cs" />
<Compile Include="Party\Party.cs" />
<Compile Include="Party\PartyManager.cs" />
<Compile Include="Program.cs" />
@ -224,11 +231,11 @@
<Compile Include="Network\SocketClient.cs" />
<Compile Include="Network\SocketServer.cs" />
<Compile Include="Server.cs" />
<Compile Include="Packets\PacketHandler.cs" />
<Compile Include="Packets\Handlers\11-0B-KeyExchange.cs" />
<Compile Include="Packets\Handlers\11-00-Login.cs" />
<Compile Include="Packets\Handlers\PacketHandler.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-0B-KeyExchange.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-00-Login.cs" />
<Compile Include="Models\Character.cs" />
<Compile Include="Packets\Handlers\11-54-CreateCharacterTwo.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-54-CreateCharacterTwo.cs" />
<Compile Include="Packets\PacketWriter.cs" />
<Compile Include="Models\FixedPackets.cs" />
<Compile Include="QueryServer.cs" />
@ -238,15 +245,15 @@
<Compile Include="Crypto\ARC4Managed.cs" />
<Compile Include="Helper.cs" />
<Compile Include="Packets\PacketReader.cs" />
<Compile Include="Packets\Handlers\11-05-CharacterCreate.cs" />
<Compile Include="Packets\Handlers\11-02-CharacterList.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-05-CharacterCreate.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-02-CharacterList.cs" />
<Compile Include="Packets\Packet.cs" />
<Compile Include="Packets\PSOPackets\19-01-SystemMessagePacket.cs" />
<Compile Include="Packets\Handlers\11-04-StartGame.cs" />
<Compile Include="Packets\NoPayloadPacket.cs" />
<Compile Include="Packets\PSOPackets\08-04-CharacterSpawnPacket.cs" />
<Compile Include="Packets\Handlers\04-07-MovementHandlers.cs" />
<Compile Include="Packets\Handlers\07-00-ChatHandler.cs" />
<Compile Include="Packets\PSOPackets\19-LobbyPacket\19-01-SystemMessagePacket.cs" />
<Compile Include="Packets\Handlers\11-ClientHandler\11-04-StartGame.cs" />
<Compile Include="Packets\PSOPackets\NoPayloadPacket.cs" />
<Compile Include="Packets\PSOPackets\08-SpawnPacket\08-04-CharacterSpawnPacket.cs" />
<Compile Include="Packets\Handlers\04-ObjectHandler\04-07-MovementHandlers.cs" />
<Compile Include="Packets\Handlers\07-ChatHandler\07-00-ChatHandler.cs" />
<Compile Include="Zone\Map.cs" />
<Compile Include="Zone\ZoneManager.cs" />
</ItemGroup>

View File

@ -102,7 +102,7 @@ namespace PSO2SERVER.Zone
if (questOveride != "") // TODO: This is a temporary hack, fix me!!
{
var setAreaPacket = File.ReadAllBytes("Resources/quests/" + questOveride + ".bin");
c.SendPacket(0x03, 0x24, 4, setAreaPacket);
c.SendPacket(0x03, 0x24, 0x04, setAreaPacket);
}
else
{
@ -161,7 +161,7 @@ namespace PSO2SERVER.Zone
}
// Unlock Controls
c.SendPacket(new NoPayloadPacket(0x03, 0x2B)); // Inital spawn only, move this!
c.SendPacket(new UnlockControlsPacket()); // Inital spawn only, move this!
Clients.Add(c);