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(); }
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); }
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; }
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); }
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()); } }
public static void SendPacket(Connection con, ASendPacket packet) { if (con.Client.CommunicationState == Hik.Communication.Scs.Communication.CommunicationStates.Connected && con.IsValid) packet.Send(con); }