public SpCreateCharacter(Player playerData, Connection conn)
 {
     PlayerData = playerData;
     Connection = conn;
     Data1 =
      ("00000000009EDB45FEF6" +
       "7F000000F08C170B0000000000F4010B" +
       "00340000000000230D0000F028B70100" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "00000000000000000000000000000000" +
       "0000");
     Data2 =
      ("FFFFFFFF" +
       "FFFFFFFF0032420A0000000100000000" +
       "000000E0000000000000000000000000" +
       "00FFFFFFFFFFFFFFFF00000000000000" +
       "0000000000000000000000F0F58C170B" +
       "00");
 }
        public static void LeaveWorld(Connection connection)
        {
            if (connection.CurrentPlayer != null)
                connection.CurrentPlayer.Connection = null;
            connection.CurrentPlayer = null;

            connection.Client.Disconnect();
        }
Exemplo n.º 3
0
        public void GetAccountData(Connection conn, string token)
        {
            //TODO
            int hash = int.Parse(token);

            AccountData accData = LoginBridge.ServiceProxy.AccountData(hash);

            if (accData == null)
            {
                conn.Client.Disconnect();
                return;
            }

            conn.AccountInfo = accData;
            PlayerWorldService.SendCharacterList(conn);
        }
Exemplo n.º 4
0
        public void Process(IConnection connection, byte[] datas)
        {
            if (connection == null || !connection.IsValid)
                return;

            Connection = (Connection)connection;

            try
            {
                using (Reader = new BinaryReader(new MemoryStream(datas)))
                    Read();

                Process();
            }
            catch (Exception ex)
            {
                Log.WarnException("ARecvPacket", ex);
            }
        }
        public static void EnterInWorld(Connection connection, int characterId)
        {
            //Jesus... TODO
            var player = PlayerService.Players.LastOrDefault(s => s.PlayerId == characterId);

            if (player == null)
            {
                connection.Client.Disconnect();
                return;
            }

            new SpEnterWorldResponse().Send(connection);
            new SpUnk0E90().Send(connection);
            new SpCharacterInfo(player).Send(connection, 1);
            new SpUnk0Bf0().Send(connection, 1);
            new SpUnk0BFD_1().Send(connection);
            new SpUnk0BFD_2().Send(connection);

            connection.CurrentPlayer = player;
            player.Connection = connection;
        }
Exemplo n.º 6
0
 public static void CreateNewCharacter(Connection connection, CharacterData playerData)
 {
     var cached = new Player
     {
         AccountId = connection.AccountInfo.Id,
         CharacterData = playerData
     };
     lock (PlayersLock)
     {
         if (Players.Exists(s => s.CharacterData.Name == playerData.Name))
         {
             new SpFailCreateCharacter().Send(connection);
             return;
         }
         cached.PlayerId = GUIDGenerator.NextGUID();
         cached.Level = 1;
         Players.Add(cached);
     }
     new SpCreateCharacter(cached,connection).Send(connection, 1);
     Log.Info("New character created!");
 }
 public static void SendCharacterList(Connection connection)
 {
     new SpCharacterList(
         PlayerService.Players.Where(p => p.AccountId == connection.AccountInfo.Id).ToList()).Send(connection, 1);
 }
Exemplo n.º 8
0
        public static void HandleIncomingPacket(Connection connection, Message message)
        {
            if (Recv.ContainsKey(message.OpCode))
            {
                 Log.Info("Received packet '{0}' with datas:\n{1}", Recv[message.OpCode].Name,message.Data.FormatHex());
                ((ARecvPacket)Activator.CreateInstance(Recv[message.OpCode])).Process(connection, message.Data);
            }
            else
            {
                Log.Warn("Unknown GsPacket opCode: 0x{0} [{1}]", BitConverter.GetBytes(message.OpCode).Reverse().ToArray().ToHex(), message.Data.Length);

                Log.Warn("Data:\n{0}", message.Data.FormatHex());
            }
        }
Exemplo n.º 9
0
 public static void SendPacket(Connection con, ASendPacket packet)
 {
     if (con.Client.CommunicationState == Hik.Communication.Scs.Communication.CommunicationStates.Connected && con.IsValid)
         packet.Send(con);
 }