Auto-sync 2026-04-15 21:35
24
[core]/mercyv-garage/GetFramework.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
-- GetFramework.lua
|
||||||
|
-- Shared between client and server
|
||||||
|
|
||||||
|
function GetFrameworkObject()
|
||||||
|
local object = nil
|
||||||
|
if Config.Framework == "esx" then
|
||||||
|
if Config.NewESX then
|
||||||
|
object = exports['es_extended']:getSharedObject()
|
||||||
|
else
|
||||||
|
while object == nil do
|
||||||
|
TriggerEvent('esx:getSharedObject', function(obj) object = obj end)
|
||||||
|
Citizen.Wait(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif Config.Framework == "newqb" then
|
||||||
|
object = exports["qb-core"]:GetCoreObject()
|
||||||
|
elseif Config.Framework == "oldqb" then
|
||||||
|
while object == nil do
|
||||||
|
TriggerEvent('QBCore:GetObject', function(obj) object = obj end)
|
||||||
|
Citizen.Wait(200)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return object
|
||||||
|
end
|
||||||
155
[core]/mercyv-garage/client/admin.lua
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
-- ============================================================
|
||||||
|
-- mercyv-garage | client/admin.lua
|
||||||
|
-- Ingame Garage-Editor für Admins
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
local AdminOpen = false
|
||||||
|
|
||||||
|
-- Server fragt ob Spieler Admin ist und gibt Ergebnis zurück
|
||||||
|
local PlayerIsAdmin = false
|
||||||
|
RegisterNetEvent('mercyv-garage:setAdminStatus', function(status)
|
||||||
|
PlayerIsAdmin = status
|
||||||
|
if status then
|
||||||
|
SendNUIMessage({ action = "SET_ADMIN", isAdmin = true })
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Bei Laden einmalig Status anfragen
|
||||||
|
AddEventHandler('onClientResourceStart', function(res)
|
||||||
|
if res ~= GetCurrentResourceName() then return end
|
||||||
|
Citizen.Wait(4000)
|
||||||
|
TriggerServerEvent('mercyv-garage:checkAdminStatus')
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function IsLocalAdmin()
|
||||||
|
return PlayerIsAdmin or IsAceAllowed(Config.AdminAce)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
-- Admin-Panel öffnen
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
RegisterCommand('garageadmin', function()
|
||||||
|
if not IsLocalAdmin() then
|
||||||
|
Config.ClientNotification(Config.Notify.ADMIN_NO_PERM, "error")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
AdminOpen = true
|
||||||
|
GarageIsOpen = true -- Verhindert NPC-Interaction-Loop
|
||||||
|
|
||||||
|
SetNuiFocus(true, true)
|
||||||
|
exports['hex_4_hud']:HideHud(true)
|
||||||
|
|
||||||
|
SendNUIMessage({
|
||||||
|
action = "OPEN_ADMIN",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Garagen-Liste direkt an NUI senden (Callback in main.lua handled das)
|
||||||
|
end, false)
|
||||||
|
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
-- Admin-Panel schließen (NUI Callback)
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
RegisterNUICallback('closeAdmin', function(data, cb)
|
||||||
|
AdminOpen = false
|
||||||
|
GarageIsOpen = false
|
||||||
|
|
||||||
|
SetNuiFocus(false, false)
|
||||||
|
exports['hex_4_hud']:HideHud(false)
|
||||||
|
|
||||||
|
if PreviewVeh and DoesEntityExist(PreviewVeh) then
|
||||||
|
DeleteEntity(PreviewVeh)
|
||||||
|
PreviewVeh = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
CurrentGarage = nil
|
||||||
|
-- Kurz warten dann Fokus nochmal freigeben (verhindert stuck-Focus)
|
||||||
|
Citizen.CreateThread(function()
|
||||||
|
Citizen.Wait(100)
|
||||||
|
SetNuiFocus(false, false)
|
||||||
|
end)
|
||||||
|
cb({})
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
-- Positions-Erfassung: NUI wird temporär deaktiviert
|
||||||
|
-- Spieler geht zur Position, drückt G oder ESC
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
local CaptureActive = false
|
||||||
|
local CaptureField = nil
|
||||||
|
|
||||||
|
RegisterNUICallback('startCapture', function(data, cb)
|
||||||
|
CaptureField = data.field
|
||||||
|
|
||||||
|
-- NUI Fokus temporär aufheben
|
||||||
|
SetNuiFocus(false, false)
|
||||||
|
CaptureActive = true
|
||||||
|
cb({})
|
||||||
|
|
||||||
|
-- Capture-Thread starten
|
||||||
|
Citizen.CreateThread(function()
|
||||||
|
-- Warte auf G (drücken zum erfassen) oder ESC (abbrechen)
|
||||||
|
while CaptureActive do
|
||||||
|
-- On-Screen Anleitung
|
||||||
|
SetTextFont(4)
|
||||||
|
SetTextScale(0.5, 0.5)
|
||||||
|
SetTextColour(255, 255, 255, 255)
|
||||||
|
SetTextEntry("STRING")
|
||||||
|
AddTextComponentString("~INPUT_CONTEXT~ Position erfassen ~INPUT_FRONTEND_CANCEL~ Abbrechen")
|
||||||
|
DrawText(0.35, 0.03)
|
||||||
|
|
||||||
|
if IsControlJustPressed(0, 38) then -- E / G
|
||||||
|
local ped = PlayerPedId()
|
||||||
|
local coords = GetEntityCoords(ped)
|
||||||
|
local heading = GetEntityHeading(ped)
|
||||||
|
|
||||||
|
CaptureActive = false
|
||||||
|
SetNuiFocus(true, true)
|
||||||
|
|
||||||
|
SendNUIMessage({
|
||||||
|
action = "POSITION_CAPTURED",
|
||||||
|
field = CaptureField,
|
||||||
|
x = coords.x,
|
||||||
|
y = coords.y,
|
||||||
|
z = coords.z,
|
||||||
|
heading = heading,
|
||||||
|
})
|
||||||
|
elseif IsControlJustPressed(0, 200) then -- ESC
|
||||||
|
CaptureActive = false
|
||||||
|
SetNuiFocus(true, true)
|
||||||
|
SendNUIMessage({ action = "CAPTURE_CANCELLED", field = CaptureField })
|
||||||
|
end
|
||||||
|
|
||||||
|
Citizen.Wait(0)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
-- Admin: Teleport zu Garage
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
RegisterNUICallback('teleportToGarage', function(data, cb)
|
||||||
|
if not IsLocalAdmin() then cb({}); return end
|
||||||
|
if data.x and data.y and data.z then
|
||||||
|
local ped = PlayerPedId()
|
||||||
|
SetEntityCoords(ped, data.x, data.y, data.z + 0.5, false, false, false, false)
|
||||||
|
if data.heading then SetEntityHeading(ped, data.heading) end
|
||||||
|
end
|
||||||
|
cb({})
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
-- Hilfs-Befehl: Aktuelle Koordinaten ausgeben
|
||||||
|
-- ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
RegisterCommand('gcoords', function()
|
||||||
|
local ped = PlayerPedId()
|
||||||
|
local c = GetEntityCoords(ped)
|
||||||
|
local h = GetEntityHeading(ped)
|
||||||
|
print(string.format("[mercyv-garage] Coords: x=%.4f y=%.4f z=%.4f heading=%.4f", c.x, c.y, c.z, h))
|
||||||
|
Config.ClientNotification(string.format("X: %.2f Y: %.2f Z: %.2f H: %.2f", c.x, c.y, c.z, h), "info", 6000)
|
||||||
|
end, false)
|
||||||
1156
[core]/mercyv-garage/client/main.lua
Normal file
165
[core]/mercyv-garage/config.lua
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
Config = {}
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- FRAMEWORK & DATABASE
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.Framework = "esx" -- "esx" | "newqb" | "oldqb"
|
||||||
|
Config.NewESX = true
|
||||||
|
Config.SQL = "oxmysql"
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- FEATURES
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.Blip = true -- Map-Blips anzeigen
|
||||||
|
Config.Debug = false -- Debug-Ausgaben in der Console
|
||||||
|
|
||||||
|
-- Fahrzeug-Schlüssel System
|
||||||
|
Config.Vehiclekey = true
|
||||||
|
Config.VehicleKeySystem = "jaksam" -- jaksam | qs-vehiclekeys | wasabi-carlock | qb-vehiclekeys
|
||||||
|
Config.VehicleRemoveKey = true
|
||||||
|
Config.VehicleRemoveKeySystem = "jaksam"
|
||||||
|
|
||||||
|
-- Kraftstoff System
|
||||||
|
Config.EnableFuel = true
|
||||||
|
Config.FuelSystem = "x-fuel" -- LegacyFuel | x-fuel | ox-fuel | nd-fuel | frfuel | cdn-fuel
|
||||||
|
|
||||||
|
-- Impound
|
||||||
|
Config.Impound = true
|
||||||
|
Config.ImpoundPrice = 1500
|
||||||
|
Config.MoneyType = "bank"
|
||||||
|
|
||||||
|
-- Marker Farbe (Einpark-Zone)
|
||||||
|
Config.MarkerR = 255
|
||||||
|
Config.MarkerG = 165
|
||||||
|
Config.MarkerB = 0
|
||||||
|
Config.MarkerA = 200
|
||||||
|
|
||||||
|
-- NPC Einstellungen (standard)
|
||||||
|
Config.DefaultNpcModel = "a_m_m_prolhost_01"
|
||||||
|
Config.NpcInteractRadius = 2.5 -- Abstand zum NPC für E-Interaktion
|
||||||
|
Config.ParkRadius = 6.0 -- Einpark-Radius
|
||||||
|
|
||||||
|
-- Wie oft (ms) Fahrzeugpositionen gespeichert werden (Standard: 30 Sek.)
|
||||||
|
Config.PersistSaveInterval = 1000
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- ADMIN
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
-- ACE Permission die admins brauchen: add_ace group.admin mercyv-garage.admin allow
|
||||||
|
Config.AdminAce = "mercyv-garage.admin"
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- BENACHRICHTIGUNGEN
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.Notify = {
|
||||||
|
GARAGE_OPEN_LATE = "Garage wird geladen...",
|
||||||
|
NO_VEHICLE = "Du besitzt kein Fahrzeug.",
|
||||||
|
NOT_OWNED = "Dieses Fahrzeug gehört dir nicht.",
|
||||||
|
WRONG_CLASS = "Diese Fahrzeugklasse ist hier nicht erlaubt.",
|
||||||
|
SPAWN_BLOCKED = "Spawn-Platz ist belegt.",
|
||||||
|
PARKED_IN = "Fahrzeug eingeparkt.",
|
||||||
|
TOOK_OUT = "Fahrzeug ausgeparkt.",
|
||||||
|
NO_ACCESS = "Kein Zugang zu dieser Garage.",
|
||||||
|
NO_MONEY = "Nicht genug Geld.",
|
||||||
|
IMPOUND_PAID = "Gebühr bezahlt.",
|
||||||
|
ALREADY_OUT = "Dieses Fahrzeug ist bereits draußen.",
|
||||||
|
ADMIN_SAVED = "Garage gespeichert.",
|
||||||
|
ADMIN_DELETED = "Garage gelöscht.",
|
||||||
|
ADMIN_NO_PERM = "Keine Berechtigung.",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- NOTIFICATION FUNCTIONS (anpassen wenn nötig)
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.ClientNotification = function(message, msgType, length)
|
||||||
|
exports['hex_4_hud']:Notify("Garage", message, msgType or "info", length or 3000)
|
||||||
|
end
|
||||||
|
|
||||||
|
Config.ServerNotification = function(source, message, msgType, length)
|
||||||
|
TriggerClientEvent("hex_4_hud:Notify", source, "Garage", message, msgType or "info", length or 3000)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- FAHRZEUG-KLASSEN
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.AllowedClasses = {
|
||||||
|
["normal"] = {[0]=true,[1]=true,[2]=true,[3]=true,[4]=true,[5]=true,
|
||||||
|
[6]=true,[7]=true,[8]=true,[9]=true,[10]=true,[11]=true,
|
||||||
|
[12]=true,[13]=true,[17]=true,[18]=true,[19]=true,[20]=true},
|
||||||
|
["aircraft"] = {[15]=true,[16]=true},
|
||||||
|
["boat"] = {[14]=true},
|
||||||
|
["jobgarage"]= {[0]=true,[1]=true,[2]=true,[3]=true,[4]=true,[5]=true,
|
||||||
|
[6]=true,[7]=true,[8]=true,[9]=true,[10]=true,[11]=true,
|
||||||
|
[12]=true,[13]=true,[14]=true,[15]=true,[16]=true,
|
||||||
|
[17]=true,[18]=true,[19]=true,[20]=true},
|
||||||
|
["impound"] = {[0]=true,[1]=true,[2]=true,[3]=true,[4]=true,[5]=true,
|
||||||
|
[6]=true,[7]=true,[8]=true,[9]=true,[10]=true,[11]=true,
|
||||||
|
[12]=true,[13]=true,[14]=true,[15]=true,[16]=true,
|
||||||
|
[17]=true,[18]=true,[19]=true,[20]=true},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- JOB-FAHRZEUGE (für Jobgaragen)
|
||||||
|
-- Diese Fahrzeuge werden in der Job-Garage angezeigt
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.JobVehicles = {
|
||||||
|
["police"] = {
|
||||||
|
{ model = "gbpolbisonhf", label = "Polizei Bison HF", grade = 0 },
|
||||||
|
{ model = "police3", label = "Polizei Cruiser", grade = 0 },
|
||||||
|
{ model = "police4", label = "Polizei Buffalo", grade = 0 },
|
||||||
|
{ model = "police2", label = "Polizei Stanier", grade = 0 },
|
||||||
|
{ model = "gbpolbisonstx", label = "Polizei Bison STX", grade = 0 },
|
||||||
|
},
|
||||||
|
["ambulance"] = {
|
||||||
|
{ model = "ambulance", label = "Krankenwagen", grade = 0 },
|
||||||
|
{ model = "frogger", label = "Frogger", grade = 0 },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- FUEL HELPER
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
Config.SetVehicleFuel = function(vehicle, level)
|
||||||
|
if not Config.EnableFuel then
|
||||||
|
SetVehicleFuelLevel(vehicle, (level or 90) + 0.0)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local fs = Config.FuelSystem
|
||||||
|
if fs == 'LegacyFuel' then exports["LegacyFuel"]:SetFuel(vehicle, level)
|
||||||
|
elseif fs == 'x-fuel' then exports["x-fuel"]:SetFuel(vehicle, level)
|
||||||
|
elseif fs == 'ox-fuel' then SetVehicleFuelLevel(vehicle, level + 0.0)
|
||||||
|
elseif fs == 'nd-fuel' then exports["nd-fuel"]:SetFuel(vehicle, level)
|
||||||
|
elseif fs == 'frfuel' then exports.frfuel:setFuel(vehicle, level)
|
||||||
|
elseif fs == 'cdn-fuel' then exports['cdn-fuel']:SetFuel(vehicle, level)
|
||||||
|
else SetVehicleFuelLevel(vehicle, (level or 90) + 0.0) end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
-- KEY HELPERS
|
||||||
|
-- ══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
function GiveVehicleKeys(plate, model, vehicle)
|
||||||
|
if not Config.Vehiclekey then return end
|
||||||
|
local ks = Config.VehicleKeySystem
|
||||||
|
if ks == 'jaksam' then TriggerServerEvent("vehicles_keys:selfGiveVehicleKeys", plate)
|
||||||
|
elseif ks == 'qs-vehiclekeys' then exports['qs-vehiclekeys']:GiveKeys(plate, GetDisplayNameFromVehicleModel(model))
|
||||||
|
elseif ks == 'wasabi-carlock' then exports.wasabi_carlock:GiveKey(plate)
|
||||||
|
elseif ks == 'qb-vehiclekeys' then TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', plate) end
|
||||||
|
end
|
||||||
|
|
||||||
|
function RemoveVehicleKeys(plate, model, vehicle)
|
||||||
|
if not Config.VehicleRemoveKey then return end
|
||||||
|
local ks = Config.VehicleRemoveKeySystem
|
||||||
|
if ks == 'jaksam' then TriggerServerEvent("vehicles_keys:selfRemoveKeys", plate)
|
||||||
|
elseif ks == 'qs-vehiclekeys' then exports['qs-vehiclekeys']:RemoveKeysAuto()
|
||||||
|
elseif ks == 'wasabi-carlock' then exports.wasabi_carlock:RemoveKey(plate)
|
||||||
|
elseif ks == 'qb-vehiclekeys' then TriggerServerEvent('qb-vehiclekeys:client:RemoveKeys', plate) end
|
||||||
|
end
|
||||||
34
[core]/mercyv-garage/fxmanifest.lua
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
fx_version 'cerulean'
|
||||||
|
game 'gta5'
|
||||||
|
lua54 'yes'
|
||||||
|
author 'MercyV'
|
||||||
|
description 'mercyv-garage - Custom Garage System'
|
||||||
|
version '1.0'
|
||||||
|
|
||||||
|
shared_scripts {
|
||||||
|
'config.lua',
|
||||||
|
}
|
||||||
|
|
||||||
|
server_scripts {
|
||||||
|
'@oxmysql/lib/MySQL.lua',
|
||||||
|
'server/main.lua',
|
||||||
|
}
|
||||||
|
|
||||||
|
client_scripts {
|
||||||
|
'GetFramework.lua',
|
||||||
|
'client/main.lua',
|
||||||
|
'client/admin.lua',
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_page 'nui/index.html'
|
||||||
|
|
||||||
|
files {
|
||||||
|
'nui/index.html',
|
||||||
|
'nui/style.css',
|
||||||
|
'nui/script.js',
|
||||||
|
'nui/vue.js',
|
||||||
|
'nui/fonts/*.*',
|
||||||
|
'nui/images/*.*',
|
||||||
|
'nui/images/logo/*.*',
|
||||||
|
'nui/images/cars/*.*',
|
||||||
|
}
|
||||||
200
[core]/mercyv-garage/install.sql
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
-- ============================================================
|
||||||
|
-- mercyv-garage | install.sql
|
||||||
|
-- Einmalig ausführen!
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `mercyv_garages` (
|
||||||
|
`id` VARCHAR(80) NOT NULL,
|
||||||
|
`label` VARCHAR(100) NOT NULL DEFAULT 'Garage',
|
||||||
|
`type` VARCHAR(20) NOT NULL DEFAULT 'normal',
|
||||||
|
`access` VARCHAR(50) NOT NULL DEFAULT 'none',
|
||||||
|
`gang` VARCHAR(50) NOT NULL DEFAULT 'none',
|
||||||
|
`blip_show` TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
|
`blip_type` INT NOT NULL DEFAULT 357,
|
||||||
|
`blip_colour` INT NOT NULL DEFAULT 3,
|
||||||
|
`npc_model` VARCHAR(100) NOT NULL DEFAULT 'a_m_m_prolhost_01',
|
||||||
|
`npc_x` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`npc_y` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`npc_z` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`npc_heading` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`spawn_x` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`spawn_y` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`spawn_z` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`spawn_heading` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`park_x` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`park_y` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`park_z` FLOAT NOT NULL DEFAULT 0,
|
||||||
|
`showcar_x` FLOAT DEFAULT NULL,
|
||||||
|
`showcar_y` FLOAT DEFAULT NULL,
|
||||||
|
`showcar_z` FLOAT DEFAULT NULL,
|
||||||
|
`showcar_heading` FLOAT DEFAULT 0,
|
||||||
|
`cam_x` FLOAT DEFAULT NULL,
|
||||||
|
`cam_y` FLOAT DEFAULT NULL,
|
||||||
|
`cam_z` FLOAT DEFAULT NULL,
|
||||||
|
`cam_rot_z` FLOAT DEFAULT -20,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- Klassen-Spalte zu owned_vehicles (ESX) hinzufügen
|
||||||
|
ALTER TABLE `owned_vehicles`
|
||||||
|
ADD COLUMN IF NOT EXISTS `veh_class` TINYINT DEFAULT 0;
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- Standard-Garagen aus der Config (können ingame geändert werden)
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
INSERT IGNORE INTO `mercyv_garages`
|
||||||
|
(id, label, type, access, blip_show, blip_type, blip_colour, npc_model,
|
||||||
|
npc_x, npc_y, npc_z, npc_heading,
|
||||||
|
spawn_x, spawn_y, spawn_z, spawn_heading,
|
||||||
|
park_x, park_y, park_z,
|
||||||
|
showcar_x, showcar_y, showcar_z, showcar_heading,
|
||||||
|
cam_x, cam_y, cam_z, cam_rot_z)
|
||||||
|
VALUES
|
||||||
|
('Garage A','Garage A','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
214.5806,-806.8969,30.8052,336.3445,
|
||||||
|
233.7616,-802.9507,30.4636,71.0069,
|
||||||
|
214.9846,-790.6285,30.8301,
|
||||||
|
236.39,-779.89,30.67,161.68,
|
||||||
|
234.57,-785.1,30.59,-20.0),
|
||||||
|
|
||||||
|
('Garage B','Garage B','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
275.95,-344.06,45.17,165.24,
|
||||||
|
292.79,-332.22,44.92,161.25,
|
||||||
|
271.68,-341.61,44.92,
|
||||||
|
274.63,-330.28,44.70,164.27,
|
||||||
|
273.08,-335.04,44.92,-20.0),
|
||||||
|
|
||||||
|
('Garage D','Garage D','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
68.35,13.85,69.21,167.77,
|
||||||
|
73.24,11.78,68.85,155.92,
|
||||||
|
73.24,11.78,68.85,
|
||||||
|
59.35,24.31,69.73,245.08,
|
||||||
|
64.78,22.19,69.54,70.0),
|
||||||
|
|
||||||
|
('Garage E','Garage E','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
363.48,296.86,103.50,244.81,
|
||||||
|
367.98,296.57,103.42,345.36,
|
||||||
|
367.98,296.57,103.42,
|
||||||
|
376.33,288.82,103.20,69.26,
|
||||||
|
371.18,290.66,103.31,-110.0),
|
||||||
|
|
||||||
|
('Garage F','Garage F','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-1158.51,-740.67,19.89,41.16,
|
||||||
|
-1169.03,-743.49,19.63,42.38,
|
||||||
|
-1169.03,-743.49,19.63,
|
||||||
|
-1145.2,-759.03,18.82,39.92,
|
||||||
|
-1148.57,-754.86,18.97,-140.0),
|
||||||
|
|
||||||
|
('Garage G','Garage G','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-795.33,-2023.8,9.17,66.37,
|
||||||
|
-790.11,-2022.68,8.87,58.85,
|
||||||
|
-791.39,-2030.26,8.87,
|
||||||
|
-763.11,-2042.28,8.91,37.29,
|
||||||
|
-766.54,-2037.82,8.9,-143.0),
|
||||||
|
|
||||||
|
('Garage H','Garage H','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-468.87,-819.67,30.52,358.04,
|
||||||
|
-472.16,-812.83,30.53,179.63,
|
||||||
|
-453.49,-814.23,30.58,
|
||||||
|
-472.02,-800.43,30.54,183.47,
|
||||||
|
-472.16,-806.15,30.54,-3.0),
|
||||||
|
|
||||||
|
('Garage I','Garage I','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
1142.38,2661.28,38.16,92.19,
|
||||||
|
1137.57,2674.86,38.25,1.08,
|
||||||
|
1137.59,2653.02,38.0,
|
||||||
|
1121.15,2665.03,38.02,266.97,
|
||||||
|
1127.68,2664.84,38.02,88.0),
|
||||||
|
|
||||||
|
('Garage J','Garage J','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
83.51,6420.3,31.76,313.17,
|
||||||
|
85.93,6426.8,31.34,38.93,
|
||||||
|
79.68,6417.33,31.28,
|
||||||
|
112.65,6396.47,31.31,42.5,
|
||||||
|
107.37,6402.14,31.33,-138.0),
|
||||||
|
|
||||||
|
('Garage K','Boot Garage','boat','none',1,356,3,'a_m_m_prolhost_01',
|
||||||
|
-717.9,-1327.46,1.6,50.86,
|
||||||
|
-718.05,-1334.24,-0.44,222.71,
|
||||||
|
-718.03,-1334.21,1.0,
|
||||||
|
-723.7,-1329.22,-0.11,229.03,
|
||||||
|
-719.57,-1332.72,1.41,50.0),
|
||||||
|
|
||||||
|
('Garage L','Flugzeug Garage','aircraft','none',1,359,3,'a_m_m_prolhost_01',
|
||||||
|
-1251.69,-3399.94,13.94,59.19,
|
||||||
|
-1246.91,-3355.14,13.95,330.68,
|
||||||
|
-1246.91,-3355.14,13.95,
|
||||||
|
-1273.01,-3402.28,13.94,331.01,
|
||||||
|
-1268.42,-3394.32,13.94,-210.0),
|
||||||
|
|
||||||
|
('Garage M','Garage M','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
271.94,-1509.32,29.18,87.30,
|
||||||
|
243.22,-1502.84,29.14,222.92,
|
||||||
|
243.22,-1502.84,29.14,
|
||||||
|
253.68,-1511.65,29.14,260.14,
|
||||||
|
256.95,-1500.42,29.14,-200.0),
|
||||||
|
|
||||||
|
('Garage N','Garage N','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-1134.78,2682.73,18.46,132.28,
|
||||||
|
-1155.64,2665.05,18.09,223.0,
|
||||||
|
-1141.49,2680.13,18.09,
|
||||||
|
-1157.10,2672.85,18.09,175.18,
|
||||||
|
-1145.82,2670.54,19.75,-280.0),
|
||||||
|
|
||||||
|
('Garage T','Garage T','normal','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
302.3,-189.94,61.57,73.01,
|
||||||
|
288.09,-194.55,61.57,249.13,
|
||||||
|
301.1,-183.12,61.59,
|
||||||
|
274.64,-189.47,61.57,252.0,
|
||||||
|
279.92,-191.36,61.57,61.57),
|
||||||
|
|
||||||
|
('Impound Garage','Abschlepphof','impound','none',1,68,3,'a_m_m_prolhost_01',
|
||||||
|
406.88,-1625.23,29.29,229.89,
|
||||||
|
408.0,-1645.66,29.29,228.92,
|
||||||
|
408.0,-1645.66,29.29,
|
||||||
|
401.4,-1639.93,29.29,230.79,
|
||||||
|
406.0,-1643.48,29.29,50.29),
|
||||||
|
|
||||||
|
('Impound Boat','Abschlepphof Boot','impoundboat','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-769.64,-1425.65,1.60,230.0,
|
||||||
|
-786.56,-1424.55,-0.51,133.50,
|
||||||
|
-786.56,-1424.55,-0.51,
|
||||||
|
-786.56,-1424.55,-0.51,133.50,
|
||||||
|
-795.95,-1436.94,3.06,322.48),
|
||||||
|
|
||||||
|
('Impound Plane','Abschlepphof Flugzeug','impoundplane','none',1,357,3,'a_m_m_prolhost_01',
|
||||||
|
-1030.27,-3016.30,13.95,339.01,
|
||||||
|
-979.81,-2995.32,13.95,69.51,
|
||||||
|
-979.81,-2995.32,13.95,
|
||||||
|
-984.89,-3012.54,13.95,61.43,
|
||||||
|
-994.19,-3008.20,13.95,236.98),
|
||||||
|
|
||||||
|
('police','Polizei Garage','jobgarage','police',0,357,3,'ig_solomon',
|
||||||
|
457.60,-977.66,21.95,87.43,
|
||||||
|
449.80,-971.60,21.45,177.42,
|
||||||
|
449.42,-979.14,21.45,
|
||||||
|
417.47,-974.65,21.45,177.18,
|
||||||
|
428.37,-974.73,21.45,-270.0),
|
||||||
|
|
||||||
|
('ambulance','Ambulanz Garage','jobgarage','ambulance',0,357,3,'ig_solomon',
|
||||||
|
-286.81,-588.56,27.78,1.87,
|
||||||
|
-286.29,-576.06,27.63,85.73,
|
||||||
|
-285.72,-580.70,27.63,
|
||||||
|
-305.70,-567.67,27.63,296.93,
|
||||||
|
-311.61,-563.86,27.63,-110.0);
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- Vehicle Persist: last_coords Spalte
|
||||||
|
-- (wird automatisch vom Script genutzt)
|
||||||
|
-- ============================================================
|
||||||
|
|
||||||
|
-- ESX:
|
||||||
|
ALTER TABLE `owned_vehicles`
|
||||||
|
ADD COLUMN IF NOT EXISTS `veh_class` TINYINT DEFAULT 0,
|
||||||
|
ADD COLUMN IF NOT EXISTS `last_coords` VARCHAR(255) DEFAULT NULL;
|
||||||
|
|
||||||
|
-- QBCore:
|
||||||
|
-- ALTER TABLE `player_vehicles`
|
||||||
|
-- ADD COLUMN IF NOT EXISTS `veh_class` TINYINT DEFAULT 0,
|
||||||
|
-- ADD COLUMN IF NOT EXISTS `last_coords` VARCHAR(255) DEFAULT NULL;
|
||||||
BIN
[core]/mercyv-garage/nui/fonts/Gilroy-ExtraBold.otf
Normal file
BIN
[core]/mercyv-garage/nui/fonts/Gilroy-Light.otf
Normal file
BIN
[core]/mercyv-garage/nui/images/cars/Adder.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Airbus.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Akuma.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Alpha.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Alphaz1.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Ambulance.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Ardent.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Asbo.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Asea.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Asea2.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Asterope.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Autarch.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Avarus.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bagger.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller2.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller3.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller4.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller5.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Baller6.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Banshee.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Banshee2.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bati.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bati2.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bestiagts.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bf400.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bfinject.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bifta.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bison.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bison2.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bison3.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bjxl.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Blade.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Blazer.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Blista.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Blista2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Blista3.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bobcatxl.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bodhi2.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Brawler.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Brioso.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Brutus.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Brutus2.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Btype.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Btype2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Btype3.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Buccaneer.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Buffalo.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Bullet.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Carbonizzare.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Carbonrs.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Casco.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cavalcade.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cavalcade2.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cheburek.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cheetah.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cheetah2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Chimera.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Chino.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Chino2.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cliffhanger.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Clique.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Club.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cog55.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cog552.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cogcabrio.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cognoscenti Cabrio.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cognoscenti-Cabrio.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Comet2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Comet3.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Comet4.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Comet5.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Contender.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Coquette.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Coquette2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Coquette3.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Coquette4.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Cyclone.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Daemon.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Daemon2.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Defiler.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Deluxo.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Deveste.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Deviant.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Dloader.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Double.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Dukes.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Dynasty.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Elegy.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Elegy2.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Ellie.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
[core]/mercyv-garage/nui/images/cars/Emerus.png
Normal file
|
After Width: | Height: | Size: 17 KiB |