public override void Execute() { var dbClient = GameService.GetDbClient(); var bldr = new PacketBuilder(Common.Database.Opcodes.GAME_USER_LOAD); bldr.WriteInt(_player.index); bldr.WriteByte((byte)GameService.GetServerId()); var localPlayer = _player; dbClient.Write(bldr.ToPacket(), (_data, _length) => { GameLoadPlayerResponse response = new GameLoadPlayerResponse(); response = Serializer.Deserialize <GameLoadPlayerResponse>(_data); localPlayer.faction = response.faction; localPlayer.maxGameMode = response.maxGameMode; localPlayer.privilegeLevel = response.privilegeLevel; localPlayer.points = response.points; GameService.PushTask(new SendPlayerFactionTask(localPlayer)); GameService.PushTask(new SendPlayerCharacterListTask(localPlayer)); }); }
/// <summary> /// Handles the loading of a player instance /// </summary> /// <param name="session">The session instance</param> /// <param name="length">The length of the packet</param> /// <param name="opcode">The opcode of the incoming packet</param> /// <param name="requestId"></param> /// <param name="data">The packet data</param> /// <returns></returns> public override bool Handle(ServerSession session, int length, int opcode, int requestId, byte[] data) { var bldr = new PacketBuilder(opcode); bldr.WriteInt(requestId); using (SqlConnection connection = new DatabaseConnector().GetConnection("origin_gamedata")) { int userId = BitConverter.ToInt16(data, 0); byte serverId = data[4]; var cmd = new SqlCommand("load_game_account", connection); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue(":user_id", userId); cmd.Parameters.AddWithValue(":server_id", serverId); connection.Open(); // Execute the prepared statement var reader = cmd.ExecuteReader(); // Loop through the results while (reader.Read()) { GameLoadPlayerResponse gameLoadPlayerResponse = new GameLoadPlayerResponse { faction = reader.GetInt16(0), maxGameMode = reader.GetInt16(1), privilegeLevel = reader.GetInt16(2), points = reader.GetInt16(3) }; var array = Serializer.Serialize(gameLoadPlayerResponse); bldr.WriteBytes(array); } reader.Close(); } session.Write(bldr.ToPacket()); return(true); }