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 fuelDecor = "_FUEL_LEVEL"
|
||||
local currentConsumption = 0.0
|
||||
local fuelSynced = true
|
||||
local fuelSynced = false
|
||||
local closestVehicleToPump = 0
|
||||
local isNuiVariablesLoaded = false
|
||||
|
||||
|
@ -137,7 +137,7 @@ function createDebugNozzleOffsetThread()
|
|||
local vehCoords = GetEntityCoords(vehicle)
|
||||
|
||||
-- Get vehicle's axis vectors
|
||||
local forwardVector, rightVector, upVector = GetEntityMatrix(vehicle)
|
||||
local _, rightVector, _ = GetEntityMatrix(vehicle)
|
||||
|
||||
-- Direction from vehicle to hit point
|
||||
local directionToHit = hitCoords - vehCoords
|
||||
|
@ -155,21 +155,8 @@ function createDebugNozzleOffsetThread()
|
|||
offset.right = offset.right - 0.07
|
||||
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
|
||||
local finalWorldPos = vector3(
|
||||
boneWorldPos.x + forwardOffset.x + rightOffset.x + upOffset.x,
|
||||
boneWorldPos.y + forwardOffset.y + rightOffset.y + upOffset.y,
|
||||
boneWorldPos.z + forwardOffset.z + rightOffset.z + upOffset.z
|
||||
)
|
||||
local finalWorldPos = getWorldPosFromOffset(vehicle, offset)
|
||||
|
||||
-- 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)
|
||||
|
@ -375,6 +362,23 @@ AddEventHandler('__cfx_export_LegacyFuel_GetFuel', function(setCB)
|
|||
setCB(GetFuel)
|
||||
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
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -397,6 +401,8 @@ function dealWithDefaultFuelType(vehicle, fuelType)
|
|||
if fuelType == "default" then
|
||||
if IsVehicleDiesel(vehicle) then
|
||||
fuelType = "diesel"
|
||||
elseif IsVehicleElectric(vehicle) then
|
||||
fuelType = "electric"
|
||||
else
|
||||
fuelType = "regular"
|
||||
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
|
||||
local waitTime = 200
|
||||
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
|
||||
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
|
||||
-- See which one the player is nearer. The fuel cap or fuel pump
|
||||
if distanceToPump >= distanceToCap then
|
||||
|
@ -363,7 +363,27 @@ function getClosestVehicleVariables()
|
|||
if not closestCapPos then
|
||||
print("Cap not found for vehicle")
|
||||
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
|
||||
|
||||
function terminateRefuelThread()
|
||||
|
|
|
@ -17,6 +17,7 @@ client_scripts {
|
|||
"client/client_electric.lua",
|
||||
"client/client_refuel.lua",
|
||||
"client/client_fuel_chart.lua",
|
||||
"client/client_fuel_type.lua",
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
|
|
|
@ -37,5 +37,13 @@ Lang['de'] = {
|
|||
['balance_electric'] = "Elektrische Ladung verkauft (%s kWh)",
|
||||
['refund_fuel'] = "Kraftstoff erstattet (%s Liter)",
|
||||
['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)",
|
||||
['refund_fuel'] = "Fuel refunded (%s Liters)",
|
||||
['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)",
|
||||
['refund_fuel'] = "Combustible reembolsado (%s litros)",
|
||||
['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)",
|
||||
['refund_fuel'] = "Carburant remboursé (%s litres)",
|
||||
['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)",
|
||||
['refund_fuel'] = "燃料が返金されました(%sリットル)",
|
||||
['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)",
|
||||
['refund_fuel'] = "Yakıt iade edildi (%s litre)",
|
||||
['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 千瓦时)",
|
||||
['refund_fuel'] = "燃料已退款(%s 升)",
|
||||
['refund_electric'] = "电力已退款(%s 千瓦时)",
|
||||
}
|
||||
},
|
||||
['fuel_types'] = {
|
||||
['type_title'] = "燃料类型:%s",
|
||||
['electric'] = "电动",
|
||||
['regular'] = "92号燃油",
|
||||
['plus'] = "95号燃油",
|
||||
['premium'] = "98号燃油",
|
||||
['diesel'] = "柴油",
|
||||
},
|
||||
}
|
|
@ -469,11 +469,13 @@ end
|
|||
|
||||
function setVehicleFuelType(plate, fuelType)
|
||||
if not isFuelTypeValid(fuelType) then
|
||||
fuelType = "regular"
|
||||
print("Invalid fuel type ("..fuelType..") set to vehicle ("..plate..")")
|
||||
fuelType = "regular"
|
||||
end
|
||||
|
||||
playerVehiclesFuelType[plate] = fuelType
|
||||
-- Only store in database if the vehicle is in player vehicles table
|
||||
if Config.SaveAllVehicleFuelTypes == true or (Utils.Framework.getVehicleOwner(Utils.Math.trim(plate)) ~= false or Utils.Framework.getVehicleOwner(plate) ~= false) then
|
||||
local sql = [[
|
||||
INSERT INTO `player_vehicles_fuel_type` (plate, fuelType)
|
||||
VALUES (@plate, @fuelType)
|
||||
|
@ -481,6 +483,7 @@ function setVehicleFuelType(plate, fuelType)
|
|||
]];
|
||||
Utils.Database.execute(sql, {['@plate'] = plate, ['@fuelType'] = fuelType})
|
||||
end
|
||||
end
|
||||
|
||||
function cacheplayerVehiclesFuelTypeType()
|
||||
local sql = "SELECT * FROM player_vehicles_fuel_type";
|
||||
|
@ -488,7 +491,7 @@ function cacheplayerVehiclesFuelTypeType()
|
|||
for _, value in pairs(queryData) do
|
||||
playerVehiclesFuelType[value.plate] = value.fuelType
|
||||
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
|
||||
|
||||
function Wrapper(source,cb)
|
||||
|
|
|
@ -1 +1 @@
|
|||
1.2.2
|
||||
1.2.3
|
Loading…
Add table
Add a link
Reference in a new issue