if not Framework.QBCore() then return end local continue = false local function MigrateFivemAppearance(source) local allPlayers = Database.Players.GetAll() local playerSkins = {} for i=1, #allPlayers, 1 do if allPlayers[i].skin then playerSkins[#playerSkins+1] = { citizenID = allPlayers[i].citizenid, skin = allPlayers[i].skin } end end for i=1, #playerSkins, 1 do Database.PlayerSkins.Add(playerSkins[i].citizenID, json.decode(playerSkins[i].skin).model, playerSkins[i].skin, 1) end lib.notify(source, { title = _L("migrate.success.title"), description = string.format(_L("migrate.success.description"), tostring(#playerSkins)), type = "success", position = Config.NotifyOptions.position }) end local function MigrateQBClothing(source) local allPlayerSkins = Database.PlayerSkins.GetAll() local migrated = 0 for i=1, #allPlayerSkins, 1 do if not tonumber(allPlayerSkins[i].model) then lib.notify(source, { title = _L("migrate.skip.title"), description = _L("migrate.skip.description"), type = "inform", position = Config.NotifyOptions.position }) else TriggerClientEvent("illenium-appearance:client:migration:load-qb-clothing-skin", source, allPlayerSkins[i]) while not continue do Wait(10) end continue = false migrated = migrated + 1 end end TriggerClientEvent("illenium-appearance:client:reloadSkin", source) lib.notify(source, { title = _L("migrate.success.title"), description = string.format(_L("migrate.success.description"), tostring(migrated)), type = "success", position = Config.NotifyOptions.position }) end RegisterNetEvent("illenium-appearance:server:migrate-qb-clothing-skin", function(citizenid, appearance) local src = source Database.PlayerSkins.DeleteByCitizenID(citizenid) Database.PlayerSkins.Add(citizenid, appearance.model, json.encode(appearance), 1) continue = true lib.notify(src, { id = "illenium_appearance_skin_migrated", title = _L("migrate.success.title"), description = _L("migrate.success.descriptionSingle"), type = "success", position = Config.NotifyOptions.position }) end) lib.addCommand("migrateskins", { help = "Migrate skins", params = { { name = "resourceName", type = "string", }, }, restricted = "group.god" }, function(source, args) local resourceName = args.resourceName if resourceName == "fivem-appearance" then MigrateFivemAppearance(source) elseif resourceName == "qb-clothing" then CreateThread(function() MigrateQBClothing(source) end) else lib.notify(source, { title = _L("migrate.typeError.title"), description = _L("migrate.typeError.description"), type = "error", position = Config.NotifyOptions.position }) end end)