forked from Simnation/Main
ed
This commit is contained in:
parent
e3605df057
commit
db8f07a192
3 changed files with 798 additions and 0 deletions
208
resources/[tools]/nordi_infopoint/server/main.lua
Normal file
208
resources/[tools]/nordi_infopoint/server/main.lua
Normal 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)
|
Loading…
Add table
Add a link
Reference in a new issue