fix(markarbejde): forkert vare hældes kun ud som lille rest (≤10 %, ≤2000 l); fuld sprøjte/spreder bruges ikke til en anden opgave (100.000 l gødning blev hældt ud) (v1.32.4.0)
This commit is contained in:
@@ -93,7 +93,9 @@ end
|
||||
local function sprayerNames(object)
|
||||
local unitIndex = object:getSprayerFillUnitIndex()
|
||||
local filledName = nil
|
||||
if (object:getFillUnitFillLevel(unitIndex) or 0) > 0 then
|
||||
local level = object:getFillUnitFillLevel(unitIndex) or 0
|
||||
local capacity = object.getFillUnitCapacity ~= nil and (object:getFillUnitCapacity(unitIndex) or 0) or 0
|
||||
if level > 0 then
|
||||
filledName = g_fillTypeManager:getFillTypeNameByIndex(object:getFillUnitFillType(unitIndex))
|
||||
end
|
||||
local supported = {}
|
||||
@@ -104,17 +106,29 @@ local function sprayerNames(object)
|
||||
if name ~= nil then supported[name] = true end
|
||||
end
|
||||
end
|
||||
return filledName, supported
|
||||
return filledName, supported, level, capacity
|
||||
end
|
||||
|
||||
local function sprayRole(object)
|
||||
if object.spec_sprayer == nil or object.getSprayerFillUnitIndex == nil then return nil end
|
||||
local ok, role, roles, filledRole = pcall(function()
|
||||
local filledName, supported = sprayerNames(object)
|
||||
return ADCpBridge.sprayRolesFor(filledName, supported)
|
||||
local ok, role, roles, filledRole, wrongFillDumpable = pcall(function()
|
||||
local filledName, supported, level, capacity = sprayerNames(object)
|
||||
local r, rs, fr = ADCpBridge.sprayRolesFor(filledName, supported)
|
||||
return r, rs, fr, ADCpBridge.isDumpable(level, capacity)
|
||||
end)
|
||||
if not ok then return nil end
|
||||
return role, roles, filledRole
|
||||
return role, roles, filledRole, wrongFillDumpable
|
||||
end
|
||||
|
||||
-- Må en forkert vare hældes ud? Kun en lille rest: højst 10 % af tanken og aldrig over 2.000 l
|
||||
-- (in-game 26/9: 100.000 l flydende gødning og 4.000 l sprøjtemiddel blev hældt ud for at skifte opgave).
|
||||
ADCpBridge.MAX_DUMP_LITERS = 2000
|
||||
ADCpBridge.MAX_DUMP_SHARE = 0.10
|
||||
function ADCpBridge.isDumpable(level, capacity)
|
||||
level = level or 0
|
||||
if level <= 0 then return true end
|
||||
if level > ADCpBridge.MAX_DUMP_LITERS then return false end
|
||||
return capacity == nil or capacity <= 0 or level <= capacity * ADCpBridge.MAX_DUMP_SHARE
|
||||
end
|
||||
|
||||
-- Tøm sprøjten/sprederen for en vare der ikke hører til opgaven (kalk på, skal gøde). FS25 kan ikke
|
||||
@@ -124,10 +138,10 @@ function ADCpBridge.emptySprayerIfWrong(vehicle, role)
|
||||
for _, object in ipairs(collect(vehicle)) do
|
||||
if object.spec_sprayer ~= nil and object.getSprayerFillUnitIndex ~= nil then
|
||||
pcall(function()
|
||||
local filledName = sprayerNames(object)
|
||||
local filledName, _, level, capacity = sprayerNames(object)
|
||||
if filledName == nil or ADCpBridge.sprayRoleForFillType(filledName) == role then return end
|
||||
if not ADCpBridge.isDumpable(level, capacity) then return end
|
||||
local unit = object:getSprayerFillUnitIndex()
|
||||
local level = object:getFillUnitFillLevel(unit) or 0
|
||||
object:addFillUnitFillLevel(object:getOwnerFarmId(), unit, -level, object:getFillUnitFillType(unit), ToolType.UNDEFINED, nil)
|
||||
liters, name = liters + level, filledName
|
||||
end)
|
||||
@@ -142,7 +156,7 @@ function ADCpBridge.getSpecs(vehicle)
|
||||
for _, name in ipairs(ADCpBridge.SPECS) do
|
||||
if object[name] ~= nil then specs[name] = true end
|
||||
end
|
||||
if specs.sprayRole == nil then specs.sprayRole, specs.sprayRoles, specs.filledRole = sprayRole(object) end
|
||||
if specs.sprayRole == nil then specs.sprayRole, specs.sprayRoles, specs.filledRole, specs.dumpable = sprayRole(object) end
|
||||
end
|
||||
if vehicle.getCanStartCpCombineUnloader ~= nil then
|
||||
local ok, can = pcall(vehicle.getCanStartCpCombineUnloader, vehicle)
|
||||
|
||||
Reference in New Issue
Block a user