Пример #1
0
        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);
            }
        }
Пример #2
0
 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());
     }
 }