public void Load()
        {
            bool initStorage = false;

            using (var data = (MySqlDataReader)Server.Instance.CharacterDatabase.RunQuery(
                       "SELECT slots, mesos FROM storage WHERE userid = @userid AND world_id = @worldid",
                       "@userid", Character.UserID,
                       "@worldid", Server.Instance.WorldID
                       ))
            {
                if (data.Read() == false)
                {
                    MaxSlots    = 4;
                    Mesos       = 0;
                    initStorage = true;
                }
                else
                {
                    MaxSlots = (byte)data.GetInt16(0);
                    Mesos    = data.GetInt32(1);
                }
            }

            if (initStorage)
            {
                Server.Instance.CharacterDatabase.RunQuery(
                    "INSERT INTO storage (userid, world_id) VALUES (@userid, @worldid)",
                    "@userid", Character.UserID,
                    "@worldid", Server.Instance.WorldID
                    );
            }

            _items = new BaseItem[5][];
            SetSlots(MaxSlots);

            SplitDBInventory.Load(
                Server.Instance.CharacterDatabase,
                "storage",
                $"userid = {Character.UserID} AND world_id = {Server.Instance.WorldID}",
                (type, inventory, slot, item) =>
            {
                AddItem(item);
            }
                );
        }
        public void Save()
        {
            int userId  = Character.UserID;
            int worldId = Server.Instance.WorldID;

            Server.Instance.CharacterDatabase.RunQuery(
                "UPDATE storage SET " +
                "slots = " + MaxSlots + ", " +
                "mesos = " + Mesos + " " +
                "WHERE " +
                "userid = " + userId + " AND " +
                "world_id = " + worldId);

            short slot = 0;

            for (var i = 0; i < _items.Length; i++)
            {
                for (var j = 0; j < MaxSlots; j++)
                {
                    var x = _items[i][j];
                    if (x != null)
                    {
                        x.InventorySlot = slot++;
                    }
                }
            }

            SplitDBInventory.Save(
                Server.Instance.CharacterDatabase,
                "storage",
                $"{userId}, {worldId},",
                $"userid = {userId} AND world_id = {worldId}",
                (type, inventory) =>
            {
                if (inventory == 5)
                {
                    return(new List <BaseItem>());
                }
                return(GetInventoryItems(inventory));
            },
                Program.MainForm.LogAppend
                );
        }