1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-26 03:54:08 +02:00
parent 626fb3f39f
commit f18709a871
3 changed files with 129 additions and 2 deletions

View file

@ -406,3 +406,9 @@ AddEventHandler('onResourceStop', function(resourceName)
end
end
end)
-- Überprüfe Mietfahrzeug-Schlüssel beim Laden des Spielers
RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
TriggerServerEvent('vehiclerental:server:checkRentalKeys')
end)

View file

@ -1,7 +1,31 @@
local QBCore = exports['qb-core']:GetCoreObject()
local activeRentals = {}
-- Füge einen Schlüssel für ein Mietfahrzeug hinzu
function AddRentalKey(citizenid, plate, model)
MySQL.Async.execute('INSERT INTO vehicle_keys (owner, plate, count) VALUES (?, ?, ?)', {
citizenid,
plate,
1
}, function(rowsChanged)
if rowsChanged > 0 then
print("Schlüssel für Mietfahrzeug hinzugefügt: " .. plate .. " für Spieler " .. citizenid)
end
end)
end
-- Entferne einen Schlüssel für ein Mietfahrzeug
function RemoveRentalKey(citizenid, plate)
MySQL.Async.execute('DELETE FROM vehicle_keys WHERE owner = ? AND plate = ?', {
citizenid,
plate
}, function(rowsChanged)
if rowsChanged > 0 then
print("Schlüssel für Mietfahrzeug entfernt: " .. plate .. " für Spieler " .. citizenid)
end
end)
end
-- Lade alle aktiven Mietfahrzeuge beim Serverstart
Citizen.CreateThread(function()
Wait(5000) -- Warte, bis die Datenbank bereit ist
@ -12,6 +36,17 @@ Citizen.CreateThread(function()
for _, rental in ipairs(results) do
activeRentals[rental.vehicle_plate] = rental
-- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', {
rental.citizenid,
rental.vehicle_plate
}, function(keyResults)
if not keyResults or #keyResults == 0 then
-- Füge einen Schlüssel hinzu, wenn keiner existiert
AddRentalKey(rental.citizenid, rental.vehicle_plate, rental.vehicle_model)
end
end)
end
-- Benachrichtige alle Clients, dass sie die Fahrzeuge spawnen sollen
@ -94,6 +129,9 @@ QBCore.Functions.CreateCallback('vehiclerental:server:rentVehicle', function(sou
returned = false
}
-- Füge einen Schlüssel für das Mietfahrzeug hinzu
AddRentalKey(Player.PlayerData.citizenid, data.plate, data.vehicleModel)
TriggerClientEvent('QBCore:Notify', source, 'Fahrzeug erfolgreich gemietet für $' .. totalCost, 'success')
cb(true)
end)
@ -155,6 +193,9 @@ QBCore.Functions.CreateCallback('vehiclerental:server:returnVehicle', function(s
-- Aus dem aktiven Cache entfernen
activeRentals[plate] = nil
-- Entferne den Schlüssel für das Mietfahrzeug
RemoveRentalKey(Player.PlayerData.citizenid, plate)
-- Benachrichtige alle Clients, dass das Fahrzeug zurückgegeben wurde
TriggerClientEvent('vehiclerental:client:vehicleReturned', -1, plate)
@ -245,6 +286,9 @@ Citizen.CreateThread(function()
plate
})
-- Entferne den Schlüssel für das Mietfahrzeug
RemoveRentalKey(rental.citizenid, plate)
-- Füge es zur Liste der zu entfernenden Fahrzeuge hinzu
table.insert(overdueVehicles, plate)
end
@ -271,7 +315,60 @@ AddEventHandler('QBCore:Server:PlayerLoaded', function()
Player.PlayerData.citizenid
}, function(results)
if results and #results > 0 then
-- Stelle sicher, dass für jedes Mietfahrzeug ein Schlüssel existiert
for _, rental in ipairs(results) do
-- Prüfe, ob bereits ein Schlüssel existiert
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', {
Player.PlayerData.citizenid,
rental.vehicle_plate
}, function(keyResults)
if not keyResults or #keyResults == 0 then
-- Füge einen Schlüssel hinzu, wenn keiner existiert
AddRentalKey(Player.PlayerData.citizenid, rental.vehicle_plate, rental.vehicle_model)
end
end)
end
TriggerClientEvent('vehiclerental:client:loadRentals', src, results)
end
end)
end)
-- Exportiere Funktionen für andere Ressourcen
exports('GetActiveRentals', function(citizenid)
local playerRentals = {}
for plate, rental in pairs(activeRentals) do
if rental.citizenid == citizenid then
table.insert(playerRentals, rental)
end
end
return playerRentals
end)
-- Event für andere Ressourcen
RegisterNetEvent('vehiclerental:server:checkRentalKeys')
AddEventHandler('vehiclerental:server:checkRentalKeys', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
-- Hole alle aktiven Mietverhältnisse des Spielers
MySQL.Async.fetchAll('SELECT * FROM vehicle_rentals WHERE citizenid = ? AND returned = FALSE', {
Player.PlayerData.citizenid
}, function(rentals)
if rentals and #rentals > 0 then
for _, rental in ipairs(rentals) do
-- Prüfe, ob ein Schlüssel existiert
MySQL.Async.fetchAll('SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?', {
Player.PlayerData.citizenid,
rental.vehicle_plate
}, function(keyResults)
if not keyResults or #keyResults == 0 then
-- Füge einen Schlüssel hinzu, wenn keiner existiert
AddRentalKey(Player.PlayerData.citizenid, rental.vehicle_plate, rental.vehicle_model)
end
end)
end
end
end)
end)

View file

@ -822,3 +822,27 @@ RegisterCommand("vehicleLock", function()
ToggleLock(vehicle, GetVehicleDoorLockStatus(vehicle) ~= LockStatus.Locked)
end
end, false)
-- Integration mit dem Mietfahrzeug-System
RegisterNetEvent('vehiclerental:client:checkRentalKeys')
AddEventHandler('vehiclerental:client:checkRentalKeys', function()
TriggerServerEvent('vehiclerental:server:checkRentalKeys')
end)
-- Überprüfe Mietfahrzeug-Schlüssel beim Öffnen des Schlüssel-Menüs
if Config.useNativeUI then
-- Speichere die ursprüngliche Funktion
local originalGenerateKeyInventoryNativeUI = GenerateKeyInventoryNativeUI
-- Überschreibe die Funktion
GenerateKeyInventoryNativeUI = function()
-- Überprüfe Mietfahrzeug-Schlüssel
TriggerServerEvent('vehiclerental:server:checkRentalKeys')
-- Warte kurz, damit die Schlüssel aktualisiert werden können
Citizen.Wait(100)
-- Rufe die ursprüngliche Funktion auf
originalGenerateKeyInventoryNativeUI()
end
end