private void HandleSelect(LoginSession session, PacketReader packet)
    {
        long characterId = packet.ReadLong();

        packet.ReadShort(); // 01 00
        Logger.Info($"Logging in to game with char id: {characterId}");

        string     ipAddress = Environment.GetEnvironmentVariable("IP");
        int        port      = int.Parse(Environment.GetEnvironmentVariable("GAME_PORT"));
        IPEndPoint endpoint  = new(IPAddress.Parse(ipAddress), port);

        AuthData authData = DatabaseManager.AuthData.GetByAccountId(session.AccountId);
        Player   player   = DatabaseManager.Characters.FindPartialPlayerById(characterId);

        if (player is null)
        {
            Logger.Error("Character not found!");
            return;
        }

        authData.OnlineCharacterId = characterId;

        DatabaseManager.AuthData.UpdateOnlineCharacterId(authData);
        DatabaseManager.Characters.UpdateChannelId(characterId, channelId: 1, instanceId: 1, isMigrating: false);

        session.SendFinal(MigrationPacket.LoginToGame(endpoint, player.MapId, authData), logoutNotice: false);
    }
예제 #2
0
        private void HandleChangeCharacter(GameSession session)
        {
            session.FieldManager.RemovePlayer(session, session.FieldPlayer);
            DatabaseManager.UpdateCharacter(session.Player);
            AuthData authData = AuthStorage.GetData(session.Player.AccountId);

            session.SendFinal(MigrationPacket.GameToLogin(LoginEndpoint, authData));
        }
예제 #3
0
        public override void Handle(GameSession session, PacketReader packet)
        {
            byte function = packet.ReadByte();

            if (function == 0)
            {
                session.FieldManager.RemovePlayer(session, session.FieldPlayer);
                AuthData authData = AuthStorage.GetData(session.Player.AccountId);

                session.SendFinal(MigrationPacket.GameToLogin(loginEndpoint, authData));
            }
        }
예제 #4
0
    private void HandleSelect(LoginSession session, IByteReader packet)
    {
        long characterId = packet.ReadLong();

        packet.ReadShort(); // 01 00

        var request = new MigrateOutRequest {
            AccountId   = session.AccountId,
            CharacterId = characterId
        };

        logger.LogInformation("Logging in to game as {Request}", request);

        var response = world.MigrateOut(request);
        var endpoint = new IPEndPoint(IPAddress.Parse(response.IpAddress), response.Port);

        session.Send(MigrationPacket.LoginToGame(endpoint, response.Token, 2000062));
        session.Disconnect();
        //LoginPacket.LoginError("message?");
    }
예제 #5
0
        public void HandleSelect(LoginSession session, PacketReader packet)
        {
            long charId = packet.ReadLong();

            packet.ReadShort(); // 01 00
            logger.Info($"Logging in to game with charId:{charId}");

            var endpoint = new IPEndPoint(IPAddress.Loopback, GameServer.PORT);
            var authData = new AuthData
            {
                TokenA      = session.GetToken(),
                TokenB      = session.GetToken(),
                CharacterId = charId,
            };

            // Write AuthData to storage shared with GameServer
            AuthStorage.SetData(session.AccountId, authData);

            session.Send(MigrationPacket.LoginToGame(endpoint, authData));
            //LoginPacket.LoginError("message?");
        }
        public void HandleSelect(LoginSession session, PacketReader packet)
        {
            long charId = packet.ReadLong();

            packet.ReadShort(); // 01 00
            Logger.Info("Logging in to game with char id: {charId}", charId);

            string     ipAddress = Environment.GetEnvironmentVariable("IP");
            int        port      = int.Parse(Environment.GetEnvironmentVariable("GAME_PORT"));
            IPEndPoint endpoint  = new IPEndPoint(IPAddress.Parse(ipAddress), port);
            AuthData   authData  = new AuthData
            {
                TokenA      = LoginSession.GetToken(),
                TokenB      = LoginSession.GetToken(),
                CharacterId = charId,
            };

            // Write AuthData to storage shared with GameServer
            AuthStorage.SetData(session.AccountId, authData);

            session.SendFinal(MigrationPacket.LoginToGame(endpoint, authData));

            // LoginPacket.LoginError("message?");
        }
예제 #7
0
    private void HandleChangeCharacter(GameSession session)
    {
        session.FieldManager.RemovePlayer(session);

        session.SendFinal(MigrationPacket.GameToLogin(LoginEndpoint, session.Player.Account.AuthData), logoutNotice: true);
    }