From 386e7a3f15cc6e322adfb53f46cc4ba40a92ba83 Mon Sep 17 00:00:00 2001 From: BerkieBb <82737367+BerkieBb@users.noreply.github.com> Date: Mon, 22 Jan 2024 01:49:52 +0100 Subject: [PATCH] tweak: car and dv commands - Delete current vehicle when you're spawning a car and in a vehicle - Add an option to disable that as an arg - Add radius to dv command - Fix delete when you're next to the car --- client/events.lua | 10 +++++++--- locales/en.json | 8 +++++++- locales/nl.json | 8 +++++++- server/commands.lua | 38 ++++++++++++++++++++++++++------------ 4 files changed, 47 insertions(+), 17 deletions(-) diff --git a/client/events.lua b/client/events.lua index d4bd03553..a95747d1e 100644 --- a/client/events.lua +++ b/client/events.lua @@ -144,10 +144,14 @@ lib.callback.register('qbx_core:client:vehicleSpawned', function(netId, props) end end) -lib.callback.register('qbx_core:client:getNearestVehicle', function() - local vehicle = lib.getClosestVehicle(GetEntityCoords(cache.ped), 5) +lib.callback.register('qbx_core:client:getVehiclesInRadius', function(radius) + local vehicles = lib.getNearbyVehicles(GetEntityCoords(cache.ped), radius or 5, true) - return vehicle and VehToNet(vehicle) + for i = 1, #vehicles do + vehicles[i] = VehToNet(vehicles[i].vehicle) + end + + return vehicles end) -- Other stuff diff --git a/locales/en.json b/locales/en.json index 6364fd780..48e08aa79 100644 --- a/locales/en.json +++ b/locales/en.json @@ -101,7 +101,13 @@ "model": { "name": "model", "help": "Model name of the vehicle" } } }, - "dv": { "help": "Delete Vehicle (Admin Only)" }, + "dv": { + "help": "Delete Vehicle (Admin Only)", + "params": { + "radius": { "name": "radius", "help": "Radius to delete vehicles in (meters)" }, + "keepCurrentVehicle": { "name": "keepCurrentVehicle", "help": "Keep the vehicle you're in right now (leave empty to delete current vehicle)" } + } + }, "givemoney": { "help": "Give A Player Money (Admin Only)", "params": { diff --git a/locales/nl.json b/locales/nl.json index 8f995f65f..90bdc5da0 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -98,7 +98,13 @@ "model": { "name": "model", "help": "Model van het voertuig" } } }, - "dv": { "help": "Voertuig verwijderen (Admin Only)" }, + "dv": { + "help":"Voertuig verwijderen (Admin Only)", + "params": { + "radius": { "name": "radius", "help": "Radius om voertuigen in te verwijderen (meters)" }, + "keepCurrentVehicle": { "name": "keepCurrentVehicle", "help": "Hou het huidige voertuig waar je in zit (laat leeg om huidige voertuig te laten verwijderen)" } + } + }, "givemoney": { "help": "Geef geld aan een speler (Admin Only)", "params": { diff --git a/server/commands.lua b/server/commands.lua index fc32e6777..23be706cc 100644 --- a/server/commands.lua +++ b/server/commands.lua @@ -137,33 +137,47 @@ end) lib.addCommand('car', { help = locale("command.car.help"), params = { - { name = locale("command.car.params.model.name"), help = locale("command.car.params.model.help") } + { name = locale("command.car.params.model.name"), help = locale("command.car.params.model.help") }, + { name = locale("command.car.params.keepCurrentVehicle.name"), help = locale("command.car.params.keepCurrentVehicle.help"), optional = true }, }, restricted = "group.admin" }, function(source, args) if not args then return end + local keepCurrentVehicle = args[locale("command.car.params.keepCurrentVehicle.name")] + local currentVehicle = GetVehiclePedIsIn(GetPlayerPed(source), false) + if not keepCurrentVehicle then + DeleteVehicle(currentVehicle) + end + local netId = SpawnVehicle(source, args[locale("command.car.params.model.name")], nil, true) local plate = GetPlate(NetworkGetEntityFromNetworkId(netId)) config.giveVehicleKeys(source, plate) end) lib.addCommand('dv', { - help = locale("command.dv.help"), + help = locale('command.dv.help'), + params = { + { name = locale('command.dv.params.radius.name'), type = 'number', help = locale('command.dv.params.radius.help'), optional = true } + }, restricted = 'group.admin' -}, function(source) +}, function(source, args) local ped = GetPlayerPed(source) - local pedCar = GetVehiclePedIsIn(ped, false) + local pedCars = {GetVehiclePedIsIn(ped, false)} + local radius = args[locale('command.dv.params.radius.name')] - if not pedCar then - local vehicle = lib.callback.await('qbx_core:client:getNearestVehicle', source) - - if vehicle then - pedCar = NetworkGetEntityFromNetworkId(vehicle) - end + if pedCars[1] == 0 or radius then -- Only execute when player is not in a vehicle or radius is explicitly defined + pedCars = lib.callback.await('qbx_core:client:getVehiclesInRadius', source, radius) + else + pedCars[1] = NetworkGetNetworkIdFromEntity(pedCars[1]) end - if pedCar and DoesEntityExist(pedCar) then - DeleteEntity(pedCar) + if #pedCars ~= 0 then + for i = 1, #pedCars do + local pedCar = NetworkGetEntityFromNetworkId(pedCars[i]) + if pedCar and DoesEntityExist(pedCar) then + DeleteEntity(pedCar) + end + end end end)