public void Reconnect(LoginConnection connection, byte gsId, uint accountId, uint token) { if (!_tokens.ContainsKey(gsId)) { var parentId = GameController.Instance.GetParentId(gsId); if (parentId != null) { gsId = (byte)parentId; } else { // TODO ... return; } } if (!_tokens[gsId].ContainsKey(token)) { // TODO ... return; } if (_tokens[gsId][token] == accountId) { connection.AccountId = accountId; connection.SendPacket(new ACJoinResponsePacket(0, 6, 0)); connection.SendPacket(new ACAuthResponsePacket(connection.AccountId)); } else { // TODO ... } }
/// <summary> /// Kr Method Auth /// </summary> /// <param name="connection"></param> /// <param name="username"></param> public static void Login(LoginConnection connection, string username) { using (var connect = MySQL.Create()) { using (var command = connect.CreateCommand()) { command.CommandText = "SELECT * FROM users where username=@username"; command.Parameters.AddWithValue("@username", username); command.Prepare(); using (var reader = command.ExecuteReader()) { if (!reader.Read()) { connection.SendPacket(new ACLoginDeniedPacket(2)); return; } // TODO ... validation password connection.AccountId = reader.GetUInt32("id"); connection.AccountName = username; connection.LastLogin = DateTime.Now; connection.LastIp = connection.Ip; //connection.SendPacket(new ACJoinResponsePacket(0, 6, 0)); connection.SendPacket(new ACJoinResponsePacket(0, 0x480306, 0)); connection.SendPacket(new ACAuthResponsePacket(connection.AccountId)); } } } }
/// <summary> /// Ru Method Auth /// </summary> /// <param name="connection"></param> /// <param name="username"></param> /// <param name="password"></param> public static void Login(LoginConnection connection, string username, IEnumerable <byte> password) { using (var connect = MySQL.Create()) { using (var command = connect.CreateCommand()) { command.CommandText = "SELECT * FROM users where username=@username"; command.Parameters.AddWithValue("@username", username); command.Prepare(); using (var reader = command.ExecuteReader()) { if (!reader.Read()) { connection.SendPacket(new ACLoginDeniedPacket(2)); return; } var pass = Convert.FromBase64String(reader.GetString("password")); if (!pass.SequenceEqual(password)) { connection.SendPacket(new ACLoginDeniedPacket(2)); return; } connection.AccountId = reader.GetUInt32("id"); connection.AccountName = username; connection.LastLogin = DateTime.Now; connection.LastIp = connection.Ip; connection.SendPacket(new ACJoinResponsePacket(0, 6)); connection.SendPacket(new ACAuthResponsePacket(connection.AccountId)); } } } }
public void Reconnect(LoginConnection connection, byte gsId, uint accountId, uint token) { if (!_tokens.ContainsKey(gsId)) { // TODO ... return; } if (!_tokens[gsId].ContainsKey(token)) { // TODO ... return; } if (_tokens[gsId][token] == accountId) { connection.AccountId = accountId; connection.SendPacket(new ACJoinResponsePacket(0, 6)); connection.SendPacket(new ACAuthResponsePacket(connection.AccountId)); } else { // TODO ... } }
public async void RequestWorldList(LoginConnection connection) { if (_gameServers.Values.Any(x => x.Active)) { var gameServers = _gameServers.Values.ToList(); var(requestIds, task) = RequestController.Instance.Create(gameServers.Count, 20000); // TODO Request 20s for (var i = 0; i < gameServers.Count; i++) { var value = gameServers[i]; if (!value.Active) { continue; } var chars = !connection.Characters.ContainsKey(value.Id); value.SendPacket( new LGRequestInfoPacket(connection.Id, requestIds[i], chars ? connection.AccountId : 0)); } await task; connection.SendPacket(new ACWorldListPacket(gameServers, connection.GetCharacters())); } else { var gsList = new List <GameServer>(_gameServers.Values); connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters())); } }
public void EnterWorld(LoginConnection connection, byte gsId, byte result) { if (result == 0) { if (_gameServers.ContainsKey(gsId)) { connection.SendPacket(new ACWorldCookiePacket((int)connection.Id, _gameServers[gsId])); } else { // TODO ... } } else if (result == 1) { connection.SendPacket(new ACEnterWorldDeniedPacket(0)); // TODO change reason } else { // TODO ... } }
public void RequestWorldList(LoginConnection connection) { var gsList = new List <GameServer>(_gameServers.Values); connection.SendPacket(new ACWorldListPacket(gsList, connection.GetCharacters())); }