98 lines
3.1 KiB
Lua
98 lines
3.1 KiB
Lua
|
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)
|