fix: AD's 'AL unload' sættes til center ved Start af udkørsel med autoload-bil (stod på fra → ingen aflæsning ved salgssted); pris-% = kurven alene (v1.12.10.0)

This commit is contained in:
2026-09-23 12:00:55 +02:00
parent 448af2bbea
commit a6e17d4f36
5 changed files with 52 additions and 15 deletions
+4 -5
View File
@@ -77,7 +77,9 @@ local function getCurrentPeriod()
end
-- {price, top, percent} for varen ved stationen; nil hvis stationen ikke kan prissætte den.
-- percent = kurve-% × (effektiv ÷ stationens grundpris nu); top = den pris der svarer til 100 %.
-- percent = kurve-% (faktor nu ÷ årets højeste). Stationens `fillTypePrices` bruges IKKE som
-- reference: in-game (23/9) gav effektiv 1602 mod grundpris 505 = 317 %, fordi grundprisen
-- hverken indeholder sværhedsgrad eller prisskala. top = prisen der svarer til 100 % af kurven.
function ADPrices.getQuote(station, fillType)
if station == nil or station.getEffectiveFillTypePrice == nil then
return nil
@@ -88,10 +90,7 @@ function ADPrices.getQuote(station, fillType)
end
local fillTypeDesc = g_fillTypeManager ~= nil and g_fillTypeManager.getFillTypeByIndex ~= nil and g_fillTypeManager:getFillTypeByIndex(fillType) or nil
local factors = fillTypeDesc ~= nil and fillTypeDesc.economy ~= nil and fillTypeDesc.economy.factors or nil
local curve = ADPrices.curvePercent(factors, getCurrentPeriod())
local baseNow = station.fillTypePrices ~= nil and tonumber(station.fillTypePrices[fillType]) or nil
local stationRatio = (baseNow ~= nil and baseNow > 0) and (effective / baseNow) or 1
local percent = math.floor(curve * stationRatio + 0.5)
local percent = ADPrices.curvePercent(factors, getCurrentPeriod())
local top = percent > 0 and (effective * 100 / percent) or effective
return {price = effective, top = top, percent = percent}
end
+27
View File
@@ -568,10 +568,37 @@ local function findNearestLoadMarker(adEnv, vehicle, farmId)
return best
end
local function getSettingValue(adEnv, vehicle, settingName)
local global = adEnv.AutoDrive.settings[settingName]
if global == nil then
return nil
end
local setting = global
if global.isVehicleSpecific and vehicle.ad.settings ~= nil and vehicle.ad.settings[settingName] ~= nil then
setting = vehicle.ad.settings[settingName]
end
return setting.values ~= nil and setting.values[setting.current] or nil
end
-- AutoDrives "AL unload" (aflæsning af autoload-vogn ved målet) står som standard på FRA (0):
-- bilen ville holde ved salgsstedet uden at læsse af. "center" (1) løsner stropperne i triggeren,
-- så salgsstedet tager pallerne; left/behind/right lader UAL sætte pallerne af ved siden af.
-- Et valg brugeren selv har lavet, røres ikke.
ADRunsController.AL_UNLOAD_CENTER = 1
local function ensureAutoloadUnload(adEnv, vehicle)
if getSettingValue(adEnv, vehicle, "ALUnload") == 0 then
setSetting(adEnv, vehicle, "ALUnload", ADRunsController.AL_UNLOAD_CENTER)
Logging.info(ADRunsController.LOG_PREFIX .. "'%s': AutoDrives 'AL unload' var fra — sat til 'center' (stropper løsnes i triggeren)", tostring(vehicle:getName()))
end
end
-- Udkørsel: 1. og 2. markør = første kilde (pladsholder — kilde og mål vælges pr. tur af
-- ADOutbound), varevalg = run'ets varer vognen kan bære, rotation "kun pålæsning" (hook'en).
local function applyOutboundRunToVehicle(adEnv, run, vehicle)
local stateModule = vehicle.ad.stateModule
if hasAutoload(adEnv, vehicle) then
ensureAutoloadUnload(adEnv, vehicle)
end
stateModule:setMode(adEnv.AutoDrive.MODE_PICKUPANDDELIVER)
local firstId = run.sourceWayPointIds[1]
stateModule:setFirstMarkerByWayPointId(firstId)
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107">
<author>masterdraco</author>
<version>1.12.9.0</version>
<version>1.12.10.0</version>
<title>
<en>AD Smart Pickup</en>
</title>