private void HandlePositionQuery(SubPacket subPacket) { var targetActor = subPacket.header.targetId; var sourceActor = subPacket.header.sourceId; if (WorldServer.mConnectedPlayerList.TryGetValue(targetActor, out Character character)) { PositionPacket positionQuery = new PositionPacket(character.XPos, character.YPos, true, character.CharacterId); SubPacket positionQuerySp = new SubPacket(GamePacketOpCode.PositionQuery, 0, targetActor, positionQuery.GetBytes(), SubPacketTypes.GamePacket); client.QueuePacket(positionQuerySp, true, false); //TODO: isAuthed } else { Console.WriteLine("Sending info to {0} that character ID:{1} has disconnected", client.GetFullAddress(), targetActor); DisconnectPacket disconnectedPlayer = new DisconnectPacket(targetActor); SubPacket disconnectedPlayerPacket = new SubPacket(GamePacketOpCode.OtherPlayerDisconnected, 0, targetActor, disconnectedPlayer.GetBytes(), SubPacketTypes.GamePacket); client.QueuePacket(disconnectedPlayerPacket, true, false); } }
public void SendDisconnectPacket() { if (Data.CHARACTER_ID != 0) { DisconnectPacket dcPacket = new DisconnectPacket(Data.CHARACTER_ID); SubPacket packet = new SubPacket(GamePacketOpCode.Disconnect, Data.CHARACTER_ID, 0, dcPacket.GetBytes(), SubPacketTypes.GamePacket); var packetToSend = BasePacket.CreatePacket(packet, PacketProcessor.isAuthenticated, false); packetToSend.header.connectionType = (ushort)BasePacketConnectionTypes.Connect; socket.Send(packetToSend.GetPacketBytes()); } }