From 45e6ce5f7daebbc8d51ca16a6d58ed2a11f8a953 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sun, 11 Nov 2018 12:50:48 +0100 Subject: [PATCH] 4 tab indent update --- client/main.lua | 1245 +++++++++++++++++++++++------------------------ config.lua | 64 +-- server/main.lua | 12 +- 3 files changed, 647 insertions(+), 674 deletions(-) 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)