lb-phone
lb-phone integration tutorial.
Navigate to
lb-phone/server/custom/frameworks/esx/vehicles.lua
Replace function
GetPlayerVehicles
with this:function GetPlayerVehicles(source) local toSend = {} local vehicles = MySQL.query.await("SELECT * FROM owned_vehicles WHERE owner = ? ", { GetIdentifier(source) }) for i = 1, #vehicles do local vehicle = vehicles[i] or {} if vehicle.stored == nil then vehicle.stored = vehicle.state end local impounded = false if type(vehicle.stored) ~= "boolean" then impounded = vehicle.stored == 2 vehicle.stored = vehicle.stored == 1 end if GetResourceState("cd_garage") == "started" then debugprint("Using cd_garage") impounded = vehicle.in_garage == 2 vehicle.stored = vehicle.in_garage or vehicle.in_garage == 1 vehicle.garage = vehicle.garage_id vehicle.type = vehicle.garage_type elseif GetResourceState("loaf_garage") == "started" then vehicle.stored = 1 elseif GetResourceState("jg-advancedgarages") == "started" then debugprint("Using jg-advancedgarages") vehicle.stored = vehicle.in_garage vehicle.garage = vehicle.garage_id impounded = vehicle.impound == 1 if impounded and vehicle.impound_data then vehicle.stored = false vehicle.pound = "Impound" local impoundInfo = json.decode(vehicle.impound_data) vehicle.impoundReason = impoundInfo and { reason = impoundInfo.reason and #impoundInfo.reason > 0 and impoundInfo.reason or nil, retrievable = ConvertJSTimestamp and ConvertJSTimestamp(impoundInfo.retrieval_date) or nil, price = impoundInfo.retrieval_cost, impounder = impoundInfo.charname } end elseif GetResourceState("op-garages") == "started" then debugprint("Using op-garages") vehicle.stored = not vehicle.stored local garage = GlobalState.garages[tostring(vehicle.vehicleGarage)] vehicle.garage = garage and garage.Label or "Garage" if vehicle.isTowedOut then local impound = GlobalState.impounds[tostring(vehicle.vehicleImpound)] vehicle.stored = false vehicle.pound = impound and impound.Label or "Impound" vehicle.impoundReason = { reason = vehicle.impoundReason, retrievable = vehicle.retrievable, price = vehicle.towedPrice, impounder = vehicle.towedOutBy } end end if GetResourceState("qs-advancedgarages") == "started" then vehicle.stored = vehicle.garage ~= "OUT" end local location = vehicle.stored and (vehicle.garage or "Garage") or "out" if impounded and vehicle.pound then location = vehicle.pound end ---@type VehicleData local newCar = { plate = vehicle.plate, type = vehicle.type, location = location, impounded = impounded, statistics = {}, impoundReason = vehicle.impoundReason } if vehicle.damages then local damages = json.decode(vehicle.damages) if damages?.engineHealth then newCar.statistics.engine = math.floor(damages.engineHealth / 10 + 0.5) end if damages?.bodyHealth then newCar.statistics.body = math.floor(damages.bodyHealth / 10 + 0.5) end end local vehicleMods = json.decode(vehicle.vehicle) if vehicleMods.fuel then newCar.statistics.fuel = math.floor(vehicleMods.fuel + 0.5) end newCar.model = vehicleMods.model toSend[#toSend+1] = newCar end return toSend end
Replace function
GetVehicle
with this:function GetVehicle(source, plate) local storedCheck = "`%s` = ?" local storedColumn = "stored" ---@type any local storedValue = 1 ---@type any local outValue = 0 if GetResourceState("cd_garage") == "started" or GetResourceState("jg-advancedgarages") == "started" then storedColumn = "in_garage" elseif GetResourceState("qs-advancedgarages") == "started" then storedCheck = "`%s` != ?" storedColumn = "garage" storedValue = "OUT" outValue = "OUT" elseif GetResourceState("op-garages") == "started" then storedValue = 0 outValue = 1 end storedCheck = storedCheck:format(storedColumn) local vehicle = MySQL.single.await( "SELECT * FROM owned_vehicles WHERE owner = ? AND plate = ? AND " .. storedCheck, { GetIdentifier(source), plate, storedValue } ) if not vehicle then return end MySQL.update( "UPDATE owned_vehicles SET `" .. storedColumn .. "` = ? WHERE plate = ?", { outValue, plate } ) vehicle.model = json.decode(vehicle.vehicle).model return vehicle end
Last updated