1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-10 17:49:40 +02:00
parent e3605df057
commit db8f07a192
3 changed files with 798 additions and 0 deletions

View file

@ -0,0 +1,208 @@
local QBCore = exports['qb-core']:GetCoreObject()
-- Datenbank Setup
CreateThread(function()
MySQL.query([[
CREATE TABLE IF NOT EXISTS infopoint_events (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
category VARCHAR(100),
location VARCHAR(255),
event_date DATETIME,
created_by VARCHAR(50),
created_by_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
active BOOLEAN DEFAULT TRUE
)
]])
MySQL.query([[
CREATE TABLE IF NOT EXISTS infopoint_incidents (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
category VARCHAR(100),
location VARCHAR(255),
reported_by VARCHAR(50),
reported_by_name VARCHAR(255),
status VARCHAR(50) DEFAULT 'open',
assigned_to VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
]])
MySQL.query([[
CREATE TABLE IF NOT EXISTS infopoint_job_offers (
id INT AUTO_INCREMENT PRIMARY KEY,
job_name VARCHAR(100),
title VARCHAR(255),
description TEXT,
requirements TEXT,
salary VARCHAR(100),
contact VARCHAR(255),
created_by VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
active BOOLEAN DEFAULT TRUE
)
]])
end)
-- Events abrufen
QBCore.Functions.CreateCallback('infopoint:getEvents', function(source, cb)
MySQL.query('SELECT * FROM infopoint_events WHERE active = 1 ORDER BY event_date ASC', {}, function(result)
cb(result)
end)
end)
-- Vorfälle abrufen (nur für berechtigte Jobs)
QBCore.Functions.CreateCallback('infopoint:getIncidents', function(source, cb)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return cb({}) end
local job = Player.PlayerData.job.name
if Config.JobPermissions.jobSpecificInfo[job] and Config.JobPermissions.jobSpecificInfo[job].showIncidents then
MySQL.query('SELECT * FROM infopoint_incidents ORDER BY created_at DESC', {}, function(result)
cb(result)
end)
else
cb({})
end
end)
-- Job Angebote abrufen
QBCore.Functions.CreateCallback('infopoint:getJobOffers', function(source, cb, jobName)
local query = 'SELECT * FROM infopoint_job_offers WHERE active = 1'
local params = {}
if jobName then
query = query .. ' AND job_name = ?'
params = {jobName}
end
query = query .. ' ORDER BY created_at DESC'
MySQL.query(query, params, function(result)
cb(result)
end)
end)
-- Lizenz Informationen abrufen
QBCore.Functions.CreateCallback('infopoint:getLicenseInfo', function(source, cb)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return cb({}) end
local job = Player.PlayerData.job.name
if job == 'police' then
-- Hier könntest du Lizenz-Informationen aus der Datenbank abrufen
local licenseInfo = {
{type = 'Führerschein', price = '$500', requirements = 'Theorieprüfung bestehen'},
{type = 'Waffenschein', price = '$2000', requirements = 'Saubere Akte, Prüfung'},
{type = 'Pilotenschein', price = '$10000', requirements = 'Flugstunden nachweisen'}
}
cb(licenseInfo)
else
cb({})
end
end)
-- Event erstellen
RegisterNetEvent('infopoint:createEvent', function(eventData)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
local job = Player.PlayerData.job.name
local canCreate = false
for _, allowedJob in pairs(Config.JobPermissions.canCreateEvents) do
if job == allowedJob then
canCreate = true
break
end
end
if not canCreate then
TriggerClientEvent('QBCore:Notify', src, 'Du hast keine Berechtigung Events zu erstellen!', 'error')
return
end
MySQL.insert('INSERT INTO infopoint_events (title, description, category, location, event_date, created_by, created_by_name) VALUES (?, ?, ?, ?, ?, ?, ?)', {
eventData.title,
eventData.description,
eventData.category,
eventData.location,
eventData.date,
Player.PlayerData.citizenid,
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
}, function(insertId)
if insertId then
TriggerClientEvent('QBCore:Notify', src, 'Event erfolgreich erstellt!', 'success')
TriggerClientEvent('infopoint:refreshData', -1)
end
end)
end)
-- Vorfall melden
RegisterNetEvent('infopoint:reportIncident', function(incidentData)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
MySQL.insert('INSERT INTO infopoint_incidents (title, description, category, location, reported_by, reported_by_name) VALUES (?, ?, ?, ?, ?, ?)', {
incidentData.title,
incidentData.description,
incidentData.category,
incidentData.location,
Player.PlayerData.citizenid,
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname
}, function(insertId)
if insertId then
TriggerClientEvent('QBCore:Notify', src, 'Vorfall erfolgreich gemeldet!', 'success')
-- Benachrichtigung an alle Polizisten senden
local Players = QBCore.Functions.GetQBPlayers()
for _, player in pairs(Players) do
if player.PlayerData.job.name == 'police' and player.PlayerData.job.onduty then
TriggerClientEvent('QBCore:Notify', player.PlayerData.source, 'Neuer Vorfall gemeldet: ' .. incidentData.title, 'primary')
end
end
end
end)
end)
-- Job Angebot erstellen
RegisterNetEvent('infopoint:createJobOffer', function(jobData)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
local job = Player.PlayerData.job.name
local canCreate = false
for _, allowedJob in pairs(Config.JobPermissions.canCreateEvents) do
if job == allowedJob then
canCreate = true
break
end
end
if not canCreate then
TriggerClientEvent('QBCore:Notify', src, 'Du hast keine Berechtigung Job-Angebote zu erstellen!', 'error')
return
end
MySQL.insert('INSERT INTO infopoint_job_offers (job_name, title, description, requirements, salary, contact, created_by) VALUES (?, ?, ?, ?, ?, ?, ?)', {
job,
jobData.title,
jobData.description,
jobData.requirements,
jobData.salary,
jobData.contact,
Player.PlayerData.citizenid
}, function(insertId)
if insertId then
TriggerClientEvent('QBCore:Notify', src, 'Job-Angebot erfolgreich erstellt!', 'success')
end
end)
end)