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