forked from Simnation/Main
Merge branch 'master' of https://git.evolution-state-life.de/Evolution-State-Life/Main
This commit is contained in:
commit
f0c92bcdfc
10 changed files with 9514 additions and 9467 deletions
|
@ -1,202 +1,203 @@
|
|||
function OpenChiefMenu(vehicles)
|
||||
local opt = {}
|
||||
|
||||
table.insert(opt,
|
||||
{
|
||||
title = "Fahrzeug Hinzufügen",
|
||||
description = "Neues Fahrzeug Hinzufügen.",
|
||||
icon = "plus",
|
||||
onSelect = function()
|
||||
lib.hideContext("ChiefSettingsMenu")
|
||||
OpenChiefAddVehicleMenu()
|
||||
end
|
||||
}
|
||||
)
|
||||
|
||||
if vehicles then
|
||||
for k, v in pairs(vehicles) do
|
||||
table.insert(opt, {
|
||||
title = v.name,
|
||||
description = "Dieses Fahrzeug bearbeiten...",
|
||||
icon = "car",
|
||||
onSelect = function()
|
||||
lib.hideContext("ChiefSettingsMenu")
|
||||
OpenChiefEditVehicleMenu(v)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefSettingsMenu",
|
||||
title = "Schlüsselkasten",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefSettingsMenu")
|
||||
end
|
||||
|
||||
function OpenChiefAddVehicleMenu()
|
||||
local coords = GetEntityCoords(PlayerPedId())
|
||||
local Player = QBCore.Functions.GetPlayerData()
|
||||
local vehicles = GetGamePool('CVehicle')
|
||||
local opt = {}
|
||||
|
||||
for i = 1, #vehicles, 1 do
|
||||
local vehicleCoords = GetEntityCoords(vehicles[i])
|
||||
local distance = #(vehicleCoords - coords)
|
||||
|
||||
if distance < 20.0 then
|
||||
local mods = QBCore.Functions.GetVehicleProperties(vehicles[i])
|
||||
print(json.encode(mods))
|
||||
table.insert(opt, {
|
||||
title = "Kennzeichen: "..mods.plate,
|
||||
description = "Dieses Fahrzeug Hinzufügen?",
|
||||
icon = "car",
|
||||
onSelect = function()
|
||||
local value = lib.inputDialog("Schlüsselkasten", {
|
||||
{type = "input", label = "Anzeigename", description = "Anzeigename wie die anderen den sehen!"},
|
||||
{type = "number", label = "Schlüsselanzahl", description = "Anzahl der Ersatzschlüssel."},
|
||||
{type = "number", label = "Rang", description = "Ab welchen Rang darf man das Fahrzeug Fahren?"}
|
||||
})
|
||||
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:AddVehicleToJob', function(cb)
|
||||
if cb.status then
|
||||
Notification("Schlüsselkasten", cb.text, cb.type)
|
||||
lib.hideContext('ChiefAddVehicleMenu')
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:CallVehiclesInfo', function(cb)
|
||||
OpenMenu(cb)
|
||||
end, Player.job.name)
|
||||
else
|
||||
Notification("Schlüsselkasten", cb.text, cb.type)
|
||||
if cb.key then
|
||||
SetNewWaypoint(Config.KeyMaker.x, Config.KeyMaker.y)
|
||||
end
|
||||
end
|
||||
end, mods.plate, value)
|
||||
end
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefAddVehicleMenu",
|
||||
title = "Schlüsselkasten",
|
||||
description = "Füge ein Fahrzeug hinzu.",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefAddVehicleMenu")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function OpenChiefEditVehicleMenu(veh)
|
||||
local veh = veh
|
||||
local opt = {
|
||||
{
|
||||
title = "Anzeigename",
|
||||
description = "Zum Bearbeiten Drücken",
|
||||
icon = "hand",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Anzeigename Bearbeiten",{
|
||||
{type = "input", label = "Neuer Anzeigename:", description = "Setz einen neuen Namen für das Fahrzeug."}
|
||||
})
|
||||
|
||||
if input[1] == veh.name then
|
||||
Notification("Schlüsselkasten", "Anzeigename nicht geändert, Name gleich geblieben", "error")
|
||||
else
|
||||
TriggerServerEvent('mh_jobgarage:ChangeName', veh.plate, input[1])
|
||||
end
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktueller Name", value = veh.name}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "--------------- Schlüssel Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Schlüssel Hinzufügen",
|
||||
description = "Fügt ein weiteren Ersatzschlüssel hinzu.",
|
||||
icon = "plus",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Schlüssel Hinzufügen", {
|
||||
{type = "number", label = "Anzahl der Fahrzeugschlüssel", description = "Wie viele Schlüssel willst du Hinzufügen?"}
|
||||
})
|
||||
TriggerServerEvent('mh_jobgarage:AddKeys', veh.plate, input[1])
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktuelle Schlüssel im Kasten", value = veh.key_value}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "Schlüssel Entfernen",
|
||||
description = "Entfernt die zu angegebenen Schlüssel!",
|
||||
icon = "minus",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Schlüssel entfernen", {
|
||||
{type = "number", label = "Anzahl der Fahrzeugschlüssel", description = "Wie viele Schlüssel willst du Entfernen?", min = 1, max = veh.key_value}
|
||||
})
|
||||
|
||||
if input[1] > veh.key_value then
|
||||
Notification("Schlüsselkasten", "So viele Schlüssel sind da nicht drin! Max: "..veh.key_value, "inform")
|
||||
else
|
||||
TriggerServerEvent('mh_jobgarage:RemoveKeys', veh.plate, input[1])
|
||||
end
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktuelle Schlüssel im Kasten", value = veh.key_value}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "--------------- Fahrzeug Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Fahrzeug Sperren",
|
||||
description = "Das Fahrzeug wird angezeigt, aber es werden keine Schlüssel raus gegeben.",
|
||||
icon = "lock",
|
||||
onSelect = function()
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:lockVehicle', function(cb)
|
||||
if cb then
|
||||
if veh.closed == "true" then
|
||||
Notification("Schlüsselkasten", "Fahrzeug wurde entsperrt!", "success")
|
||||
veh.closed = "false"
|
||||
elseif veh.closed == "false" then
|
||||
Notification("Schlüsselkasten", "Fahrzeug wurde gesperrt!", "success")
|
||||
veh.closed = "true"
|
||||
end
|
||||
lib.hideContext("ChiefEditVehicleMenu")
|
||||
Wait(300)
|
||||
OpenChiefEditVehicleMenu(veh)
|
||||
else
|
||||
Notification("Schlüsselkasten", "Fehler beim Bearbeiten!", "warning")
|
||||
end
|
||||
end, veh.plate)
|
||||
end
|
||||
},
|
||||
{
|
||||
title = "Fahrzeug löschen...",
|
||||
description = "Gibt dir das Fahrzeug als Inhaber...",
|
||||
icon = "remove",
|
||||
onSelect = function()
|
||||
TriggerServerEvent('mh_jobgarage:DeleteFromList', veh.plate)
|
||||
end
|
||||
},
|
||||
--[[ {
|
||||
title = "--------------- Log Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Logs einsehen!",
|
||||
description = "Zeigt dir alle Änderungen an",
|
||||
icon = "book",
|
||||
disabled = true
|
||||
} ]]
|
||||
}
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefEditVehicleMenu",
|
||||
title = "Schlüsselkasten",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefEditVehicleMenu")
|
||||
function OpenChiefMenu(vehicles)
|
||||
local opt = {}
|
||||
|
||||
table.insert(opt,
|
||||
{
|
||||
title = "Fahrzeug Hinzufügen",
|
||||
description = "Neues Fahrzeug Hinzufügen.",
|
||||
icon = "plus",
|
||||
onSelect = function()
|
||||
lib.hideContext("ChiefSettingsMenu")
|
||||
OpenChiefAddVehicleMenu()
|
||||
end
|
||||
}
|
||||
)
|
||||
|
||||
if vehicles then
|
||||
for k, v in pairs(vehicles) do
|
||||
table.insert(opt, {
|
||||
title = v.name,
|
||||
description = "Dieses Fahrzeug bearbeiten...",
|
||||
icon = "car",
|
||||
onSelect = function()
|
||||
lib.hideContext("ChiefSettingsMenu")
|
||||
OpenChiefEditVehicleMenu(v)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefSettingsMenu",
|
||||
title = "Schlüsselkasten",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefSettingsMenu")
|
||||
end
|
||||
|
||||
function OpenChiefAddVehicleMenu()
|
||||
local Player = QBCore.Functions.GetPlayerData()
|
||||
local opt = {}
|
||||
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:CallOwnerVehicles', function(vehicles)
|
||||
if vehicles ~= false then
|
||||
local opt = {}
|
||||
|
||||
for i = 1, #vehicles, 1 do
|
||||
local isSpawned, mods = IsVehicleSpawned(plate)
|
||||
|
||||
table.insert(opt, {
|
||||
title = "Kennzeichen: "..mods.plate,
|
||||
description = "Deine Ersatzschlüssel: "..vehicles[i].keys,
|
||||
icon = 'car',
|
||||
onSelect = function()
|
||||
local value = lib.inputDialog("Schlüsselkasten", {
|
||||
{type = "input", label = "Anzeigename", description = "Anzeigename wie die anderen den sehen!"},
|
||||
{type = "number", label = "Schlüsselanzahl", description = "Anzahl der Ersatzschlüssel.", min = 1, max = vehicles[i].keys},
|
||||
{type = "number", label = "Rang", description = "Ab welchen Rang darf man das Fahrzeug Fahren?"}
|
||||
})
|
||||
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:AddVehicleToJob', function(cb)
|
||||
if cb.status then
|
||||
Notification("Schlüsselkasten", cb.text, cb.type)
|
||||
lib.hideContext('ChiefAddVehicleMenu')
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:CallVehiclesInfo', function(cb)
|
||||
OpenMenu(cb)
|
||||
end, Player.job.name)
|
||||
else
|
||||
Notification("Schlüsselkasten", cb.text, cb.type)
|
||||
if cb.key then
|
||||
SetNewWaypoint(Config.KeyMaker.x, Config.KeyMaker.y)
|
||||
end
|
||||
end
|
||||
end, mods.plate, value)
|
||||
end
|
||||
})
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefAddVehicleMenu",
|
||||
title = "Schlüsselkasten",
|
||||
description = "Füge ein Fahrzeug hinzu.",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefAddVehicleMenu")
|
||||
end
|
||||
else
|
||||
Notification("Schlüsselkasten", "Keine Fahrzeuge von dir Gefunden!", "error")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function OpenChiefEditVehicleMenu(veh)
|
||||
local veh = veh
|
||||
local opt = {
|
||||
{
|
||||
title = "Anzeigename",
|
||||
description = "Zum Bearbeiten Drücken",
|
||||
icon = "hand",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Anzeigename Bearbeiten",{
|
||||
{type = "input", label = "Neuer Anzeigename:", description = "Setz einen neuen Namen für das Fahrzeug."}
|
||||
})
|
||||
|
||||
if input[1] == veh.name then
|
||||
Notification("Schlüsselkasten", "Anzeigename nicht geändert, Name gleich geblieben", "error")
|
||||
else
|
||||
TriggerServerEvent('mh_jobgarage:ChangeName', veh.plate, input[1])
|
||||
end
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktueller Name", value = veh.name}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "--------------- Schlüssel Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Schlüssel Hinzufügen",
|
||||
description = "Fügt ein weiteren Ersatzschlüssel hinzu.",
|
||||
icon = "plus",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Schlüssel Hinzufügen", {
|
||||
{type = "number", label = "Anzahl der Fahrzeugschlüssel", description = "Wie viele Schlüssel willst du Hinzufügen?"}
|
||||
})
|
||||
TriggerServerEvent('mh_jobgarage:AddKeys', veh.plate, input[1])
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktuelle Schlüssel im Kasten", value = veh.key_value}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "Schlüssel Entfernen",
|
||||
description = "Entfernt die zu angegebenen Schlüssel!",
|
||||
icon = "minus",
|
||||
onSelect = function()
|
||||
local input = lib.inputDialog("Schlüsselkasten - Schlüssel entfernen", {
|
||||
{type = "number", label = "Anzahl der Fahrzeugschlüssel", description = "Wie viele Schlüssel willst du Entfernen?", min = 1, max = veh.key_value}
|
||||
})
|
||||
|
||||
if input[1] > veh.key_value then
|
||||
Notification("Schlüsselkasten", "So viele Schlüssel sind da nicht drin! Max: "..veh.key_value, "inform")
|
||||
else
|
||||
TriggerServerEvent('mh_jobgarage:RemoveKeys', veh.plate, input[1])
|
||||
end
|
||||
end,
|
||||
metadata = {
|
||||
{label = "Aktuelle Schlüssel im Kasten", value = veh.key_value}
|
||||
}
|
||||
},
|
||||
{
|
||||
title = "--------------- Fahrzeug Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Fahrzeug Sperren",
|
||||
description = "Das Fahrzeug wird angezeigt, aber es werden keine Schlüssel raus gegeben.",
|
||||
icon = "lock",
|
||||
onSelect = function()
|
||||
QBCore.Functions.TriggerCallback('mh_jobgarage:lockVehicle', function(cb)
|
||||
if cb then
|
||||
if veh.closed == "true" then
|
||||
Notification("Schlüsselkasten", "Fahrzeug wurde entsperrt!", "success")
|
||||
veh.closed = "false"
|
||||
elseif veh.closed == "false" then
|
||||
Notification("Schlüsselkasten", "Fahrzeug wurde gesperrt!", "success")
|
||||
veh.closed = "true"
|
||||
end
|
||||
lib.hideContext("ChiefEditVehicleMenu")
|
||||
Wait(300)
|
||||
OpenChiefEditVehicleMenu(veh)
|
||||
else
|
||||
Notification("Schlüsselkasten", "Fehler beim Bearbeiten!", "warning")
|
||||
end
|
||||
end, veh.plate)
|
||||
end
|
||||
},
|
||||
{
|
||||
title = "Fahrzeug löschen...",
|
||||
description = "Gibt dir das Fahrzeug als Inhaber...",
|
||||
icon = "remove",
|
||||
onSelect = function()
|
||||
TriggerServerEvent('mh_jobgarage:DeleteFromList', veh.plate)
|
||||
end
|
||||
},
|
||||
--[[ {
|
||||
title = "--------------- Log Menu ---------------"
|
||||
},
|
||||
{
|
||||
title = "Logs einsehen!",
|
||||
description = "Zeigt dir alle Änderungen an",
|
||||
icon = "book",
|
||||
disabled = true
|
||||
} ]]
|
||||
}
|
||||
|
||||
lib.registerContext({
|
||||
id = "ChiefEditVehicleMenu",
|
||||
title = "Schlüsselkasten",
|
||||
options = opt
|
||||
})
|
||||
|
||||
lib.showContext("ChiefEditVehicleMenu")
|
||||
end
|
|
@ -231,4 +231,23 @@ AddEventHandler('mh_jobgarage:GiveAllKeysBack', function(veh)
|
|||
end)
|
||||
end
|
||||
TriggerClientEvent('mh_jobgarage:notify', _source, "Schlüsselkasten", "Du hast sämtliche Schlüssel zurückgegeben", "inform")
|
||||
end)
|
||||
|
||||
QBCore.Functions.CreateCallback('mh_jobgarage:CallOwnerVehicles', function(source, cb)
|
||||
local _source = source
|
||||
local Player = QBCore.Functions.GetPlayer(_source)
|
||||
local pedid = Player.PlayerData.citizenid
|
||||
local veh = {}
|
||||
MySQL.query("SELECT * FROM player_vehicles", {}, function(rs)
|
||||
if rs ~= nil and rs[1] ~= nil then
|
||||
for k, v in pairs(rs) do
|
||||
local keycount = MySQL.query("SELECT * FROM vehicle_keys WHERE owner = ? AND plate = ?", {pedid, v.plate})
|
||||
print("Key Count: "..json.encode(keycount))
|
||||
table.insert(veh, {plate = v.plate, keys = keycount[1].count})
|
||||
end
|
||||
cb(veh)
|
||||
else
|
||||
cb(false)
|
||||
end
|
||||
end)
|
||||
end)
|
|
@ -1 +1 @@
|
|||
{"police":100,"Zum Durstigen Dackel":200,"ambulance":0,"kayas":0,"dackel":0,"ammu":1000,"odin":0,"cinema":0}
|
||||
{"Zum Durstigen Dackel":200,"kayas":0,"odin":0,"ammu":1000,"dackel":0,"ambulance":0,"police":100,"cinema":0}
|
File diff suppressed because it is too large
Load diff
|
@ -5946,3 +5946,15 @@
|
|||
[[36minfo[39m][UnlSpectre][2025/06/23 04:00:56]: Successfully started PlayerController
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 04:00:56]: Successfully started VehicleController
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 04:01:05]: HTTP Server started on port 3000.
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 16:00:18]: Successfully registered Exports
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:02:20]: Successfully registered Exports
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:20:27]: Successfully registered Exports
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully registered Exports
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully loaded Items
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully loaded Jobs
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully loaded Gangs
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully loaded Vehicles
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully started GameController
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully started PlayerController
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:36]: Successfully started VehicleController
|
||||
[[36minfo[39m][UnlSpectre][2025/06/23 18:22:43]: HTTP Server started on port 3000.
|
||||
|
|
|
@ -4155,6 +4155,6 @@
|
|||
}
|
||||
],
|
||||
"waypoints": [],
|
||||
"tokenSecret": "AA32TMVDbDf6PE8ENNze",
|
||||
"tokenSecret": "9K7UMZpVCEyP3HKTEi3b",
|
||||
"supporterStash": []
|
||||
}
|
|
@ -8144,3 +8144,8 @@
|
|||
[info][2025/06/22 22:50:09]: nordi requested item spazi.
|
||||
[info][2025/06/22 22:50:11]: nordi requested save item spazi.
|
||||
[info][2025/06/22 22:50:11]: nordi successfully saved item spazi.
|
||||
[info][2025/06/23 19:03:44]: nordi requested all items.
|
||||
[info][2025/06/23 19:03:53]: nordi requested item pistol_ammo.
|
||||
[info][2025/06/23 19:04:04]: nordi requested save item pistol_ammo.
|
||||
[info][2025/06/23 19:04:04]: nordi successfully saved item pistol_ammo.
|
||||
[info][2025/06/23 19:04:08]: nordi requested all items.
|
||||
|
|
|
@ -4102,3 +4102,5 @@
|
|||
[info][2025/06/22 23:26:27]: Lucifer Morningstar got killed by Victoria Ann with Special Carbine causing 239 damage.
|
||||
[info][2025/06/22 23:41:20]: Lucifer Morningstar got hit by Lucifer Morningstar with Fist causing 16 damage.
|
||||
[info][2025/06/22 23:41:21]: Lucifer Morningstar got hit by Lucifer Morningstar with Fist causing 16 damage.
|
||||
[info][2025/06/23 19:06:02]: David Munkli aimed at Eylül Kaya with Special Carbine.
|
||||
[info][2025/06/23 19:11:36]: Sophia Marino got hit by Wilke Mayer with Fist causing 27 damage.
|
||||
|
|
|
@ -7529,3 +7529,5 @@
|
|||
[info][2025/06/22 23:26:27]: [BCK05564] Got killed by Victoria Ann (GNR11868) with Special Carbine causing 239 damage.
|
||||
[info][2025/06/22 23:41:20]: [BCK05564] Got hit by Lucifer Morningstar (BCK05564) with Fist causing 16 damage.
|
||||
[info][2025/06/22 23:41:21]: [BCK05564] Got hit by Lucifer Morningstar (BCK05564) with Fist causing 16 damage.
|
||||
[info][2025/06/23 19:06:02]: [DWK58991] Aimed at Eylül Kaya (KOK33025) with Special Carbine.
|
||||
[info][2025/06/23 19:11:36]: [ABD68100] Got hit by Wilke Mayer (ITG79090) with Fist causing 27 damage.
|
||||
|
|
|
@ -6288,3 +6288,9 @@
|
|||
[info][2025/06/22 21:58:41]: Login attempt on Nordi from 95.33.60.84
|
||||
[info][2025/06/22 21:58:43]: Login attempt on Nordi from 95.33.60.84
|
||||
[info][2025/06/22 22:23:10]: nordi requested all players.
|
||||
[info][2025/06/23 18:29:24]: Login attempt on Nordi from 80.228.185.74
|
||||
[info][2025/06/23 18:31:06]: nordi requested all vehicles.
|
||||
[info][2025/06/23 18:31:10]: nordi requested all vehicles.
|
||||
[info][2025/06/23 18:31:11]: nordi requested all vehicles.
|
||||
[info][2025/06/23 18:31:15]: nordi requested vehicle with id 237.
|
||||
[info][2025/06/23 18:31:18]: nordi requested despawn vehicle with plate 6PQ692PZ id 237.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue