ed
This commit is contained in:
		
							parent
							
								
									6b4ab46e6c
								
							
						
					
					
						commit
						8a0d378308
					
				
					 3 changed files with 67 additions and 60 deletions
				
			
		
							
								
								
									
										0
									
								
								resources/[carscripts]/nordi_car_admin/config.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								resources/[carscripts]/nordi_car_admin/config.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -6,7 +6,8 @@ description 'Job-based Vehicle Admin Script for QBCore with ox_lib'
 | 
			
		|||
version '2.0.0'
 | 
			
		||||
 | 
			
		||||
shared_scripts {
 | 
			
		||||
    '@ox_lib/init.lua'
 | 
			
		||||
    '@ox_lib/init.lua',
 | 
			
		||||
    'config.lua'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
client_scripts {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,18 @@
 | 
			
		|||
local QBCore = exports['qb-core']:GetCoreObject()
 | 
			
		||||
 | 
			
		||||
-- Erlaubte Jobs für das Vehicle Admin System
 | 
			
		||||
local AllowedJobs = {
 | 
			
		||||
    ['police'] = true,
 | 
			
		||||
    ['admin'] = true,
 | 
			
		||||
    ['mechanic'] = true,
 | 
			
		||||
    ['ambulance'] = true,
 | 
			
		||||
    ['cardealer'] = true,
 | 
			
		||||
    -- Füge hier weitere Jobs hinzu
 | 
			
		||||
}
 | 
			
		||||
-- Lade die Garagen aus dem Hauptsystem
 | 
			
		||||
Citizen.CreateThread(function()
 | 
			
		||||
    Wait(1000) -- Warte kurz, damit das Hauptsystem geladen ist
 | 
			
		||||
    
 | 
			
		||||
    -- Versuche, die Garagen aus dem Hauptsystem zu laden
 | 
			
		||||
    if _G.Config and _G.Config.Zonen then
 | 
			
		||||
        Config.Zonen = _G.Config.Zonen
 | 
			
		||||
        print("[Fahrzeugadmin] Garagen aus dem Hauptsystem geladen: " .. #Config.Zonen .. " Garagen gefunden.")
 | 
			
		||||
    else
 | 
			
		||||
        print("[Fahrzeugadmin] Konnte keine Garagen aus dem Hauptsystem laden, verwende Standard-Garagen.")
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Job Permission Check
 | 
			
		||||
local function HasPermission(source)
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +26,7 @@ local function HasPermission(source)
 | 
			
		|||
    
 | 
			
		||||
    -- Check if player has allowed job
 | 
			
		||||
    local playerJob = Player.PlayerData.job.name
 | 
			
		||||
    return AllowedJobs[playerJob] == true
 | 
			
		||||
    return Config.AllowedJobs[playerJob] == true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Get all players from database
 | 
			
		||||
| 
						 | 
				
			
			@ -95,13 +99,23 @@ QBCore.Functions.CreateCallback('vehicleadmin:getGarages', function(source, cb)
 | 
			
		|||
    
 | 
			
		||||
    local garages = {}
 | 
			
		||||
    
 | 
			
		||||
    -- Verwende die Garagen aus eurem Config
 | 
			
		||||
    -- Verwende die externen Garagen aus dem Garagensystem
 | 
			
		||||
    if Config.Zonen then
 | 
			
		||||
        for k, v in pairs(Config.Zonen) do
 | 
			
		||||
            table.insert(garages, {
 | 
			
		||||
                name = v.name,
 | 
			
		||||
                label = v.name -- Ihr könnt hier auch eine Label-Property hinzufügen
 | 
			
		||||
            })
 | 
			
		||||
        end
 | 
			
		||||
    else
 | 
			
		||||
        -- Fallback auf Standard-Garagen
 | 
			
		||||
        for garageName, garageData in pairs(Config.DefaultGarages) do
 | 
			
		||||
            table.insert(garages, {
 | 
			
		||||
                name = garageName,
 | 
			
		||||
                label = garageData.label or garageName
 | 
			
		||||
            })
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    -- Sortiere alphabetisch
 | 
			
		||||
    table.sort(garages, function(a, b)
 | 
			
		||||
| 
						 | 
				
			
			@ -172,13 +186,9 @@ RegisterNetEvent('vehicleadmin:moveToGarage', function(plate, garage)
 | 
			
		|||
                ))
 | 
			
		||||
                
 | 
			
		||||
                -- Log für Discord
 | 
			
		||||
                TriggerEvent('mh_garage:log', {
 | 
			
		||||
                    type = "admin_move",
 | 
			
		||||
                    user = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
 | 
			
		||||
                    citizenid = Player.PlayerData.citizenid,
 | 
			
		||||
                    plate = plate,
 | 
			
		||||
                    garage = garage
 | 
			
		||||
                })
 | 
			
		||||
                if Config.Log and Config.Log.Enabled then
 | 
			
		||||
                    sendToDiscord("Fahrzeugadmin", Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname .. " (" .. Player.PlayerData.job.label .. ") hat Fahrzeug " .. plate .. " in Garage " .. garage .. " gestellt.", "blue")
 | 
			
		||||
                end
 | 
			
		||||
            end
 | 
			
		||||
            
 | 
			
		||||
            TriggerClientEvent('ox_lib:notify', src, {
 | 
			
		||||
| 
						 | 
				
			
			@ -233,12 +243,9 @@ RegisterNetEvent('vehicleadmin:deleteFromMap', function(plate)
 | 
			
		|||
        ))
 | 
			
		||||
        
 | 
			
		||||
        -- Log für Discord
 | 
			
		||||
        TriggerEvent('mh_garage:log', {
 | 
			
		||||
            type = "admin_delete",
 | 
			
		||||
            user = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
 | 
			
		||||
            citizenid = Player.PlayerData.citizenid,
 | 
			
		||||
            plate = plate
 | 
			
		||||
        })
 | 
			
		||||
        if Config.Log and Config.Log.Enabled then
 | 
			
		||||
            sendToDiscord("Fahrzeugadmin", Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname .. " (" .. Player.PlayerData.job.label .. ") hat Fahrzeug " .. plate .. " von der Map gelöscht.", "orange")
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    if deleted then
 | 
			
		||||
| 
						 | 
				
			
			@ -320,12 +327,9 @@ RegisterNetEvent('vehicleadmin:repairVehicle', function(plate)
 | 
			
		|||
                    ))
 | 
			
		||||
                    
 | 
			
		||||
                    -- Log für Discord
 | 
			
		||||
                    TriggerEvent('mh_garage:log', {
 | 
			
		||||
                        type = "admin_repair",
 | 
			
		||||
                        user = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
 | 
			
		||||
                        citizenid = Player.PlayerData.citizenid,
 | 
			
		||||
                        plate = plate
 | 
			
		||||
                    })
 | 
			
		||||
                    if Config.Log and Config.Log.Enabled then
 | 
			
		||||
                        sendToDiscord("Fahrzeugadmin", Player.PlayerData.charinfo.firstname .. " " .. Player.PlayerData.charinfo.lastname .. " (" .. Player.PlayerData.job.label .. ") hat Fahrzeug " .. plate .. " repariert.", "green")
 | 
			
		||||
                    end
 | 
			
		||||
                end
 | 
			
		||||
                
 | 
			
		||||
                if affectedRows > 0 then
 | 
			
		||||
| 
						 | 
				
			
			@ -352,6 +356,32 @@ RegisterNetEvent('vehicleadmin:repairVehicle', function(plate)
 | 
			
		|||
    end)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
-- Discord Log Funktion
 | 
			
		||||
function sendToDiscord(title, message, color)
 | 
			
		||||
    if not Config.Log or not Config.Log.Enabled or not Config.Log.Webhook then return end
 | 
			
		||||
    
 | 
			
		||||
    local embed = {
 | 
			
		||||
        {
 | 
			
		||||
            ["title"] = message,
 | 
			
		||||
            ["type"] = "rich",
 | 
			
		||||
            ["color"] = Config.Log.Colors[color] or Config.Log.Colors.blue,
 | 
			
		||||
            ["footer"] = {
 | 
			
		||||
                ["text"] = Config.Log.SystemName or "Fahrzeugadmin",
 | 
			
		||||
            },
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    PerformHttpRequest(Config.Log.Webhook, function(err, text, headers) 
 | 
			
		||||
        if err and err ~= 204 and err ~= 200 then
 | 
			
		||||
            print("Fehler beim Discord Webhook [" .. tostring(err) .. "]: " .. tostring(text))
 | 
			
		||||
        end
 | 
			
		||||
    end, 'POST', json.encode({ 
 | 
			
		||||
        username = title .. " - System", 
 | 
			
		||||
        avatar_url = Config.Log.SystemAvatar, 
 | 
			
		||||
        embeds = embed
 | 
			
		||||
    }), { ['Content-Type'] = 'application/json' })
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Command to open admin menu
 | 
			
		||||
QBCore.Commands.Add('vehicleadmin', 'Öffne Fahrzeug Admin Menu', {}, false, function(source, args)
 | 
			
		||||
    local src = source
 | 
			
		||||
| 
						 | 
				
			
			@ -437,27 +467,3 @@ QBCore.Commands.Add('dealeradmin', 'Öffne Autohändler Fahrzeug Menu', {}, fals
 | 
			
		|||
    
 | 
			
		||||
    TriggerClientEvent('vehicleadmin:openMenu', src)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
-- Erweiterung des Log-Systems für Fahrzeugadmin
 | 
			
		||||
AddEventHandler('mh_garage:log', function(data)
 | 
			
		||||
    local type = data.type
 | 
			
		||||
    local user = data.user
 | 
			
		||||
    local citizenid = data.citizenid
 | 
			
		||||
    local plate = data.plate
 | 
			
		||||
    local garage = data.garage
 | 
			
		||||
    local Color = "purple"
 | 
			
		||||
    local Text = ""
 | 
			
		||||
    
 | 
			
		||||
    if type == "admin_move" then
 | 
			
		||||
        Text = user .. " [" .. citizenid .. "] hat Fahrzeug " .. plate .. " in Garage " .. garage .. " gestellt."
 | 
			
		||||
        Color = "blue"
 | 
			
		||||
    elseif type == "admin_delete" then
 | 
			
		||||
        Text = user .. " [" .. citizenid .. "] hat Fahrzeug " .. plate .. " von der Map gelöscht."
 | 
			
		||||
        Color = "orange"
 | 
			
		||||
    elseif type == "admin_repair" then
 | 
			
		||||
        Text = user .. " [" .. citizenid .. "] hat Fahrzeug " .. plate .. " repariert."
 | 
			
		||||
        Color = "green"
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    sendToDiscord("Fahrzeugadmin", Text, Color)
 | 
			
		||||
end)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue