diff --git a/resources/[qb]/Duck_relogextra/client.lua b/resources/[qb]/Duck_relogextra/client.lua new file mode 100644 index 000000000..aa28c631d --- /dev/null +++ b/resources/[qb]/Duck_relogextra/client.lua @@ -0,0 +1,38 @@ +local QBCore = exports['qb-core']:GetCoreObject() +local savedLocation = nil + +RegisterCommand("relog", function() + local ped = PlayerPedId() + local coords = GetEntityCoords(ped) + local heading = GetEntityHeading(ped) + local cid = QBCore.Functions.GetPlayerData().citizenid + + -- Speicher Ort vor Relog + TriggerServerEvent("qb-relogsave:server:saveLocation", cid, { + x = coords.x, + y = coords.y, + z = coords.z + }, heading) + + TriggerEvent("qb-multicharacter:client:chooseChar") +end, false) + +RegisterNetEvent("qb-relogsave:client:restoreLocation", function(pos, heading) + savedLocation = { + pos = pos, + heading = heading + } +end) + +RegisterNetEvent("qb-spawn:client:spawned", function() + if savedLocation then + DoScreenFadeOut(500) + Wait(500) + SetEntityCoords(PlayerPedId(), savedLocation.pos.x, savedLocation.pos.y, savedLocation.pos.z) + SetEntityHeading(PlayerPedId(), savedLocation.heading) + Wait(500) + DoScreenFadeIn(500) + + savedLocation = nil + end +end) diff --git a/resources/[qb]/Duck_relogextra/fxmanifest.lua b/resources/[qb]/Duck_relogextra/fxmanifest.lua new file mode 100644 index 000000000..c252376b4 --- /dev/null +++ b/resources/[qb]/Duck_relogextra/fxmanifest.lua @@ -0,0 +1,13 @@ +fx_version 'cerulean' +game 'gta5' + +description 'relog system' +author 'Duck' +version '1.0.1' + +client_script 'client.lua' +server_script 'server.lua' + +shared_script '@qb-core/shared/locale.lua' +dependency 'qb-core' +dependency 'um-multicharacter' diff --git a/resources/[qb]/Duck_relogextra/server.lua b/resources/[qb]/Duck_relogextra/server.lua new file mode 100644 index 000000000..04c578ed4 --- /dev/null +++ b/resources/[qb]/Duck_relogextra/server.lua @@ -0,0 +1,34 @@ +local savedLocations = {} +local QBCore = exports['qb-core']:GetCoreObject() + +RegisterNetEvent("qb-relogsave:server:saveLocation", function(cid, coords, heading) + if not cid or not coords then return end + + savedLocations[cid] = { + pos = coords, + heading = heading, + timestamp = os.time() + } + + print("Position für " .. cid .. " gespeichert: " .. json.encode(coords)) +end) + +AddEventHandler('QBCore:Server:PlayerLoaded', function(Player) + if not Player or not Player.PlayerData then return end + + local cid = Player.PlayerData.citizenid + + if savedLocations[cid] then + local pos = savedLocations[cid].pos + local heading = savedLocations[cid].heading + + if pos and pos.x and pos.y and pos.z then + TriggerClientEvent("qb-relogsave:client:restoreLocation", Player.PlayerData.source, pos, heading) + print("Position für " .. cid .. " wiederhergestellt") + else + print("Ungültige Position für " .. cid .. " gefunden") + end + + savedLocations[cid] = nil + end +end)