From 8042ad195dfe8308c8460355f7ac0bf4b9a2fa2d Mon Sep 17 00:00:00 2001 From: Miho931 <98314142+Miho931@users.noreply.github.com> Date: Mon, 9 Jun 2025 19:05:18 +0200 Subject: [PATCH] [GARAGE] Ausparken --- .../mh_garage/client/retrieve.lua | 77 ++++++++++++++++++- .../[carscripts]/mh_garage/server/server.lua | 5 ++ 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/resources/[carscripts]/mh_garage/client/retrieve.lua b/resources/[carscripts]/mh_garage/client/retrieve.lua index 5fb26ea5d..fff25a8a5 100644 --- a/resources/[carscripts]/mh_garage/client/retrieve.lua +++ b/resources/[carscripts]/mh_garage/client/retrieve.lua @@ -31,6 +31,79 @@ AddEventHandler('mh_garage:retrieveVehicle', function() end, CurrentZone.name) end) -function SpawnThisVehicle(veh) - print("Spawn VEhicle") +function SpawnThisVehicle(vehicle) + local spawnPoint = nil + + -- Freien Spawnpunkt suchen + for _, spot in pairs(CurrentZone.vehicle_spawn) do + if not IsAnyVehicleNearPoint(spot.x, spot.y, spot.z, 3.0) then + spawnPoint = spot + break + end + end + + if spawnPoint then + QBCore.Functions.SpawnVehicle(vehicle.vehicle, function(veh) + -- Fahrzeug ID für Server + local netId = NetworkGetNetworkIdFromEntity(veh) + + -- Grundeinstellungen + SetVehicleNumberPlateText(veh, vehicle.plate) + SetVehicleDoorsLocked(veh, 0) + SetEntityHeading(veh, spawnPoint.w) + + -- Motor aus + SetVehicleEngineOn(veh, false, true, true) + + -- Fahrzeug Eigenschaften + local mods = type(vehicle.mods) == 'string' and json.decode(vehicle.mods) or vehicle.mods + + -- Grundwerte setzen + SetVehicleFuelLevel(veh, mods.fuelLevel) + SetVehicleEngineHealth(veh, mods.engineHealth) + SetVehicleBodyHealth(veh, mods.bodyHealth) + SetVehicleDirtLevel(veh, mods.dirtLevel) + + -- Türen Status + if mods.doorStatus then + for doorIndex = 0, 5 do + if mods.doorStatus[tostring(doorIndex)] then + SetVehicleDoorBroken(veh, doorIndex, true) + end + end + end + + -- Fenster Status + if mods.windowStatus then + for windowIndex = 0, 7 do + if not mods.windowStatus[tostring(windowIndex)] then + SmashVehicleWindow(veh, windowIndex) + end + end + end + + -- Alle Mods anwenden + QBCore.Functions.SetVehicleProperties(veh, mods) + + -- Fahrzeug auf den Boden setzen + SetVehicleOnGroundProperly(veh) + + -- Server über gespawntes Fahrzeug informieren + TriggerServerEvent('mh_garage:spawnedVehicle', netId, vehicle.plate) + + -- Optional: Erfolgsmeldung + lib.notify({ + title = "Fahrzeug geparkt...", + description = "Dein Fahrzeug steht auf Parkplatz "..math.random(1, 15), + type = "success" + }) + end, vector3(spawnPoint.x, spawnPoint.y, spawnPoint.z), true) + else + QBCore.Functions.Notify('Alle Parkplätze sind belegt!', 'error') + lib.notify({ + title = "Fahrzeug nicht gefunden", + description = "Alle Parkplätze sind belegt!", + type = "success" + }) + end end \ No newline at end of file diff --git a/resources/[carscripts]/mh_garage/server/server.lua b/resources/[carscripts]/mh_garage/server/server.lua index db234bcf9..33110e5cc 100644 --- a/resources/[carscripts]/mh_garage/server/server.lua +++ b/resources/[carscripts]/mh_garage/server/server.lua @@ -143,4 +143,9 @@ QBCore.Functions.CreateCallback('mh_garage:verwaltung', function(source, cb) end end) return vehicles +end) + +RegisterServerEvent('mh_garage:spawnedVehicle') +AddEventHandler('mh_garage:spawnedVehicle', function(netID, plate) + MySQL.query("UPDATE player_vehicles SET parking = ? WHERE plate = ?", {0, plate}) end) \ No newline at end of file