forked from Simnation/Main
lc_fuel update
This commit is contained in:
parent
e9335eaf78
commit
cae0aa5e6a
28 changed files with 6064 additions and 5968 deletions
|
@ -15,7 +15,7 @@ isRecording = true
|
||||||
-- Local variables
|
-- Local variables
|
||||||
local fuelDecor = "_FUEL_LEVEL"
|
local fuelDecor = "_FUEL_LEVEL"
|
||||||
local currentConsumption = 0.0
|
local currentConsumption = 0.0
|
||||||
local fuelSynced = true
|
local fuelSynced = false
|
||||||
local closestVehicleToPump = 0
|
local closestVehicleToPump = 0
|
||||||
local isNuiVariablesLoaded = false
|
local isNuiVariablesLoaded = false
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ function createDebugNozzleOffsetThread()
|
||||||
local vehCoords = GetEntityCoords(vehicle)
|
local vehCoords = GetEntityCoords(vehicle)
|
||||||
|
|
||||||
-- Get vehicle's axis vectors
|
-- Get vehicle's axis vectors
|
||||||
local forwardVector, rightVector, upVector = GetEntityMatrix(vehicle)
|
local _, rightVector, _ = GetEntityMatrix(vehicle)
|
||||||
|
|
||||||
-- Direction from vehicle to hit point
|
-- Direction from vehicle to hit point
|
||||||
local directionToHit = hitCoords - vehCoords
|
local directionToHit = hitCoords - vehCoords
|
||||||
|
@ -155,21 +155,8 @@ function createDebugNozzleOffsetThread()
|
||||||
offset.right = offset.right - 0.07
|
offset.right = offset.right - 0.07
|
||||||
end
|
end
|
||||||
|
|
||||||
local boneWorldPos = GetVehicleCapPos(vehicle)
|
|
||||||
|
|
||||||
-- local forwardVector, rightVector, upVector, _ = GetEntityMatrix(vehicle)
|
|
||||||
|
|
||||||
-- Scale vectors by the local offset
|
|
||||||
local forwardOffset = forwardVector * offset.forward
|
|
||||||
local rightOffset = rightVector * offset.right
|
|
||||||
local upOffset = upVector * offset.up
|
|
||||||
|
|
||||||
-- Final world position of the nozzle point
|
-- Final world position of the nozzle point
|
||||||
local finalWorldPos = vector3(
|
local finalWorldPos = getWorldPosFromOffset(vehicle, offset)
|
||||||
boneWorldPos.x + forwardOffset.x + rightOffset.x + upOffset.x,
|
|
||||||
boneWorldPos.y + forwardOffset.y + rightOffset.y + upOffset.y,
|
|
||||||
boneWorldPos.z + forwardOffset.z + rightOffset.z + upOffset.z
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Draw a small marker at the computed position
|
-- Draw a small marker at the computed position
|
||||||
DrawMarker(28, finalWorldPos.x, finalWorldPos.y, finalWorldPos.z + 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.03, 255, 0, 0, 180, false, true, 2, nil, nil, false)
|
DrawMarker(28, finalWorldPos.x, finalWorldPos.y, finalWorldPos.z + 0.05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03, 0.03, 0.03, 255, 0, 0, 180, false, true, 2, nil, nil, false)
|
||||||
|
@ -375,6 +362,23 @@ AddEventHandler('__cfx_export_LegacyFuel_GetFuel', function(setCB)
|
||||||
setCB(GetFuel)
|
setCB(GetFuel)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
function SetFuelType(vehicle, fuelType)
|
||||||
|
if not DoesEntityExist(vehicle) then
|
||||||
|
warn(("[SetFuelType] Vehicle entity does not exist. Received: %s. This is usually caused by a misconfiguration in the export."):format(tostring(vehicle)))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not fuelType or fuelType == "nil" or fuelType == "" then
|
||||||
|
fuelType = dealWithDefaultFuelType(vehicle, "default")
|
||||||
|
end
|
||||||
|
TriggerServerEvent("lc_fuel:setVehicleFuelType", GetVehicleNumberPlateText(vehicle), fuelType)
|
||||||
|
end
|
||||||
|
exports('SetFuelType', SetFuelType)
|
||||||
|
|
||||||
|
function setFuelType(vehicle, fuelType)
|
||||||
|
return SetFuelType(vehicle, fuelType)
|
||||||
|
end
|
||||||
|
exports('setFuelType', setFuelType)
|
||||||
|
|
||||||
-----------------------------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- Utils
|
-- Utils
|
||||||
-----------------------------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -397,6 +401,8 @@ function dealWithDefaultFuelType(vehicle, fuelType)
|
||||||
if fuelType == "default" then
|
if fuelType == "default" then
|
||||||
if IsVehicleDiesel(vehicle) then
|
if IsVehicleDiesel(vehicle) then
|
||||||
fuelType = "diesel"
|
fuelType = "diesel"
|
||||||
|
elseif IsVehicleElectric(vehicle) then
|
||||||
|
fuelType = "electric"
|
||||||
else
|
else
|
||||||
fuelType = "regular"
|
fuelType = "regular"
|
||||||
end
|
end
|
||||||
|
|
10
resources/[carscripts]/lc_fuel/client/client_fuel_type.lua
Normal file
10
resources/[carscripts]/lc_fuel/client/client_fuel_type.lua
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
RegisterCommand(Config.FuelTypeCommand, function()
|
||||||
|
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
|
||||||
|
if not DoesEntityExist(vehicle) then
|
||||||
|
exports['lc_utils']:notify("error", Utils.translate("vehicle_not_found"))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local fuelType = getVehicleFuelTypeFromServer(vehicle)
|
||||||
|
exports['lc_utils']:notify("info", Utils.translate("fuel_types.type_title"):format(Utils.translate("fuel_types."..fuelType)))
|
||||||
|
end, false)
|
|
@ -256,10 +256,10 @@ function refuelLoop(isFromJerryCan)
|
||||||
while DoesEntityExist(fuelNozzle) or (isFromJerryCan and GetSelectedPedWeapon(ped) == JERRY_CAN_HASH) do
|
while DoesEntityExist(fuelNozzle) or (isFromJerryCan and GetSelectedPedWeapon(ped) == JERRY_CAN_HASH) do
|
||||||
local waitTime = 200
|
local waitTime = 200
|
||||||
if closestCapPos then
|
if closestCapPos then
|
||||||
distanceToCap = #(GetEntityCoords(ped) - vector3(closestCapPos.x,closestCapPos.y,closestCapPos.z + customVehicleParameters.nozzleOffset.up + 0.0))
|
distanceToCap = #(GetEntityCoords(ped) - vector3(closestCapPos.x,closestCapPos.y,closestCapPos.z))
|
||||||
if distanceToCap < customVehicleParameters.distance + 0.0 and (not vehicleAttachedToNozzle or (vehicleAttachedToNozzle and DoesEntityExist(vehicleAttachedToNozzle) and vehicleAttachedToNozzle == closestVehicle)) then
|
if distanceToCap < customVehicleParameters.distance + 0.0 and (not vehicleAttachedToNozzle or (vehicleAttachedToNozzle and DoesEntityExist(vehicleAttachedToNozzle) and vehicleAttachedToNozzle == closestVehicle)) then
|
||||||
waitTime = 1
|
waitTime = 1
|
||||||
Utils.Markers.drawText3D(closestCapPos.x,closestCapPos.y,closestCapPos.z + customVehicleParameters.nozzleOffset.up + 0.0, cachedTranslations.interact_with_vehicle)
|
Utils.Markers.drawText3D(closestCapPos.x,closestCapPos.y,closestCapPos.z, cachedTranslations.interact_with_vehicle)
|
||||||
if IsControlJustPressed(0, 38) and not inCooldown then
|
if IsControlJustPressed(0, 38) and not inCooldown then
|
||||||
-- See which one the player is nearer. The fuel cap or fuel pump
|
-- See which one the player is nearer. The fuel cap or fuel pump
|
||||||
if distanceToPump >= distanceToCap then
|
if distanceToPump >= distanceToCap then
|
||||||
|
@ -363,7 +363,27 @@ function getClosestVehicleVariables()
|
||||||
if not closestCapPos then
|
if not closestCapPos then
|
||||||
print("Cap not found for vehicle")
|
print("Cap not found for vehicle")
|
||||||
end
|
end
|
||||||
return closestVehicle, closestCapPos, closestVehicleHash, customVehicleParameters
|
|
||||||
|
local finalWorldPos = getWorldPosFromOffset(closestVehicle, customVehicleParameters.nozzleOffset)
|
||||||
|
|
||||||
|
return closestVehicle, finalWorldPos, closestVehicleHash, customVehicleParameters
|
||||||
|
end
|
||||||
|
|
||||||
|
function getWorldPosFromOffset(vehicle, offset)
|
||||||
|
local closestCapPos = GetVehicleCapPos(vehicle)
|
||||||
|
local forwardVector, rightVector, upVector, _ = GetEntityMatrix(vehicle)
|
||||||
|
|
||||||
|
-- Adjust the offsets
|
||||||
|
local forwardOffset = forwardVector * offset.forward
|
||||||
|
local rightoffset = rightVector * offset.right
|
||||||
|
local upOffset = upVector * offset.up
|
||||||
|
|
||||||
|
-- Final world position of the nozzle point
|
||||||
|
return vector3(
|
||||||
|
closestCapPos.x + forwardOffset.x + rightoffset.x + upOffset.x,
|
||||||
|
closestCapPos.y + forwardOffset.y + rightoffset.y + upOffset.y,
|
||||||
|
closestCapPos.z + forwardOffset.z + rightoffset.z + upOffset.z
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function terminateRefuelThread()
|
function terminateRefuelThread()
|
||||||
|
|
|
@ -17,6 +17,7 @@ client_scripts {
|
||||||
"client/client_electric.lua",
|
"client/client_electric.lua",
|
||||||
"client/client_refuel.lua",
|
"client/client_refuel.lua",
|
||||||
"client/client_fuel_chart.lua",
|
"client/client_fuel_chart.lua",
|
||||||
|
"client/client_fuel_type.lua",
|
||||||
}
|
}
|
||||||
|
|
||||||
server_scripts {
|
server_scripts {
|
||||||
|
|
|
@ -37,5 +37,13 @@ Lang['de'] = {
|
||||||
['balance_electric'] = "Elektrische Ladung verkauft (%s kWh)",
|
['balance_electric'] = "Elektrische Ladung verkauft (%s kWh)",
|
||||||
['refund_fuel'] = "Kraftstoff erstattet (%s Liter)",
|
['refund_fuel'] = "Kraftstoff erstattet (%s Liter)",
|
||||||
['refund_electric'] = "Stromladung erstattet (%s kWh)",
|
['refund_electric'] = "Stromladung erstattet (%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "Kraftstoffart: %s",
|
||||||
|
['electric'] = "Elektrisch",
|
||||||
|
['regular'] = "Regulär",
|
||||||
|
['plus'] = "Plus",
|
||||||
|
['premium'] = "Premium",
|
||||||
|
['diesel'] = "Diesel",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,5 +37,13 @@ Lang['en'] = {
|
||||||
['balance_electric'] = "Electric charge sold (%s kWh)",
|
['balance_electric'] = "Electric charge sold (%s kWh)",
|
||||||
['refund_fuel'] = "Fuel refunded (%s Liters)",
|
['refund_fuel'] = "Fuel refunded (%s Liters)",
|
||||||
['refund_electric'] = "Electric charge refunded (%s kWh)",
|
['refund_electric'] = "Electric charge refunded (%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "Fuel Type: %s",
|
||||||
|
['electric'] = "Electric",
|
||||||
|
['regular'] = "Regular",
|
||||||
|
['plus'] = "Plus",
|
||||||
|
['premium'] = "Premium",
|
||||||
|
['diesel'] = "Diesel",
|
||||||
|
},
|
||||||
}
|
}
|
|
@ -37,5 +37,13 @@ Lang['es'] = {
|
||||||
['balance_electric'] = "Carga eléctrica vendida (%s kWh)",
|
['balance_electric'] = "Carga eléctrica vendida (%s kWh)",
|
||||||
['refund_fuel'] = "Combustible reembolsado (%s litros)",
|
['refund_fuel'] = "Combustible reembolsado (%s litros)",
|
||||||
['refund_electric'] = "Carga eléctrica reembolsada (%s kWh)",
|
['refund_electric'] = "Carga eléctrica reembolsada (%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "Tipo de combustible: %s",
|
||||||
|
['electric'] = "Eléctrico",
|
||||||
|
['regular'] = "Sin plomo",
|
||||||
|
['plus'] = "Plus",
|
||||||
|
['premium'] = "Premium",
|
||||||
|
['diesel'] = "Diésel",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,5 +37,13 @@ Lang['fr'] = {
|
||||||
['balance_electric'] = "Charge électrique vendue (%s kWh)",
|
['balance_electric'] = "Charge électrique vendue (%s kWh)",
|
||||||
['refund_fuel'] = "Carburant remboursé (%s litres)",
|
['refund_fuel'] = "Carburant remboursé (%s litres)",
|
||||||
['refund_electric'] = "Recharge électrique remboursée (%s kWh)",
|
['refund_electric'] = "Recharge électrique remboursée (%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "Type de carburant : %s",
|
||||||
|
['electric'] = "Électrique",
|
||||||
|
['regular'] = "Ordinaire",
|
||||||
|
['plus'] = "Plus",
|
||||||
|
['premium'] = "Premium",
|
||||||
|
['diesel'] = "Diesel",
|
||||||
|
},
|
||||||
}
|
}
|
|
@ -37,5 +37,13 @@ Lang['ja'] = {
|
||||||
['balance_electric'] = "電気充電販売 (%s kWh)",
|
['balance_electric'] = "電気充電販売 (%s kWh)",
|
||||||
['refund_fuel'] = "燃料が返金されました(%sリットル)",
|
['refund_fuel'] = "燃料が返金されました(%sリットル)",
|
||||||
['refund_electric'] = "電気充電が返金されました(%s kWh)",
|
['refund_electric'] = "電気充電が返金されました(%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "燃料の種類: %s",
|
||||||
|
['electric'] = "電気",
|
||||||
|
['regular'] = "レギュラー",
|
||||||
|
['plus'] = "プラス",
|
||||||
|
['premium'] = "プレミアム",
|
||||||
|
['diesel'] = "ディーゼル",
|
||||||
|
},
|
||||||
}
|
}
|
|
@ -37,5 +37,13 @@ Lang['tr'] = {
|
||||||
['balance_electric'] = "Elektrik şarjı satıldı (%s kWh)",
|
['balance_electric'] = "Elektrik şarjı satıldı (%s kWh)",
|
||||||
['refund_fuel'] = "Yakıt iade edildi (%s litre)",
|
['refund_fuel'] = "Yakıt iade edildi (%s litre)",
|
||||||
['refund_electric'] = "Elektrik şarjı iade edildi (%s kWh)",
|
['refund_electric'] = "Elektrik şarjı iade edildi (%s kWh)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "Yakıt Türü: %s",
|
||||||
|
['electric'] = "Elektrikli",
|
||||||
|
['regular'] = "Normal",
|
||||||
|
['plus'] = "Plus",
|
||||||
|
['premium'] = "Premium",
|
||||||
|
['diesel'] = "Dizel",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,5 +37,13 @@ Lang['zh-cn'] = {
|
||||||
['balance_electric'] = "电能销售收入 (%s 千瓦时)",
|
['balance_electric'] = "电能销售收入 (%s 千瓦时)",
|
||||||
['refund_fuel'] = "燃料已退款(%s 升)",
|
['refund_fuel'] = "燃料已退款(%s 升)",
|
||||||
['refund_electric'] = "电力已退款(%s 千瓦时)",
|
['refund_electric'] = "电力已退款(%s 千瓦时)",
|
||||||
}
|
},
|
||||||
|
['fuel_types'] = {
|
||||||
|
['type_title'] = "燃料类型:%s",
|
||||||
|
['electric'] = "电动",
|
||||||
|
['regular'] = "92号燃油",
|
||||||
|
['plus'] = "95号燃油",
|
||||||
|
['premium'] = "98号燃油",
|
||||||
|
['diesel'] = "柴油",
|
||||||
|
},
|
||||||
}
|
}
|
|
@ -469,17 +469,20 @@ end
|
||||||
|
|
||||||
function setVehicleFuelType(plate, fuelType)
|
function setVehicleFuelType(plate, fuelType)
|
||||||
if not isFuelTypeValid(fuelType) then
|
if not isFuelTypeValid(fuelType) then
|
||||||
fuelType = "regular"
|
|
||||||
print("Invalid fuel type ("..fuelType..") set to vehicle ("..plate..")")
|
print("Invalid fuel type ("..fuelType..") set to vehicle ("..plate..")")
|
||||||
|
fuelType = "regular"
|
||||||
end
|
end
|
||||||
|
|
||||||
playerVehiclesFuelType[plate] = fuelType
|
playerVehiclesFuelType[plate] = fuelType
|
||||||
local sql = [[
|
-- Only store in database if the vehicle is in player vehicles table
|
||||||
INSERT INTO `player_vehicles_fuel_type` (plate, fuelType)
|
if Config.SaveAllVehicleFuelTypes == true or (Utils.Framework.getVehicleOwner(Utils.Math.trim(plate)) ~= false or Utils.Framework.getVehicleOwner(plate) ~= false) then
|
||||||
VALUES (@plate, @fuelType)
|
local sql = [[
|
||||||
ON DUPLICATE KEY UPDATE fuelType = @fuelType
|
INSERT INTO `player_vehicles_fuel_type` (plate, fuelType)
|
||||||
]];
|
VALUES (@plate, @fuelType)
|
||||||
Utils.Database.execute(sql, {['@plate'] = plate, ['@fuelType'] = fuelType})
|
ON DUPLICATE KEY UPDATE fuelType = @fuelType
|
||||||
|
]];
|
||||||
|
Utils.Database.execute(sql, {['@plate'] = plate, ['@fuelType'] = fuelType})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function cacheplayerVehiclesFuelTypeType()
|
function cacheplayerVehiclesFuelTypeType()
|
||||||
|
@ -488,7 +491,7 @@ function cacheplayerVehiclesFuelTypeType()
|
||||||
for _, value in pairs(queryData) do
|
for _, value in pairs(queryData) do
|
||||||
playerVehiclesFuelType[value.plate] = value.fuelType
|
playerVehiclesFuelType[value.plate] = value.fuelType
|
||||||
end
|
end
|
||||||
print("^2[lc_fuel] Fuel types successfully fetched from database^7")
|
print("^2[lc_fuel] #"..#queryData.." Fuel types successfully fetched from database^7")
|
||||||
end
|
end
|
||||||
|
|
||||||
function Wrapper(source,cb)
|
function Wrapper(source,cb)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
1.2.2
|
1.2.3
|
Loading…
Add table
Add a link
Reference in a new issue