diff --git a/client/main.lua b/client/main.lua
index 4f2a81f9..3a37fb7d 100644
--- a/client/main.lua
+++ b/client/main.lua
@@ -83,20 +83,22 @@ AddEventHandler('esx_vehicleshop:sendVehicles', function (vehicles)
Vehicles = vehicles
end)
-function DeleteShopInsideVehicles ()
- while #LastVehicles > 0 do
- local vehicle = LastVehicles[1]
- ESX.Game.DeleteVehicle(vehicle)
- table.remove(LastVehicles, 1)
- end
+function DeleteShopInsideVehicles()
+ while #LastVehicles > 0 do
+ local vehicle = LastVehicles[1]
+
+ ESX.Game.DeleteVehicle(vehicle)
+ table.remove(LastVehicles, 1)
+ end
end
function ReturnVehicleProvider()
+
ESX.TriggerServerCallback('esx_vehicleshop:getCommercialVehicles', function (vehicles)
local elements = {}
local returnPrice
for i=1, #vehicles, 1 do
- returnPrice = ESX.Round(vehicles[i].price * 0.75)
+ returnPrice = ESX.Math.Round(vehicles[i].price * 0.75)
table.insert(elements, {
label = vehicles[i].name .. ' [$' .. returnPrice .. ']',
@@ -123,508 +125,491 @@ function ReturnVehicleProvider()
end
-function OpenShopMenu ()
- IsInShopMenu = true
-
- ESX.UI.Menu.CloseAll()
-
- local playerPed = PlayerPedId()
-
- FreezeEntityPosition(playerPed, true)
- SetEntityVisible(playerPed, false)
- SetEntityCoords(playerPed, Config.Zones.ShopInside.Pos.x, Config.Zones.ShopInside.Pos.y, Config.Zones.ShopInside.Pos.z)
-
- local vehiclesByCategory = {}
- local elements = {}
- local firstVehicleData = nil
-
- for i=1, #Categories, 1 do
- vehiclesByCategory[Categories[i].name] = {}
- end
-
- for i=1, #Vehicles, 1 do
- table.insert(vehiclesByCategory[Vehicles[i].category], Vehicles[i])
- end
-
- for i=1, #Categories, 1 do
- local category = Categories[i]
- local categoryVehicles = vehiclesByCategory[category.name]
- local options = {}
-
- for j=1, #categoryVehicles, 1 do
- local vehicle = categoryVehicles[j]
-
- if i == 1 and j == 1 then
- firstVehicleData = vehicle
- end
-
- table.insert(options, vehicle.name .. ' $' .. vehicle.price .. '')
- end
-
- table.insert(elements, {
- name = category.name,
- label = category.label,
- value = 0,
- type = 'slider',
- max = #Categories[i],
- options = options
- })
- end
-
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'vehicle_shop',
- {
- title = _U('car_dealer'),
- align = 'top-left',
- elements = elements
- },
- function (data, menu)
- local vehicleData = vehiclesByCategory[data.current.name][data.current.value + 1]
-
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'shop_confirm',
- {
- title = _U('buy_vehicle_shop', vehicleData.name, vehicleData.price),
- align = 'top-left',
- elements = {
- {label = _U('yes'), value = 'yes'},
- {label = _U('no'), value = 'no'},
- },
- },
- function (data2, menu2)
- if data2.current.value == 'yes' then
- if Config.EnablePlayerManagement then
- ESX.TriggerServerCallback('esx_vehicleshop:buyVehicleSociety', function (hasEnoughMoney)
- if hasEnoughMoney then
- IsInShopMenu = false
-
- DeleteShopInsideVehicles()
-
- local playerPed = PlayerPedId()
-
- CurrentAction = 'shop_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
-
- FreezeEntityPosition(playerPed, false)
- SetEntityVisible(playerPed, true)
- SetEntityCoords(playerPed, Config.Zones.ShopEntering.Pos.x, Config.Zones.ShopEntering.Pos.y, Config.Zones.ShopEntering.Pos.z)
-
- menu2.close()
- menu.close()
-
- ESX.ShowNotification(_U('vehicle_purchased'))
- else
- ESX.ShowNotification(_U('broke_company'))
- end
-
- end, 'cardealer', vehicleData.model)
- else
- local playerData = ESX.GetPlayerData()
-
- if Config.EnableSocietyOwnedVehicles and playerData.job.grade_name == 'boss' then
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'shop_confirm_buy_type',
- {
- title = _U('purchase_type'),
- align = 'top-left',
- elements = {
- {label = _U('staff_type'), value = 'personnal'},
- {label = _U('society_type'), value = 'society'},
- },
- },
- function (data3, menu3)
-
- if data3.current.value == 'personnal' then
- ESX.TriggerServerCallback('esx_vehicleshop:buyVehicle', function (hasEnoughMoney)
- if hasEnoughMoney then
- IsInShopMenu = false
-
- menu3.close()
- menu2.close()
- menu.close()
-
- DeleteShopInsideVehicles()
-
- ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
-
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
-
- local newPlate = GeneratePlate()
- local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(vehicle, newPlate)
-
- if Config.EnableOwnedVehicles then
- TriggerServerEvent('esx_vehicleshop:setVehicleOwned', vehicleProps)
- end
-
- ESX.ShowNotification(_U('vehicle_purchased'))
- end)
-
- FreezeEntityPosition(playerPed, false)
- SetEntityVisible(playerPed, true)
- else
- ESX.ShowNotification(_U('not_enough_money'))
- end
- end, vehicleData.model)
- end
-
- if data3.current.value == 'society' then
- ESX.TriggerServerCallback('esx_vehicleshop:buyVehicleSociety', function (hasEnoughMoney)
- if hasEnoughMoney then
-
- IsInShopMenu = false
-
- menu3.close()
- menu2.close()
- menu.close()
+function OpenShopMenu()
+
+ IsInShopMenu = true
+
+ ESX.UI.Menu.CloseAll()
+
+ local playerPed = PlayerPedId()
+
+ FreezeEntityPosition(playerPed, true)
+ SetEntityVisible(playerPed, false)
+ SetEntityCoords(playerPed, Config.Zones.ShopInside.Pos.x, Config.Zones.ShopInside.Pos.y, Config.Zones.ShopInside.Pos.z)
+
+ local vehiclesByCategory = {}
+ local elements = {}
+ local firstVehicleData = nil
+
+ for i=1, #Categories, 1 do
+ vehiclesByCategory[Categories[i].name] = {}
+ end
- DeleteShopInsideVehicles()
+ for i=1, #Vehicles, 1 do
+ table.insert(vehiclesByCategory[Vehicles[i].category], Vehicles[i])
+ end
- ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
+ for i=1, #Categories, 1 do
+ local category = Categories[i]
+ local categoryVehicles = vehiclesByCategory[category.name]
+ local options = {}
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ for j=1, #categoryVehicles, 1 do
+ local vehicle = categoryVehicles[j]
- local newPlate = GeneratePlate()
- local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(vehicle, newPlate)
+ if i == 1 and j == 1 then
+ firstVehicleData = vehicle
+ end
- TriggerServerEvent('esx_vehicleshop:setVehicleOwnedSociety', playerData.job.name, vehicleProps)
+ table.insert(options, vehicle.name .. ' $' .. vehicle.price .. '')
+ end
- ESX.ShowNotification(_U('vehicle_purchased'))
+ table.insert(elements, {
+ name = category.name,
+ label = category.label,
+ value = 0,
+ type = 'slider',
+ max = #Categories[i],
+ options = options
+ })
+ end
- end)
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'vehicle_shop',
+ {
+ title = _U('car_dealer'),
+ align = 'top-left',
+ elements = elements
+ }, function (data, menu)
+ local vehicleData = vehiclesByCategory[data.current.name][data.current.value + 1]
- FreezeEntityPosition(playerPed, false)
- SetEntityVisible(playerPed, true)
- else
- ESX.ShowNotification(_U('broke_company'))
- end
- end, playerData.job.name, vehicleData.model)
- end
- end,
- function (data3, menu3)
- menu3.close()
- end
- )
- else
- ESX.TriggerServerCallback('esx_vehicleshop:buyVehicle', function (hasEnoughMoney)
- if hasEnoughMoney then
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'shop_confirm', {
+ title = _U('buy_vehicle_shop', vehicleData.name, vehicleData.price),
+ align = 'top-left',
+ elements = {
+ {label = _U('yes'), value = 'yes'},
+ {label = _U('no'), value = 'no'},
+ }
+ }, function (data2, menu2)
+ if data2.current.value == 'yes' then
+ if Config.EnablePlayerManagement then
+ ESX.TriggerServerCallback('esx_vehicleshop:buyVehicleSociety', function(hasEnoughMoney)
- IsInShopMenu = false
+ if hasEnoughMoney then
+ IsInShopMenu = false
- menu2.close()
- menu.close()
+ DeleteShopInsideVehicles()
- DeleteShopInsideVehicles()
+ local playerPed = PlayerPedId()
- ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
+ CurrentAction = 'shop_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ FreezeEntityPosition(playerPed, false)
+ SetEntityVisible(playerPed, true)
+ SetEntityCoords(playerPed, Config.Zones.ShopEntering.Pos.x, Config.Zones.ShopEntering.Pos.y, Config.Zones.ShopEntering.Pos.z)
- local newPlate = GeneratePlate()
- local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(vehicle, newPlate)
+ menu2.close()
+ menu.close()
- if Config.EnableOwnedVehicles then
- TriggerServerEvent('esx_vehicleshop:setVehicleOwned', vehicleProps)
- end
+ ESX.ShowNotification(_U('vehicle_purchased'))
+ else
+ ESX.ShowNotification(_U('broke_company'))
+ end
- ESX.ShowNotification(_U('vehicle_purchased'))
- end)
+ end, 'cardealer', vehicleData.model)
+ else
+ local playerData = ESX.GetPlayerData()
- FreezeEntityPosition(playerPed, false)
- SetEntityVisible(playerPed, true)
- else
- ESX.ShowNotification(_U('not_enough_money'))
- end
- end, vehicleData.model)
- end
- end
- end
+ if Config.EnableSocietyOwnedVehicles and playerData.job.grade_name == 'boss' then
- if data2.current.value == 'no' then
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'shop_confirm_buy_type', {
+ title = _U('purchase_type'),
+ align = 'top-left',
+ elements = {
+ {label = _U('staff_type'), value = 'personnal'},
+ {label = _U('society_type'), value = 'society'}
+ }
+ }, function (data3, menu3)
- end
+ if data3.current.value == 'personnal' then
- end,
- function (data2, menu2)
- menu2.close()
- end
- )
+ ESX.TriggerServerCallback('esx_vehicleshop:buyVehicle', function (hasEnoughMoney)
- end,
- function (data, menu)
+ if hasEnoughMoney then
+ IsInShopMenu = false
- menu.close()
+ menu3.close()
+ menu2.close()
+ menu.close()
- DeleteShopInsideVehicles()
+ DeleteShopInsideVehicles()
- local playerPed = PlayerPedId()
+ ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
- CurrentAction = 'shop_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
+ local newPlate = GeneratePlate()
+ local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(vehicle, newPlate)
- FreezeEntityPosition(playerPed, false)
- SetEntityVisible(playerPed, true)
- SetEntityCoords(playerPed, Config.Zones.ShopEntering.Pos.x, Config.Zones.ShopEntering.Pos.y, Config.Zones.ShopEntering.Pos.z)
+ if Config.EnableOwnedVehicles then
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwned', vehicleProps)
+ end
- IsInShopMenu = false
+ ESX.ShowNotification(_U('vehicle_purchased'))
+ end)
- end,
- function (data, menu)
- local vehicleData = vehiclesByCategory[data.current.name][data.current.value + 1]
- local playerPed = PlayerPedId()
+ FreezeEntityPosition(playerPed, false)
+ SetEntityVisible(playerPed, true)
+ else
+ ESX.ShowNotification(_U('not_enough_money'))
+ end
- DeleteShopInsideVehicles()
+ end, vehicleData.model)
- ESX.Game.SpawnLocalVehicle(vehicleData.model, Config.Zones.ShopInside.Pos, Config.Zones.ShopInside.Heading, function (vehicle)
- table.insert(LastVehicles, vehicle)
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
- FreezeEntityPosition(vehicle, true)
- end)
- end
- )
+ elseif data3.current.value == 'society' then
- DeleteShopInsideVehicles()
+ ESX.TriggerServerCallback('esx_vehicleshop:buyVehicleSociety', function (hasEnoughMoney)
- ESX.Game.SpawnLocalVehicle(firstVehicleData.model, Config.Zones.ShopInside.Pos, Config.Zones.ShopInside.Heading, function (vehicle)
- table.insert(LastVehicles, vehicle)
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
- FreezeEntityPosition(vehicle, true)
- end)
+ if hasEnoughMoney then
+ IsInShopMenu = false
+
+ menu3.close()
+ menu2.close()
+ menu.close()
+
+ DeleteShopInsideVehicles()
+
+ ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+
+ local newPlate = GeneratePlate()
+ local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(vehicle, newPlate)
+
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwnedSociety', playerData.job.name, vehicleProps)
+
+ ESX.ShowNotification(_U('vehicle_purchased'))
+ end)
+
+ FreezeEntityPosition(playerPed, false)
+ SetEntityVisible(playerPed, true)
+ else
+ ESX.ShowNotification(_U('broke_company'))
+ end
+
+ end, playerData.job.name, vehicleData.model)
+
+ end
+ end, function (data3, menu3)
+ menu3.close()
+ end)
+ else
+ ESX.TriggerServerCallback('esx_vehicleshop:buyVehicle', function (hasEnoughMoney)
+
+ if hasEnoughMoney then
+ IsInShopMenu = false
+
+ menu2.close()
+ menu.close()
+
+ DeleteShopInsideVehicles()
+
+ ESX.Game.SpawnVehicle(vehicleData.model, Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading, function (vehicle)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+
+ local newPlate = GeneratePlate()
+ local vehicleProps = ESX.Game.GetVehicleProperties(vehicle)
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(vehicle, newPlate)
+
+ if Config.EnableOwnedVehicles then
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwned', vehicleProps)
+ end
+
+ ESX.ShowNotification(_U('vehicle_purchased'))
+ end)
+
+ FreezeEntityPosition(playerPed, false)
+ SetEntityVisible(playerPed, true)
+ else
+ ESX.ShowNotification(_U('not_enough_money'))
+ end
+
+ end, vehicleData.model)
+ end
+ end
+ elseif data2.current.value == 'no' then
+
+ end
+
+ end, function (data2, menu2)
+ menu2.close()
+ end)
+
+ end, function (data, menu)
+
+ menu.close()
+
+ DeleteShopInsideVehicles()
+
+ local playerPed = PlayerPedId()
+
+ CurrentAction = 'shop_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+
+ FreezeEntityPosition(playerPed, false)
+ SetEntityVisible(playerPed, true)
+ SetEntityCoords(playerPed, Config.Zones.ShopEntering.Pos.x, Config.Zones.ShopEntering.Pos.y, Config.Zones.ShopEntering.Pos.z)
+
+ IsInShopMenu = false
+
+ end, function (data, menu)
+ local vehicleData = vehiclesByCategory[data.current.name][data.current.value + 1]
+ local playerPed = PlayerPedId()
+
+ DeleteShopInsideVehicles()
+
+ ESX.Game.SpawnLocalVehicle(vehicleData.model, Config.Zones.ShopInside.Pos, Config.Zones.ShopInside.Heading, function (vehicle)
+ table.insert(LastVehicles, vehicle)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ FreezeEntityPosition(vehicle, true)
+ end)
+ end)
+
+ DeleteShopInsideVehicles()
+
+ ESX.Game.SpawnLocalVehicle(firstVehicleData.model, Config.Zones.ShopInside.Pos, Config.Zones.ShopInside.Heading, function (vehicle)
+ table.insert(LastVehicles, vehicle)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ FreezeEntityPosition(vehicle, true)
+ end)
end
-function OpenResellerMenu ()
+function OpenResellerMenu()
- ESX.UI.Menu.CloseAll()
+ ESX.UI.Menu.CloseAll()
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'reseller',
- {
- title = _U('car_dealer'),
- align = 'top-left',
- elements = {
- {label = _U('buy_vehicle'), value = 'buy_vehicle'},
- {label = _U('pop_vehicle'), value = 'pop_vehicle'},
- {label = _U('depop_vehicle'), value = 'depop_vehicle'},
- {label = _U('return_provider'), value = 'return_provider'},
- {label = _U('create_bill'), value = 'create_bill'},
- {label = _U('get_rented_vehicles'), value = 'get_rented_vehicles'},
- {label = _U('set_vehicle_owner_sell'), value = 'set_vehicle_owner_sell'},
- {label = _U('set_vehicle_owner_rent'), value = 'set_vehicle_owner_rent'},
- {label = _U('set_vehicle_owner_sell_society'), value = 'set_vehicle_owner_sell_society'},
- {label = _U('deposit_stock'), value = 'put_stock'},
- {label = _U('take_stock'), value = 'get_stock'},
- }
- },
- function (data, menu)
- local action = data.current.value
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'reseller',
+ {
+ title = _U('car_dealer'),
+ align = 'top-left',
+ elements = {
+ {label = _U('buy_vehicle'), value = 'buy_vehicle'},
+ {label = _U('pop_vehicle'), value = 'pop_vehicle'},
+ {label = _U('depop_vehicle'), value = 'depop_vehicle'},
+ {label = _U('return_provider'), value = 'return_provider'},
+ {label = _U('create_bill'), value = 'create_bill'},
+ {label = _U('get_rented_vehicles'), value = 'get_rented_vehicles'},
+ {label = _U('set_vehicle_owner_sell'), value = 'set_vehicle_owner_sell'},
+ {label = _U('set_vehicle_owner_rent'), value = 'set_vehicle_owner_rent'},
+ {label = _U('set_vehicle_owner_sell_society'), value = 'set_vehicle_owner_sell_society'},
+ {label = _U('deposit_stock'), value = 'put_stock'},
+ {label = _U('take_stock'), value = 'get_stock'}
+ }
+ }, function (data, menu)
+ local action = data.current.value
- if action == 'buy_vehicle' then
- OpenShopMenu()
- elseif action == 'put_stock' then
- OpenPutStocksMenu()
- elseif action == 'get_stock' then
- OpenGetStocksMenu()
- elseif action == 'pop_vehicle' then
- OpenPopVehicleMenu()
- elseif action == 'depop_vehicle' then
- DeleteShopInsideVehicles()
- elseif action == 'return_provider' then
- ReturnVehicleProvider()
- elseif action == 'create_bill' then
- local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
- if closestPlayer == -1 or closestDistance > 3.0 then
- ESX.ShowNotification(_U('no_players'))
- return
- end
- ESX.UI.Menu.Open(
- 'dialog', GetCurrentResourceName(), 'set_vehicle_owner_sell_amount',
- {
- title = _U('invoice_amount'),
- },
- function (data2, menu)
+ if action == 'buy_vehicle' then
+ OpenShopMenu()
+ elseif action == 'put_stock' then
+ OpenPutStocksMenu()
+ elseif action == 'get_stock' then
+ OpenGetStocksMenu()
+ elseif action == 'pop_vehicle' then
+ OpenPopVehicleMenu()
+ elseif action == 'depop_vehicle' then
+ DeleteShopInsideVehicles()
+ elseif action == 'return_provider' then
+ ReturnVehicleProvider()
+ elseif action == 'create_bill' then
- local amount = tonumber(data2.value)
+ local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+ if closestPlayer == -1 or closestDistance > 3.0 then
+ ESX.ShowNotification(_U('no_players'))
+ return
+ end
- if amount == nil then
- ESX.ShowNotification(_U('invoice_amount'))
- else
- menu.close()
+ ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'set_vehicle_owner_sell_amount', {
+ title = _U('invoice_amount')
+ }, function (data2, menu2)
+ local amount = tonumber(data2.value)
- local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+ if amount == nil then
+ ESX.ShowNotification(_U('invoice_amount'))
+ else
+ menu2.close()
- if closestPlayer == -1 or closestDistance > 3.0 then
- ESX.ShowNotification(_U('no_players'))
- else
- TriggerServerEvent('esx_billing:sendBill', GetPlayerServerId(closestPlayer), 'society_cardealer', _U('car_dealer'), tonumber(data2.value))
- end
- end
- end,
- function (data2, menu)
- menu.close()
- end
- )
- elseif action == 'get_rented_vehicles' then
- OpenRentedVehiclesMenu()
- elseif action == 'set_vehicle_owner_sell' then
- local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+ local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
- if closestPlayer == -1 or closestDistance > 3.0 then
- ESX.ShowNotification(_U('no_players'))
- else
-
- local newPlate = GeneratePlate()
- local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
- local model = CurrentVehicleData.model
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
+ if closestPlayer == -1 or closestDistance > 3.0 then
+ ESX.ShowNotification(_U('no_players'))
+ else
+ TriggerServerEvent('esx_billing:sendBill', GetPlayerServerId(closestPlayer), 'society_cardealer', _U('car_dealer'), tonumber(data2.value))
+ end
+ end
+ end, function (data2, menu2)
+ menu2.close()
+ end)
+ elseif action == 'get_rented_vehicles' then
+ OpenRentedVehiclesMenu()
+ elseif action == 'set_vehicle_owner_sell' then
- TriggerServerEvent('esx_vehicleshop:sellVehicle', model)
+ local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
- if Config.EnableOwnedVehicles then
- TriggerServerEvent('esx_vehicleshop:setVehicleOwnedPlayerId', GetPlayerServerId(closestPlayer), vehicleProps)
- ESX.ShowNotification(_U('vehicle_set_owned', vehicleProps.plate, GetPlayerName(closestPlayer)))
- else
- ESX.ShowNotification(_U('vehicle_sold_to', vehicleProps.plate, GetPlayerName(closestPlayer)))
- end
- end
- elseif action == 'set_vehicle_owner_sell_society' then
- local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+ if closestPlayer == -1 or closestDistance > 3.0 then
+ ESX.ShowNotification(_U('no_players'))
+ else
- if closestPlayer == -1 or closestDistance > 3.0 then
- ESX.ShowNotification(_U('no_players'))
- else
- ESX.TriggerServerCallback('esx:getOtherPlayerData', function (xPlayer)
- local newPlate = GeneratePlate()
- local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
- local model = CurrentVehicleData.model
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
-
- TriggerServerEvent('esx_vehicleshop:sellVehicle', model)
+ local newPlate = GeneratePlate()
+ local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
+ local model = CurrentVehicleData.model
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
- if Config.EnableSocietyOwnedVehicles then
- TriggerServerEvent('esx_vehicleshop:setVehicleOwnedSociety', xPlayer.job.name, vehicleProps)
- ESX.ShowNotification(_U('vehicle_set_owned', vehicleProps.plate, GetPlayerName(closestPlayer)))
- else
- ESX.ShowNotification(_U('vehicle_sold_to', vehicleProps.plate, GetPlayerName(closestPlayer)))
- end
- end, GetPlayerServerId(closestPlayer))
- end
- elseif action == 'set_vehicle_owner_rent' then
- ESX.UI.Menu.Open(
- 'dialog', GetCurrentResourceName(), 'set_vehicle_owner_rent_amount',
- {
- title = _U('rental_amount'),
- },
- function (data2, menu)
- local amount = tonumber(data2.value)
+ TriggerServerEvent('esx_vehicleshop:sellVehicle', model)
- if amount == nil then
- ESX.ShowNotification(_U('invalid_amount'))
- else
- menu.close()
+ if Config.EnableOwnedVehicles then
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwnedPlayerId', GetPlayerServerId(closestPlayer), vehicleProps)
+ ESX.ShowNotification(_U('vehicle_set_owned', vehicleProps.plate, GetPlayerName(closestPlayer)))
+ else
+ ESX.ShowNotification(_U('vehicle_sold_to', vehicleProps.plate, GetPlayerName(closestPlayer)))
+ end
- local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+ end
- if closestPlayer == -1 or closestDistance > 5.0 then
- ESX.ShowNotification(_U('no_players'))
- else
-
- local newPlate = 'RENT' .. string.upper(ESX.GetRandomString(4))
- local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
- local model = CurrentVehicleData.model
- vehicleProps.plate = newPlate
- SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
+ elseif action == 'set_vehicle_owner_sell_society' then
- TriggerServerEvent('esx_vehicleshop:rentVehicle', model, vehicleProps.plate, GetPlayerName(closestPlayer), CurrentVehicleData.price, amount, GetPlayerServerId(closestPlayer))
+ local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
- if Config.EnableOwnedVehicles then
- TriggerServerEvent('esx_vehicleshop:setVehicleOwnedPlayerId', GetPlayerServerId(closestPlayer), vehicleProps)
- end
+ if closestPlayer == -1 or closestDistance > 3.0 then
+ ESX.ShowNotification(_U('no_players'))
+ else
+ ESX.TriggerServerCallback('esx:getOtherPlayerData', function (xPlayer)
- ESX.ShowNotification(_U('vehicle_set_rented', vehicleProps.plate, GetPlayerName(closestPlayer)))
+ local newPlate = GeneratePlate()
+ local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
+ local model = CurrentVehicleData.model
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
- TriggerServerEvent('esx_vehicleshop:setVehicleForAllPlayers', vehicleProps, Config.Zones.ShopInside.Pos.x, Config.Zones.ShopInside.Pos.y, Config.Zones.ShopInside.Pos.z, 5.0)
- end
- end
- end,
- function (data2, menu)
- menu.close()
- end
- )
- end
- end,
- function (data, menu)
- menu.close()
+ TriggerServerEvent('esx_vehicleshop:sellVehicle', model)
- CurrentAction = 'reseller_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
- end
- )
+ if Config.EnableSocietyOwnedVehicles then
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwnedSociety', xPlayer.job.name, vehicleProps)
+ ESX.ShowNotification(_U('vehicle_set_owned', vehicleProps.plate, GetPlayerName(closestPlayer)))
+ else
+ ESX.ShowNotification(_U('vehicle_sold_to', vehicleProps.plate, GetPlayerName(closestPlayer)))
+ end
+
+ end, GetPlayerServerId(closestPlayer))
+ end
+
+ elseif action == 'set_vehicle_owner_rent' then
+
+ ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'set_vehicle_owner_rent_amount', {
+ title = _U('rental_amount')
+ }, function (data2, menu2)
+ local amount = tonumber(data2.value)
+
+ if amount == nil then
+ ESX.ShowNotification(_U('invalid_amount'))
+ else
+ menu2.close()
+
+ local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer()
+
+ if closestPlayer == -1 or closestDistance > 5.0 then
+ ESX.ShowNotification(_U('no_players'))
+ else
+
+ local newPlate = 'RENT' .. string.upper(ESX.GetRandomString(4))
+ local vehicleProps = ESX.Game.GetVehicleProperties(LastVehicles[#LastVehicles])
+ local model = CurrentVehicleData.model
+ vehicleProps.plate = newPlate
+ SetVehicleNumberPlateText(LastVehicles[#LastVehicles], newPlate)
+
+ TriggerServerEvent('esx_vehicleshop:rentVehicle', model, vehicleProps.plate, GetPlayerName(closestPlayer), CurrentVehicleData.price, amount, GetPlayerServerId(closestPlayer))
+
+ if Config.EnableOwnedVehicles then
+ TriggerServerEvent('esx_vehicleshop:setVehicleOwnedPlayerId', GetPlayerServerId(closestPlayer), vehicleProps)
+ end
+
+ ESX.ShowNotification(_U('vehicle_set_rented', vehicleProps.plate, GetPlayerName(closestPlayer)))
+
+ TriggerServerEvent('esx_vehicleshop:setVehicleForAllPlayers', vehicleProps, Config.Zones.ShopInside.Pos.x, Config.Zones.ShopInside.Pos.y, Config.Zones.ShopInside.Pos.z, 5.0)
+ end
+ end
+ end, function (data2, menu2)
+ menu2.close()
+ end)
+ end
+
+ end, function (data, menu)
+ menu.close()
+
+ CurrentAction = 'reseller_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+ end)
end
-function OpenPersonnalVehicleMenu ()
+function OpenPersonnalVehicleMenu()
+ ESX.UI.Menu.CloseAll()
- ESX.UI.Menu.CloseAll()
+ ESX.TriggerServerCallback('esx_vehicleshop:getPersonnalVehicles', function (vehicles)
+ local elements = {}
- ESX.TriggerServerCallback('esx_vehicleshop:getPersonnalVehicles', function (vehicles)
- local elements = {}
+ for i=1, #vehicles, 1 do
+ for j=1, #Vehicles, 1 do
+ if vehicles[i].model == GetHashKey(Vehicles[j].model) then
+ vehicles[i].name = Vehicles[j].name
+ break
+ end
+ end
+ end
- for i=1, #vehicles, 1 do
- for j=1, #Vehicles, 1 do
- if vehicles[i].model == GetHashKey(Vehicles[j].model) then
- vehicles[i].name = Vehicles[j].name
- end
- end
- end
+ for i=1, #vehicles, 1 do
+ table.insert(elements, {
+ label = vehicles[i].name .. ' [' .. vehicles[i].plate .. ']',
+ value = vehicles[i]
+ })
+ end
- for i=1, #vehicles, 1 do
- table.insert(elements, {label = vehicles[i].name .. ' [' .. vehicles[i].plate .. ']', value = vehicles[i]})
- end
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'personnal_vehicle',
+ {
+ title = _U('personal_vehicle'),
+ align = 'top-left',
+ elements = elements,
+ }, function (data, menu)
+ local playerPed = PlayerPedId()
+ local coords = GetEntityCoords(playerPed)
+ local heading = GetEntityHeading(playerPed)
+ local vehicleData = data.current.value
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'personnal_vehicle',
- {
- title = _U('personal_vehicle'),
- align = 'top-left',
- elements = elements,
- },
- function (data, menu)
- local playerPed = PlayerPedId()
- local coords = GetEntityCoords(playerPed)
- local heading = GetEntityHeading(playerPed)
- local vehicleData = data.current.value
+ menu.close()
- menu.close()
-
- ESX.Game.SpawnVehicle(vehicleData.model, {
- x = coords.x,
- y = coords.y,
- z = coords.z
- }, heading, function (vehicle)
- ESX.Game.SetVehicleProperties(vehicle, vehicleData)
- TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
- end)
- end,
- function (data, menu)
- menu.close()
- end
- )
- end)
+ ESX.Game.SpawnVehicle(vehicleData.model, {
+ x = coords.x,
+ y = coords.y,
+ z = coords.z
+ }, heading, function (vehicle)
+ ESX.Game.SetVehicleProperties(vehicle, vehicleData)
+ TaskWarpPedIntoVehicle(playerPed, vehicle, -1)
+ end)
+ end, function (data, menu)
+ menu.close()
+ end)
+ end)
end
-function OpenPopVehicleMenu ()
+function OpenPopVehicleMenu()
ESX.TriggerServerCallback('esx_vehicleshop:getCommercialVehicles', function (vehicles)
local elements = {}
@@ -654,6 +639,90 @@ function OpenPopVehicleMenu ()
end
end
end)
+ end, function (data, menu)
+ menu.close()
+ end)
+ end)
+end
+
+function OpenRentedVehiclesMenu()
+ ESX.TriggerServerCallback('esx_vehicleshop:getRentedVehicles', function (vehicles)
+ local elements = {}
+
+ for i=1, #vehicles, 1 do
+ table.insert(elements, {
+ label = vehicles[i].playerName .. ' : ' .. vehicles[i].name .. ' - ' .. vehicles[i].plate,
+ value = vehicles[i].name
+ })
+ end
+
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'rented_vehicles', {
+ title = _U('rent_vehicle'),
+ align = 'top-left',
+ elements = elements
+ }, nil, function (data, menu)
+ menu.close()
+ end)
+ end)
+end
+
+function OpenBossActionsMenu()
+ ESX.UI.Menu.CloseAll()
+
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'reseller',{
+ title = _U('dealer_boss'),
+ align = 'top-left',
+ elements = {
+ {label = _U('boss_actions'), value = 'boss_actions'}
+ }
+ }, function (data, menu)
+ if data.current.value == 'boss_actions' then
+ TriggerEvent('esx_society:openBossMenu', 'cardealer', function(data, menu)
+ menu.close()
+ end)
+ end
+
+ end, function (data, menu)
+ menu.close()
+
+ CurrentAction = 'boss_actions_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+ end)
+end
+
+
+function OpenGetStocksMenu()
+ ESX.TriggerServerCallback('esx_vehicleshop:getStockItems', function (items)
+ local elements = {}
+
+ for i=1, #items, 1 do
+ table.insert(elements, {label = 'x' .. items[i].count .. ' ' .. items[i].label, value = items[i].name})
+ end
+
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'stocks_menu', {
+ title = _U('dealership_stock'),
+ align = 'top-left',
+ elements = elements
+ }, function (data, menu)
+ local itemName = data.current.value
+
+ ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'stocks_menu_get_item_count', {
+ title = _U('amount')
+ }, function (data2, menu2)
+ local count = tonumber(data2.value)
+
+ if count == nil then
+ ESX.ShowNotification(_U('quantity_invalid'))
+ else
+ TriggerServerEvent('esx_vehicleshop:getStockItem', itemName, count)
+ menu2.close()
+ menu.close()
+ OpenGetStocksMenu()
+ end
+ end, function (data2, menu2)
+ menu2.close()
+ end)
end, function (data, menu)
menu.close()
@@ -661,158 +730,52 @@ function OpenPopVehicleMenu ()
end)
end
-function OpenRentedVehiclesMenu ()
- ESX.TriggerServerCallback('esx_vehicleshop:getRentedVehicles', function (vehicles)
- local elements = {}
+function OpenPutStocksMenu()
+ ESX.TriggerServerCallback('esx_vehicleshop:getPlayerInventory', function (inventory)
+ local elements = {}
- for i=1, #vehicles, 1 do
- table.insert(elements, {label = vehicles[i].playerName .. ' : ' .. vehicles[i].name .. ' - ' .. vehicles[i].plate, value = vehicles[i].name})
- end
+ for i=1, #inventory.items, 1 do
+ local item = inventory.items[i]
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'rented_vehicles',
- {
- title = _U('rent_vehicle'),
- align = 'top-left',
- elements = elements
- },
- nil,
- function (data, menu)
- menu.close()
- end
- )
- end)
-end
+ if item.count > 0 then
+ table.insert(elements, {
+ label = item.label .. ' x' .. item.count,
+ type = 'item_standard',
+ value = item.name
+ })
+ end
+ end
-function OpenBossActionsMenu ()
- ESX.UI.Menu.CloseAll()
+ ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'stocks_menu',
+ {
+ title = _U('inventory'),
+ align = 'top-left',
+ elements = elements
+ }, function (data, menu)
+ local itemName = data.current.value
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'reseller',
- {
- title = _U('dealer_boss'),
- align = 'top-left',
- elements = {
- {label = _U('boss_actions'), value = 'boss_actions'},
- },
- },
- function (data, menu)
- if data.current.value == 'boss_actions' then
- TriggerEvent('esx_society:openBossMenu', 'cardealer', function(data, menu)
- menu.close()
- end)
- end
- end,
- function (data, menu)
- menu.close()
+ ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'stocks_menu_put_item_count', {
+ title = _U('amount')
+ }, function (data2, menu2)
+ local count = tonumber(data2.value)
- CurrentAction = 'boss_actions_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
- end
- )
-end
+ if count == nil then
+ ESX.ShowNotification(_U('quantity_invalid'))
+ else
+ TriggerServerEvent('esx_vehicleshop:putStockItems', itemName, count)
+ menu2.close()
+ menu.close()
+ OpenPutStocksMenu()
+ end
+ end, function (data2, menu2)
+ menu2.close()
+ end)
-function OpenGetStocksMenu ()
- ESX.TriggerServerCallback('esx_vehicleshop:getStockItems', function (items)
- local elements = {}
-
- for i=1, #items, 1 do
- table.insert(elements, {label = 'x' .. items[i].count .. ' ' .. items[i].label, value = items[i].name})
- end
-
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'stocks_menu',
- {
- title = _U('dealership_stock'),
- align = 'top-left',
- elements = elements
- },
- function (data, menu)
- local itemName = data.current.value
-
- ESX.UI.Menu.Open(
- 'dialog', GetCurrentResourceName(), 'stocks_menu_get_item_count',
- {
- title = _U('amount'),
- },
- function (data2, menu2)
- local count = tonumber(data2.value)
-
- if count == nil then
- ESX.ShowNotification(_U('quantity_invalid'))
- else
- TriggerServerEvent('esx_vehicleshop:getStockItem', itemName, count)
- menu2.close()
- menu.close()
- OpenGetStocksMenu()
-
-
- end
- end,
- function (data2, menu2)
- menu2.close()
- end
- )
- end,
- function (data, menu)
- menu.close()
- end
- )
- end)
-end
-
-function OpenPutStocksMenu ()
- ESX.TriggerServerCallback('esx_vehicleshop:getPlayerInventory', function (inventory)
- local elements = {}
-
- for i=1, #inventory.items, 1 do
- local item = inventory.items[i]
-
- if item.count > 0 then
- table.insert(elements, {label = item.label .. ' x' .. item.count, type = 'item_standard', value = item.name})
- end
- end
-
- ESX.UI.Menu.Open(
- 'default', GetCurrentResourceName(), 'stocks_menu',
- {
- title = _U('inventory'),
- align = 'top-left',
- elements = elements
- },
- function (data, menu)
- local itemName = data.current.value
-
- ESX.UI.Menu.Open(
- 'dialog', GetCurrentResourceName(), 'stocks_menu_put_item_count',
- {
- title = _U('amount'),
- },
- function (data2, menu2)
- local count = tonumber(data2.value)
-
- if count == nil then
- ESX.ShowNotification(_U('quantity_invalid'))
- else
- TriggerServerEvent('esx_vehicleshop:putStockItems', itemName, count)
- menu2.close()
- menu.close()
- OpenPutStocksMenu()
- end
-
- end,
- function (data2, menu2)
- menu2.close()
- end
- )
- end,
- function (data, menu)
- menu.close()
- end
- )
- end)
+ end, function (data, menu)
+ menu.close()
+ end)
+ end)
end
RegisterNetEvent('esx:setJob')
@@ -836,70 +799,72 @@ end)
RegisterNetEvent('esx_vehicleshop:openPersonnalVehicleMenu')
AddEventHandler('esx_vehicleshop:openPersonnalVehicleMenu', function ()
- OpenPersonnalVehicleMenu()
+ OpenPersonnalVehicleMenu()
end)
AddEventHandler('esx_vehicleshop:hasEnteredMarker', function (zone)
- if zone == 'ShopEntering' then
- if Config.EnablePlayerManagement then
- if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' then
- CurrentAction = 'reseller_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
- end
- else
- CurrentAction = 'shop_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
- end
- end
+ if zone == 'ShopEntering' then
- if zone == 'GiveBackVehicle' and Config.EnablePlayerManagement then
- local playerPed = PlayerPedId()
+ if Config.EnablePlayerManagement then
+ if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' then
+ CurrentAction = 'reseller_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+ end
+ else
+ CurrentAction = 'shop_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+ end
- if IsPedInAnyVehicle(playerPed, false) then
- local vehicle = GetVehiclePedIsIn(playerPed, false)
+ elseif zone == 'GiveBackVehicle' and Config.EnablePlayerManagement then
- CurrentAction = 'give_back_vehicle'
- CurrentActionMsg = _U('vehicle_menu')
+ local playerPed = PlayerPedId()
- CurrentActionData = {
- vehicle = vehicle
- }
- end
- end
+ if IsPedInAnyVehicle(playerPed, false) then
+ local vehicle = GetVehiclePedIsIn(playerPed, false)
- if zone == 'ResellVehicle' then
- local playerPed = PlayerPedId()
+ CurrentAction = 'give_back_vehicle'
+ CurrentActionMsg = _U('vehicle_menu')
- if IsPedInAnyVehicle(playerPed, false) then
- local vehicle = GetVehiclePedIsIn(playerPed, false)
- local vehicleData = nil
+ CurrentActionData = {
+ vehicle = vehicle
+ }
+ end
- for i=1, #Vehicles, 1 do
- if GetHashKey(Vehicles[i].model) == GetEntityModel(vehicle) then
- vehicleData = Vehicles[i]
- break
- end
- end
+ elseif zone == 'ResellVehicle' then
- local resellPrice = math.floor(vehicleData.price / 100 * Config.ResellPercentage)
+ local playerPed = PlayerPedId()
- CurrentAction = 'resell_vehicle'
- CurrentActionMsg = _U('sell_menu', vehicleData.name, resellPrice)
+ if IsPedInAnyVehicle(playerPed, false) then
+ local vehicle = GetVehiclePedIsIn(playerPed, false)
+ local vehicleData = nil
- CurrentActionData = {
- vehicle = vehicle,
- price = resellPrice
- }
- end
- end
+ for i=1, #Vehicles, 1 do
+ if GetHashKey(Vehicles[i].model) == GetEntityModel(vehicle) then
+ vehicleData = Vehicles[i]
+ break
+ end
+ end
- if zone == 'BossActions' and Config.EnablePlayerManagement and ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' and ESX.PlayerData.job.grade_name == 'boss' then
- CurrentAction = 'boss_actions_menu'
- CurrentActionMsg = _U('shop_menu')
- CurrentActionData = {}
- end
+ local resellPrice = math.floor(vehicleData.price / 100 * Config.ResellPercentage)
+
+ CurrentAction = 'resell_vehicle'
+ CurrentActionMsg = _U('sell_menu', vehicleData.name, resellPrice)
+
+ CurrentActionData = {
+ vehicle = vehicle,
+ price = resellPrice
+ }
+ end
+
+ elseif zone == 'BossActions' and Config.EnablePlayerManagement and ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'cardealer' and ESX.PlayerData.job.grade_name == 'boss' then
+
+ CurrentAction = 'boss_actions_menu'
+ CurrentActionMsg = _U('shop_menu')
+ CurrentActionData = {}
+
+ end
end)
AddEventHandler('esx_vehicleshop:hasExitedMarker', function (zone)
@@ -987,7 +952,7 @@ Citizen.CreateThread(function()
Citizen.Wait(10)
if CurrentAction == nil then
- Citizen.Wait(200)
+ Citizen.Wait(500)
else
ESX.ShowHelpNotification(CurrentActionMsg)
@@ -998,6 +963,7 @@ Citizen.CreateThread(function()
elseif CurrentAction == 'reseller_menu' then
OpenResellerMenu()
elseif CurrentAction == 'give_back_vehicle' then
+
ESX.TriggerServerCallback('esx_vehicleshop:giveBackVehicle', function(isRentedVehicle)
if isRentedVehicle then
ESX.Game.DeleteVehicle(CurrentActionData.vehicle)
@@ -1006,7 +972,9 @@ Citizen.CreateThread(function()
ESX.ShowNotification(_U('not_rental'))
end
end, GetVehicleNumberPlateText(CurrentActionData.vehicle))
+
elseif CurrentAction == 'resell_vehicle' then
+
ESX.TriggerServerCallback('esx_vehicleshop:resellVehicle', function(isOwnedVehicle)
if isOwnedVehicle then
ESX.Game.DeleteVehicle(CurrentActionData.vehicle)
@@ -1015,6 +983,7 @@ Citizen.CreateThread(function()
ESX.ShowNotification(_U('not_yours'))
end
end, GetVehicleNumberPlateText(CurrentActionData.vehicle), CurrentActionData.price)
+
elseif CurrentAction == 'boss_actions_menu' then
OpenBossActionsMenu()
end
diff --git a/config.lua b/config.lua
index 6d0f81a5..cacff508 100644
--- a/config.lua
+++ b/config.lua
@@ -16,42 +16,42 @@ Config.PlateUseSpace = true
Config.Zones = {
- ShopEntering = {
- Pos = { x = -33.777, y = -1102.021, z = 25.422 },
- Size = { x = 1.5, y = 1.5, z = 1.0 },
- Type = 1,
- },
+ ShopEntering = {
+ Pos = { x = -33.777, y = -1102.021, z = 25.422 },
+ Size = { x = 1.5, y = 1.5, z = 1.0 },
+ Type = 1,
+ },
- ShopInside = {
- Pos = { x = -47.570, y = -1097.221, z = 25.422 },
- Size = { x = 1.5, y = 1.5, z = 1.0 },
- Heading = -20.0,
- Type = -1,
- },
+ ShopInside = {
+ Pos = { x = -47.570, y = -1097.221, z = 25.422 },
+ Size = { x = 1.5, y = 1.5, z = 1.0 },
+ Heading = -20.0,
+ Type = -1,
+ },
- ShopOutside = {
- Pos = { x = -28.637, y = -1085.691, z = 25.565 },
- Size = { x = 1.5, y = 1.5, z = 1.0 },
- Heading = 330.0,
- Type = -1,
- },
+ ShopOutside = {
+ Pos = { x = -28.637, y = -1085.691, z = 25.565 },
+ Size = { x = 1.5, y = 1.5, z = 1.0 },
+ Heading = 330.0,
+ Type = -1,
+ },
- BossActions = {
- Pos = { x = -32.065, y = -1114.277, z = 25.422 },
- Size = { x = 1.5, y = 1.5, z = 1.0 },
- Type = -1,
- },
+ BossActions = {
+ Pos = { x = -32.065, y = -1114.277, z = 25.422 },
+ Size = { x = 1.5, y = 1.5, z = 1.0 },
+ Type = -1,
+ },
- GiveBackVehicle = {
- Pos = { x = -18.227, y = -1078.558, z = 25.675 },
- Size = { x = 3.0, y = 3.0, z = 1.0 },
- Type = (Config.EnablePlayerManagement and 1 or -1),
- },
+ GiveBackVehicle = {
+ Pos = { x = -18.227, y = -1078.558, z = 25.675 },
+ Size = { x = 3.0, y = 3.0, z = 1.0 },
+ Type = (Config.EnablePlayerManagement and 1 or -1),
+ },
- ResellVehicle = {
- Pos = { x = -44.630, y = -1080.738, z = 25.683 },
- Size = { x = 3.0, y = 3.0, z = 1.0 },
- Type = 1,
- },
+ ResellVehicle = {
+ Pos = { x = -44.630, y = -1080.738, z = 25.683 },
+ Size = { x = 3.0, y = 3.0, z = 1.0 },
+ Type = 1,
+ }
}
diff --git a/server/main.lua b/server/main.lua
index 56160649..758d5798 100644
--- a/server/main.lua
+++ b/server/main.lua
@@ -211,12 +211,11 @@ ESX.RegisterServerCallback('esx_vehicleshop:buyVehicleSociety', function (source
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_' .. society, function (account)
if account.money >= vehicleData.price then
-
account.removeMoney(vehicleData.price)
MySQL.Async.execute('INSERT INTO cardealer_vehicles (vehicle, price) VALUES (@vehicle, @price)',
{
['@vehicle'] = vehicleData.model,
- ['@price'] = vehicleData.price,
+ ['@price'] = vehicleData.price
})
cb(true)
@@ -317,7 +316,7 @@ ESX.RegisterServerCallback('esx_vehicleshop:giveBackVehicle', function (source,
['@price'] = basePrice
})
- MySQL.Async.execute('DELETE FROM rented_vehicles WHERE plate = @plate',{
+ MySQL.Async.execute('DELETE FROM rented_vehicles WHERE plate = @plate', {
['@plate'] = plate
})
@@ -329,7 +328,7 @@ ESX.RegisterServerCallback('esx_vehicleshop:giveBackVehicle', function (source,
end)
end)
-ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function (source, cb, plate, price)
+ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function (source, cb, plate, price) -- todo: remove price
MySQL.Async.fetchAll('SELECT * FROM rented_vehicles WHERE plate = @plate', {
['@plate'] = plate
}, function (result)
@@ -346,10 +345,14 @@ ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function (source, cb
-- does the owner match?
if result[1] ~= nil then
+
+ -- todo: does model match?
xPlayer.addMoney(price)
RemoveOwnedVehicle(plate)
cb(true)
+
else
+
if xPlayer.job.grade_name == 'boss' then
MySQL.Async.fetchAll('SELECT * FROM owned_vehicles WHERE owner = @owner AND @plate = plate',
{
@@ -368,6 +371,7 @@ ESX.RegisterServerCallback('esx_vehicleshop:resellVehicle', function (source, cb
cb(false)
end
end
+
end)
end
end)