fix(reserve): staldens output (mælk/gylle) er ikke foderbehov — kun krybbe-varer/foderdefinition; Milk Salg holdt med 784k 'reserveret' (v1.17.2.0)
This commit is contained in:
@@ -587,6 +587,22 @@ end
|
|||||||
|
|
||||||
-- Stald: foder/halm/vand-rate × timer minus beholdning, højst fri plads (spec-felter som
|
-- Stald: foder/halm/vand-rate × timer minus beholdning, højst fri plads (spec-felter som
|
||||||
-- Distribution Redux læser dem); automatisk vandforsyning = intet behov.
|
-- Distribution Redux læser dem); automatisk vandforsyning = intet behov.
|
||||||
|
-- Foder = varer i krybben ELLER i dyretypens foderdefinition (tom krybbe har ingen niveauer).
|
||||||
|
-- Mælk/gylle er staldens output og understøttes kun som lager.
|
||||||
|
local function isFoodFillType(placeable, fillType)
|
||||||
|
local food = placeable.spec_husbandryFood
|
||||||
|
if food == nil then return false end
|
||||||
|
if food.fillLevels ~= nil and food.fillLevels[fillType] ~= nil then return true end
|
||||||
|
local system = g_currentMission ~= nil and g_currentMission.animalFoodSystem or nil
|
||||||
|
local animalFood = system ~= nil and system.getAnimalFood ~= nil and system:getAnimalFood(food.animalTypeIndex) or nil
|
||||||
|
for _, group in pairs(animalFood ~= nil and animalFood.groups or {}) do
|
||||||
|
for _, candidate in pairs(group.fillTypes or {}) do
|
||||||
|
if candidate == fillType then return true end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
local function getHusbandryReserve(placeable, fillType)
|
local function getHusbandryReserve(placeable, fillType)
|
||||||
if placeable.getHusbandryIsFillTypeSupported == nil or placeable.getHusbandryFillLevel == nil then
|
if placeable.getHusbandryIsFillTypeSupported == nil or placeable.getHusbandryFillLevel == nil then
|
||||||
return 0
|
return 0
|
||||||
@@ -603,7 +619,8 @@ local function getHusbandryReserve(placeable, fillType)
|
|||||||
rate = water.litersPerHour or 0
|
rate = water.litersPerHour or 0
|
||||||
elseif name == "STRAW" and straw ~= nil then
|
elseif name == "STRAW" and straw ~= nil then
|
||||||
rate = straw.inputLitersPerHour or 0
|
rate = straw.inputLitersPerHour or 0
|
||||||
elseif food ~= nil then
|
elseif food ~= nil and isFoodFillType(placeable, fillType) then
|
||||||
|
-- kun varer i foderkrybben er foder; mælk/gylle er staldens OUTPUT (understøttet som lager)
|
||||||
rate = food.litersPerHour or 0
|
rate = food.litersPerHour or 0
|
||||||
level = 0
|
level = 0
|
||||||
for _, value in pairs(food.fillLevels or {}) do level = level + (value or 0) end
|
for _, value in pairs(food.fillLevels or {}) do level = level + (value or 0) end
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.17.1.0</version>
|
<version>1.17.2.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# AD Smart Pickup — brugermanual
|
# AD Smart Pickup — brugermanual
|
||||||
|
|
||||||
Version 1.17.1 · Farming Simulator 25 · tillæg til AutoDrive
|
Version 1.17.2 · Farming Simulator 25 · tillæg til AutoDrive
|
||||||
|
|
||||||
*English version: [USER_MANUAL.md](USER_MANUAL.md)*
|
*English version: [USER_MANUAL.md](USER_MANUAL.md)*
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# AD Smart Pickup — user manual
|
# AD Smart Pickup — user manual
|
||||||
|
|
||||||
Version 1.17.1 · Farming Simulator 25 · add-on for AutoDrive
|
Version 1.17.2 · Farming Simulator 25 · add-on for AutoDrive
|
||||||
|
|
||||||
*Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)*
|
*Dansk version: [BRUGERMANUAL.md](BRUGERMANUAL.md)*
|
||||||
|
|
||||||
|
|||||||
@@ -287,6 +287,27 @@ tmrStorage.fillLevels[BEET] = 20000
|
|||||||
tmrFactory.spec_productionPoint.productionPoint.getIsProductionEnabled = function() return false end
|
tmrFactory.spec_productionPoint.productionPoint.getIsProductionEnabled = function() return false end
|
||||||
check("S11 slukket produktion -> 0", ADSources.getFarmDemand(adEnv, BEET, 1, {}).liters, 0)
|
check("S11 slukket produktion -> 0", ADSources.getFarmDemand(adEnv, BEET, 1, {}).liters, 0)
|
||||||
|
|
||||||
|
-- S11b: staldens OUTPUT (mælk, gylle) er aldrig et behov — kun varer i foderkrybben er foder
|
||||||
|
local MILK_OUT = 13
|
||||||
|
local feedBarn = {
|
||||||
|
rootNode = {x = 960, z = 960}, ownerFarmId = 1, getOwnerFarmId = function() return 1 end, getName = function() return "Malkestald" end,
|
||||||
|
spec_husbandryFood = {litersPerHour = 2000, fillLevels = {[FORAGE] = 1000}},
|
||||||
|
getHusbandryIsFillTypeSupported = function(self, ft) return ft == MILK_OUT or ft == FORAGE end,
|
||||||
|
getHusbandryFillLevel = function(self, ft) return ft == MILK_OUT and 200000 or ft == FORAGE and 1000 or 0 end,
|
||||||
|
getHusbandryFreeCapacity = function(self, ft) return 9999999 end,
|
||||||
|
}
|
||||||
|
table.insert(g_currentMission.placeableSystem.placeables, feedBarn)
|
||||||
|
check("S11b mælk er ikke behov", ADSources.getFarmDemand(adEnv, MILK_OUT, 1, {}).liters, 0)
|
||||||
|
check("S11b foder er behov (2000 l/t × 24 − 1000)", ADSources.getFarmDemand(adEnv, FORAGE, 1, {}).liters, 47000)
|
||||||
|
-- tom krybbe: foderet kendes fra dyretypens foderdefinition
|
||||||
|
feedBarn.spec_husbandryFood.fillLevels = {}
|
||||||
|
feedBarn.getHusbandryFillLevel = function(self, ft) return ft == MILK_OUT and 200000 or 0 end
|
||||||
|
g_currentMission.animalFoodSystem = {getAnimalFood = function() return {groups = {{fillTypes = {FORAGE}}}} end}
|
||||||
|
check("S11b tom krybbe: foder stadig behov", ADSources.getFarmDemand(adEnv, FORAGE, 1, {}).liters, 48000)
|
||||||
|
check("S11b tom krybbe: mælk stadig ikke behov", ADSources.getFarmDemand(adEnv, MILK_OUT, 1, {}).liters, 0)
|
||||||
|
g_currentMission.animalFoodSystem = nil
|
||||||
|
table.remove(g_currentMission.placeableSystem.placeables)
|
||||||
|
|
||||||
-- S12 (inventar): alt gården har liggende, pr. bygning, kun bygninger med indhold
|
-- S12 (inventar): alt gården har liggende, pr. bygning, kun bygninger med indhold
|
||||||
factory.ownerFarmId = 1; silo.ownerFarmId = 1; objectStorage.ownerFarmId = 1
|
factory.ownerFarmId = 1; silo.ownerFarmId = 1; objectStorage.ownerFarmId = 1
|
||||||
local inventory = ADSources.getFarmInventory(adEnv, 1)
|
local inventory = ADSources.getFarmInventory(adEnv, 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user