Ejemplo n.º 1
0
        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));
            });
        }
Ejemplo n.º 2
0
        /// <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);
        }