forked from Simnation/Main
ed
This commit is contained in:
parent
626fb3f39f
commit
f18709a871
3 changed files with 129 additions and 2 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue