Add Flow Limiter mode to TA4 pump

This commit is contained in:
Joachim Stolberg 2022-09-03 19:22:43 +02:00
parent 3426712006
commit 15a4765b6f
23 changed files with 218 additions and 241 deletions

View File

@ -89,6 +89,10 @@ Available worlds will be converted to 'lsqlite3', but there is no way back, so:
### History ### History
**2022-09-03 V1.09**
- Change the way items are pushed
- Add "Flow Limiter" mode to TA4 pump and TA4 pusher
**2022-06-06 V1.08** **2022-06-06 V1.08**
- Native support for the mod Beduino added - Native support for the mod Beduino added

View File

@ -1,195 +0,0 @@
--[[
TechAge
=======
Copyright (C) 2019-2022 Joachim Stolberg
AGPL v3
See LICENSE.txt for more information
TA3/TA4 Item Flow Limiter
]]--
-- for lazy programmers
local M = minetest.get_meta
local S = techage.S
-- Consumer Related Data
local CRD = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}).consumer end
local Tube = techage.Tube
local STANDBY_TICKS = 8
local CYCLE_TIME = 8
local function formspec(self, pos, nvm)
return "size[6,3]" ..
"box[0,-0.1;5.8,0.5;#c6e8ff]" ..
"label[0.2,-0.1;" .. minetest.colorize("#000000", S("Item Flow Limiter")) .. "]" ..
"field[0.3,1.2;3.3,1;number;" .. S("Number of items") .. ";" .. (nvm.limit or 0) .. "]" ..
"button[3.5,0.9;2.5,1;store;" .. S("Store") .. "]" ..
"image_button[2.5,2;1,1;".. self:get_state_button_image(nvm) .. ";state_button;]" ..
"tooltip[2.5,2;1,1;" .. self:get_state_tooltip(nvm) .. "]"
end
local function keep_running(pos, elapsed)
local nvm = techage.get_nvm(pos)
CRD(pos).State:is_active(nvm)
end
local function on_receive_fields(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then
return
end
local nvm = techage.get_nvm(pos)
if fields.number and fields.store then
nvm.limit = tonumber(fields.number) or 0
nvm.num_items = 0
CRD(pos).State:stop(pos, nvm)
end
CRD(pos).State:state_button_event(pos, nvm, fields)
M(pos):set_string("formspec", formspec(CRD(pos).State, pos, nvm))
end
local function can_start(pos, nvm, state)
nvm.num_items = 0
return true
end
local tiles = {}
-- '#' will be replaced by the stage number
-- '{power}' will be replaced by the power PNG
tiles.pas = {
"techage_filling_ta#.png^techage_frame_ta#_top.png^techage_appl_arrow.png",
"techage_filling_ta#.png^techage_frame_ta#_bottom.png^techage_appl_arrow.png",
"techage_filling_ta#.png^techage_frame_ta#.png^techage_appl_outp.png",
"techage_filling_ta#.png^techage_frame_ta#.png^techage_appl_inp.png",
"techage_filling_ta#.png^techage_appl_flow_limiter.png^techage_frame_ta#.png",
"techage_filling_ta#.png^techage_appl_flow_limiter.png^techage_frame_ta#.png",
}
tiles.act = tiles.pas
local tubing = {
-- push item through until limit is reached
on_push_item = function(pos, in_dir, stack)
print("on_push_item", stack:get_name(), stack:get_count())
local nvm = techage.get_nvm(pos)
local count = math.min(stack:get_count(), (nvm.limit or 0) - (nvm.num_items or 0))
if nvm.techage_state == techage.RUNNING and count > 0 and in_dir == M(pos):get_int("push_dir") then
local leftover = techage.safe_push_items(pos, in_dir, ItemStack({name = stack:get_name(), count = count}))
local num_pushed
if not leftover then
num_pushed = 0
elseif leftover == true then
num_pushed = count
else
num_pushed = count - leftover:get_count()
end
if num_pushed == 0 then
return false
else
nvm.num_items = (nvm.num_items or 0) + num_pushed
if nvm.num_items == nvm.limit then
CRD(pos).State:stop(pos, nvm)
end
stack:set_count(stack:get_count() - num_pushed)
return stack
end
end
return false
end,
is_pusher = true, -- is a pulling/pushing node
on_recv_message = function(pos, src, topic, payload)
if topic == "set" then -- set limit
local nvm = techage.get_nvm(pos)
CRD(pos).State:stop(pos, nvm)
nvm.limit = tonumber(payload) or 0
nvm.num_items = 0
M(pos):set_string("formspec", formspec(CRD(pos).State, pos, nvm))
return true
elseif topic == "count" then
local nvm = techage.get_nvm(pos)
return nvm.num_items or 0
else
return CRD(pos).State:on_receive_message(pos, topic, payload)
end
end,
on_beduino_receive_cmnd = function(pos, src, topic, payload)
if topic == 68 and payload then -- set limit
local nvm = techage.get_nvm(pos)
CRD(pos).State:stop(pos, nvm)
nvm.limit = payload[1] or 0
nvm.num_items = 0
M(pos):set_string("formspec", formspec(CRD(pos).State, pos, nvm))
return 0
else
return CRD(pos).State:on_beduino_receive_cmnd(pos, topic, payload)
end
end,
on_beduino_request_data = function(pos, src, topic, payload)
if topic == 150 then -- Request count
local nvm = techage.get_nvm(pos)
return 0, {nvm.num_items or 0}
else
return CRD(pos).State:on_beduino_request_data(pos, topic, payload)
end
end,
}
local node_name_ta2, node_name_ta3, node_name_ta4 =
techage.register_consumer("item_flow_limiter", S("Item Flow Limiter"), tiles, {
cycle_time = CYCLE_TIME,
standby_ticks = STANDBY_TICKS,
formspec = formspec,
tubing = tubing,
can_start = can_start,
after_place_node = function(pos, placer)
local meta = M(pos)
local node = minetest.get_node(pos)
meta:set_int("pull_dir", techage.side_to_outdir("L", node.param2))
meta:set_int("push_dir", techage.side_to_outdir("R", node.param2))
local nvm = techage.get_nvm(pos)
M(pos):set_string("formspec", formspec(CRD(pos).State, pos, nvm))
end,
ta_rotate_node = function(pos, node, new_param2)
Tube:after_dig_node(pos)
minetest.swap_node(pos, {name = node.name, param2 = new_param2})
Tube:after_place_node(pos)
local meta = M(pos)
meta:set_int("pull_dir", techage.side_to_outdir("L", new_param2))
meta:set_int("push_dir", techage.side_to_outdir("R", new_param2))
end,
on_receive_fields = on_receive_fields,
node_timer = keep_running,
on_rotate = screwdriver.disallow,
groups = {choppy=2, cracky=2, crumbly=2},
is_ground_content = false,
sounds = default.node_sound_wood_defaults(),
num_items = {0,2,6,12},
tube_sides = {L=1, R=1},
}, {false, false, true, true})
minetest.register_craft({
output = node_name_ta3,
recipe = {
{"", "techage:iron_ingot", ""},
{"techage:baborium_ingot", node_name_ta2, "techage:usmium_nuggets"},
{"", "techage:vacuum_tube", ""},
},
})
minetest.register_craft({
output = node_name_ta4,
recipe = {
{"", "techage:iron_ingot", ""},
{"", node_name_ta3, ""},
{"", "techage:ta4_wlanchip", ""},
},
})

View File

@ -18,7 +18,7 @@ local M = minetest.get_meta
local S = techage.S local S = techage.S
local DESCRIPTION = S("TA4 8x2000 Chest") local DESCRIPTION = S("TA4 8x2000 Chest")
local STACK_SIZE = 200 local STACK_SIZE = 2000
local function gen_stack(inv, idx) local function gen_stack(inv, idx)
inv[idx] = {name = "", count = 0} inv[idx] = {name = "", count = 0}

View File

@ -229,6 +229,7 @@ techage.manual_DE.aTitel = {
"3,TA4 Elektronikfabrik / Electronic Fab", "3,TA4 Elektronikfabrik / Electronic Fab",
"3,TA4 Injektor / Injector", "3,TA4 Injektor / Injector",
"3,TA4 Recycler", "3,TA4 Recycler",
"3,TA4 Item Durchlaufbegrenzer / Item Flow Limiter",
"1,TA5: Zukunft", "1,TA5: Zukunft",
"2,Energiequellen", "2,Energiequellen",
"3,TA5 Fusionsreaktor", "3,TA5 Fusionsreaktor",
@ -1892,7 +1893,13 @@ techage.manual_DE.aText = {
"\n", "\n",
"Siehe TA3 Pumpe.\n".. "Siehe TA3 Pumpe.\n"..
"\n".. "\n"..
"Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden. Zusätzlich unterstützt die Pumpe das Kommando 'flowrate'. Damit kann die Gesamtdurchflussmenge durch die Pumpe abgefragt werden.\n".. "Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden. \n"..
"\n"..
"In der Betriebsart \"Durchflussbegrenzer\" kann die Anzahl der Einheiten\\, die von der Pumpe gepumpt werden\\, begrenzt werden. Die Betriebsart Durchflussbegrenzer kann über das Gabelschlüssel-Menü aktiviert werden\\, indem im Menü die Anzahl an Einheiten konfiguriert wird. Sobald die konfigurierte Anzahl an Einheiten gepumpt wurden\\, schaltet sich die Pumpe ab. Wird die Pumpe wieder eingeschaltet\\, pumpt sie wieder die konfigurierte Anzahl an Einheiten und schaltet sich dann ab.\n"..
"\n"..
"Der Durchflussbegrenzer kann auch per Lua- oder Beduino Controller konfiguriert und gestartet werden.\n"..
"\n"..
"Zusätzlich unterstützt die Pumpe das Kommando 'flowrate'. Damit kann die Gesamtdurchflussmenge durch die Pumpe abgefragt werden.\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
@ -2007,6 +2014,10 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"Die Funktion entspricht der von TA3. \n"..
"\n"..
"\n"..
"\n",
"Maschinen zur Überwindung von Raum und Zeit\\, neue Energiequellen und andere Errungenschaften prägen dein Leben. \n".. "Maschinen zur Überwindung von Raum und Zeit\\, neue Energiequellen und andere Errungenschaften prägen dein Leben. \n"..
"\n".. "\n"..
"Für die Herstellung und Nutzung von TA5 Maschinen und Blöcken sind Erfahrungspunkte (experience points) notwendig. Diese können nur über den Teilchenbeschleuniger aus TA4 erarbeitet werden.\n".. "Für die Herstellung und Nutzung von TA5 Maschinen und Blöcken sind Erfahrungspunkte (experience points) notwendig. Diese können nur über den Teilchenbeschleuniger aus TA4 erarbeitet werden.\n"..
@ -2358,6 +2369,7 @@ techage.manual_DE.aItemName = {
"ta4_electronicfab", "ta4_electronicfab",
"ta4_injector", "ta4_injector",
"ta4_recycler", "ta4_recycler",
"ta4_item_flow_limiter_pas",
"techage_ta5", "techage_ta5",
"", "",
"", "",
@ -2615,6 +2627,7 @@ techage.manual_DE.aPlanTable = {
"", "",
"", "",
"", "",
"",
"ta5_fusion_reactor", "ta5_fusion_reactor",
"", "",
"", "",

View File

@ -135,6 +135,7 @@ techage.manual_EN.aTitel = {
"3,TA3 Gravel Rinser", "3,TA3 Gravel Rinser",
"3,TA3 Grinder", "3,TA3 Grinder",
"3,TA3 Injector", "3,TA3 Injector",
"3,TA3 Item Flow Limiter",
"2,Tools", "2,Tools",
"3,Techage Info Tool", "3,Techage Info Tool",
"3,TechAge Programmer", "3,TechAge Programmer",
@ -229,6 +230,7 @@ techage.manual_EN.aTitel = {
"3,TA4 Electronic Fab", "3,TA4 Electronic Fab",
"3,TA4 Injector", "3,TA4 Injector",
"3,TA4 Recycler", "3,TA4 Recycler",
"3,TA4 Item Flow Limiter",
"1,TA5: Future", "1,TA5: Future",
"2,Energy Sources", "2,Energy Sources",
"3,TA5 Fusion Reactor", "3,TA5 Fusion Reactor",
@ -1264,6 +1266,16 @@ techage.manual_EN.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"The Flow Limiter limits the number of items that can be pushed through by using a slider. This allows the number of items that are put into an oven\\, for example\\, to be precisely adapted to the recipe.\n"..
"\n"..
"The Flow Limiter must be configured via the menu and then started. If the configured number of items has been passed\\, the block switches off. The next time the Flow Limiter is switched on\\, it again transmits the configured number of items.\n"..
"\n"..
"*Note: The Flow Limiter must be placed behind the pusher.*\n"..
"\n"..
"The Flow Limiter can also be configured and started using a Lua or Beduino controller.\n"..
"\n"..
"\n"..
"\n",
"", "",
"The Techage Info Tool (open-ended wrench) has several functions. It shows the time\\, position\\, temperature and biome when an unknown block is clicked on.\n".. "The Techage Info Tool (open-ended wrench) has several functions. It shows the time\\, position\\, temperature and biome when an unknown block is clicked on.\n"..
"If you click on a TechAge block with command interface\\, all available data will be shown (see also \"Logic / switching blocks\").\n".. "If you click on a TechAge block with command interface\\, all available data will be shown (see also \"Logic / switching blocks\").\n"..
@ -1888,7 +1900,13 @@ techage.manual_EN.aText = {
"\n", "\n",
"See TA3 pump.\n".. "See TA3 pump.\n"..
"\n".. "\n"..
"The TA4 pump pumps 8 units of liquid every two seconds. The pump also supports the 'flowrate' command. This means that the total flow rate through the pump can be queried. \n".. "The TA4 pump pumps 8 units of liquid every two seconds. \n"..
"\n"..
"In the \"Flow limiter\" mode\\, the number of units pumped by the pump can be limited. The flow limiter mode can be activated via the open-end wrench menu by configuring the number of units in the menu. Once the configured number of units have been pumped\\, the pump will turn off. When the pump is turned on again\\, it will pump the configured number of units again and then turn off.\n"..
"\n"..
"The flow limiter can also be configured and started using a Lua or Beduino controller.\n"..
"\n"..
"The pump also supports the 'flowrate' command. This allows the total flow rate through the pump to be queried.\n"..
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
@ -2004,6 +2022,10 @@ techage.manual_EN.aText = {
"\n".. "\n"..
" \n".. " \n"..
"\n", "\n",
"The function corresponds to that of TA3.\n"..
"\n"..
"\n"..
"\n",
"Machines to overcome space and time\\, new sources of energy and other achievements shape your life.\n".. "Machines to overcome space and time\\, new sources of energy and other achievements shape your life.\n"..
"\n".. "\n"..
"Experience points are required for the manufacture and use of TA5 machines and blocks. These can only be worked out using the collider from TA4.\n".. "Experience points are required for the manufacture and use of TA5 machines and blocks. These can only be worked out using the collider from TA4.\n"..
@ -2259,6 +2281,7 @@ techage.manual_EN.aItemName = {
"ta3_gravelrinser", "ta3_gravelrinser",
"ta3_grinder", "ta3_grinder",
"ta3_injector", "ta3_injector",
"ta3_item_flow_limiter_pas",
"", "",
"ta3_end_wrench", "ta3_end_wrench",
"ta3_programmer", "ta3_programmer",
@ -2353,6 +2376,7 @@ techage.manual_EN.aItemName = {
"ta4_electronicfab", "ta4_electronicfab",
"ta4_injector", "ta4_injector",
"ta4_recycler", "ta4_recycler",
"ta4_item_flow_limiter_pas",
"techage_ta5", "techage_ta5",
"", "",
"", "",
@ -2520,6 +2544,7 @@ techage.manual_EN.aPlanTable = {
"", "",
"", "",
"", "",
"",
"ta4_windturbine", "ta4_windturbine",
"", "",
"", "",
@ -2609,6 +2634,7 @@ techage.manual_EN.aPlanTable = {
"", "",
"", "",
"", "",
"",
"ta5_fusion_reactor", "ta5_fusion_reactor",
"", "",
"", "",

View File

@ -198,7 +198,6 @@ dofile(MP.."/basic_machines/recycler.lua")
dofile(MP.."/basic_machines/concentrator.lua") dofile(MP.."/basic_machines/concentrator.lua")
dofile(MP.."/basic_machines/recipeblock.lua") dofile(MP.."/basic_machines/recipeblock.lua")
dofile(MP.."/basic_machines/ta5_chest.lua") dofile(MP.."/basic_machines/ta5_chest.lua")
dofile(MP.."/basic_machines/flow_limiter.lua")
-- Liquids II -- Liquids II
dofile(MP.."/liquids/tank.lua") dofile(MP.."/liquids/tank.lua")
@ -318,6 +317,7 @@ end
dofile(MP.."/.test/sink.lua") dofile(MP.."/.test/sink.lua")
dofile(MP.."/.test/testblock.lua") dofile(MP.."/.test/testblock.lua")
dofile(MP.."/.test/minichest.lua") dofile(MP.."/.test/minichest.lua")
dofile(MP.."/.test/minitank.lua")
-- Solar -- Solar
dofile(MP.."/solar/minicell.lua") dofile(MP.."/solar/minicell.lua")

View File

@ -25,12 +25,21 @@ local COUNTDOWN_TICKS = 4
local CYCLE_TIME = 2 local CYCLE_TIME = 2
local CAPA = 4 local CAPA = 4
local WRENCH_MENU = {{ local WRENCH_MENU = {
{
type = "output", type = "output",
name = "flowrate", name = "flowrate",
label = S("Total flow rate"), label = S("Total flow rate"),
tooltip = S("Total flow rate in liquid units"), tooltip = S("Total flow rate in liquid units"),
}} },
{
type = "number",
name = "limit",
label = S("Number of units"),
tooltip = S("Number of liquid units that are allowed to be pumped"),
default = "0",
},
}
local State3 = techage.NodeStates:new({ local State3 = techage.NodeStates:new({
node_name_passive = "techage:t3_pump", node_name_passive = "techage:t3_pump",
@ -48,11 +57,8 @@ local State4 = techage.NodeStates:new({
standby_ticks = STANDBY_TICKS, standby_ticks = STANDBY_TICKS,
}) })
local function pumping(pos, nvm, state, capa) local function pump(pos, mem, nvm, state, outdir, units)
local mem = techage.get_mem(pos) local taken, name = liquid.take(pos, Pipe, Flip[outdir], nil, units, mem.dbg_cycles > 0)
mem.dbg_cycles = (mem.dbg_cycles or 0) - 1
local outdir = M(pos):get_int("outdir")
local taken, name = liquid.take(pos, Pipe, Flip[outdir], nil, capa, mem.dbg_cycles > 0)
if taken > 0 then if taken > 0 then
local leftover = liquid.put(pos, Pipe, outdir, name, taken, mem.dbg_cycles > 0) local leftover = liquid.put(pos, Pipe, outdir, name, taken, mem.dbg_cycles > 0)
if leftover and leftover > 0 then if leftover and leftover > 0 then
@ -66,14 +72,40 @@ local function pumping(pos, nvm, state, capa)
state:blocked(pos, nvm) state:blocked(pos, nvm)
return 0 return 0
end end
state:keep_running(pos, nvm, COUNTDOWN_TICKS)
return taken - leftover return taken - leftover
end end
state:keep_running(pos, nvm, COUNTDOWN_TICKS)
return taken return taken
end else
state:idle(pos, nvm) state:idle(pos, nvm)
return 0 return 0
end
end
local function pumping(pos, nvm, state, capa)
local mem = techage.get_mem(pos)
mem.dbg_cycles = (mem.dbg_cycles or 0) - 1
local outdir = M(pos):get_int("outdir")
if not nvm.limit then
local num = pump(pos, mem, nvm, state, outdir, capa)
if num > 0 then
state:keep_running(pos, nvm, COUNTDOWN_TICKS)
end
return num
elseif nvm.num_items < nvm.limit then
local num = math.min(capa, nvm.limit - nvm.num_items)
num = pump(pos, mem, nvm, state, outdir, num)
if num > 0 then
nvm.num_items = nvm.num_items + num
if nvm.num_items >= nvm.limit then
state:stop(pos, nvm)
else
state:keep_running(pos, nvm, COUNTDOWN_TICKS)
end
end
return num
end
return 0
end end
local function after_place_node3(pos, placer) local function after_place_node3(pos, placer)
@ -119,6 +151,14 @@ local function on_rightclick(pos, node, clicker)
elseif node.name == "techage:t4_pump" then elseif node.name == "techage:t4_pump" then
local mem = techage.get_mem(pos) local mem = techage.get_mem(pos)
mem.dbg_cycles = 5 mem.dbg_cycles = 5
local val = M(pos):get_int("limit")
if val and val > 0 then
nvm.limit = val
nvm.num_items = 0
else
nvm.limit = nil
nvm.num_items = nil
end
State4:start(pos, nvm) State4:start(pos, nvm)
elseif node.name == "techage:t4_pump_on" then elseif node.name == "techage:t4_pump_on" then
State4:stop(pos, nvm) State4:stop(pos, nvm)
@ -285,12 +325,34 @@ techage.register_node({"techage:t4_pump", "techage:t4_pump_on"}, {
end end
end, end,
on_beduino_receive_cmnd = function(pos, src, topic, payload) on_beduino_receive_cmnd = function(pos, src, topic, payload)
if topic == 69 and payload then -- set limit
local nvm = techage.get_nvm(pos)
State4:stop(pos, nvm)
if payload[1] > 0 then
nvm.limit = payload[1]
nvm.num_items = 0
M(pos):set_int("limit", payload[1])
else
nvm.limit = nil
nvm.num_items = nil
M(pos):set_string("limit", "")
end
return 0
else
local nvm = techage.get_nvm(pos)
if nvm.limit then
nvm.num_items = 0
end
return State4:on_beduino_receive_cmnd(pos, topic, payload) return State4:on_beduino_receive_cmnd(pos, topic, payload)
end
end, end,
on_beduino_request_data = function(pos, src, topic, payload) on_beduino_request_data = function(pos, src, topic, payload)
if topic == 137 then -- Total Flow Rate if topic == 137 then -- Total Flow Rate
local nvm = techage.get_nvm(pos) local nvm = techage.get_nvm(pos)
return 0, {nvm.flowrate or 0} return 0, {nvm.flowrate or 0}
elseif topic == 151 then -- Request count
local nvm = techage.get_nvm(pos)
return 0, {nvm.num_items or 0}
else else
return State4:on_beduino_request_data(pos, topic, payload) return State4:on_beduino_request_data(pos, topic, payload)
end end

View File

@ -460,7 +460,6 @@ Error: Invalid path !!=Fehler: Ungültiger Pfad !!
Error: Recording is missing !!=Fehler: Aufzeichnung fehlt !! Error: Recording is missing !!=Fehler: Aufzeichnung fehlt !!
Flight route (A to B)=Flug Route (A nach B) Flight route (A to B)=Flug Route (A nach B)
Move=Bewege
See chat output=Siehe chat Ausgabe See chat output=Siehe chat Ausgabe
TA5 Fly Controller=TA5 Flug Controller TA5 Fly Controller=TA5 Flug Controller
Test=Test Test=Test
@ -480,6 +479,7 @@ Store=Speichern
Click on all blocks that shall be moved=Klicke auf alle Blöcke, die verschoben werden sollen Click on all blocks that shall be moved=Klicke auf alle Blöcke, die verschoben werden sollen
Maximum Speed=Maximalgeschwindigkeit Maximum Speed=Maximalgeschwindigkeit
Maximum speed for moving blocks=Maximale Geschwindigkeit für bewegliche Blöcke Maximum speed for moving blocks=Maximale Geschwindigkeit für bewegliche Blöcke
Move=Bewege
Move A-B=Bewege A-B Move A-B=Bewege A-B
Move B-A=Bewege B-A Move B-A=Bewege B-A
Move block height=Move Block Höhe Move block height=Move Block Höhe
@ -495,7 +495,6 @@ TA2 Flywheel=TA2 Schwungrad
Area already loaded or max. number of Forceload Blocks reached!=Bereich bereits geladen oder maximale Anzahl von Forceload Blöcken erreicht! Area already loaded or max. number of Forceload Blocks reached!=Bereich bereits geladen oder maximale Anzahl von Forceload Blöcken erreicht!
List of your Forceload Blocks:=Liste der Forceload Blöcke List of your Forceload Blocks:=Liste der Forceload Blöcke
Priv missing=Rechte fehlen
Punch the block to make the area visible.=Schlage auf den Bock um den Bereich anzuzeigen. Punch the block to make the area visible.=Schlage auf den Bock um den Bereich anzuzeigen.
Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken
Techage Forceload Block=Techage Forceload Block Techage Forceload Block=Techage Forceload Block
@ -870,15 +869,27 @@ TA1 Pine Wood Board=TA1 Kiefernholzbrett
TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle
### minichest.lua ###
Test Chest=
### minitank.lua ###
Test Mini Tank=
### movecontroller.lua ### ### movecontroller.lua ###
Error: Invalid distance !!=Fehler: Ungültige Entfernung !! Error: Invalid distance !!=Fehler: Ungültige Entfernung !!
Handover to A=Übergabe an A Handover to A=Übergabe an A
Handover to B=Übergabe an B Handover to B=Übergabe an B
Move distance=Entfernung
Move distance (A to B)=Entfernung (A nach B) Move distance (A to B)=Entfernung (A nach B)
Number of the next movecontroller=Nummer des nächsten Move Controllers Number of the next movecontroller=Nummer des nächsten Move Controllers
Number of the previous movecontroller=Nummer des vorhergehenden Move Controllers Number of the previous movecontroller=Nummer des vorhergehenden Move Controllers
Object offset=Objekt Offset Object offset=Objekt Offset
Operational mode=Betriebsmodus
Reset=Rücksetzen
Switch to the remote controlled 'move xyz' mode=Wechseln in den ferngesteuerten 'move xyz'-Modus
TA4 Move Controller=TA4 Move Controller TA4 Move Controller=TA4 Move Controller
Y-offset for non-player objects like vehicles (-0.5 to 0.5)=Y-Offset für Nicht-Spieler Objekte wie Fahrzeuge (-0.5 bis 0.5) Y-offset for non-player objects like vehicles (-0.5 to 0.5)=Y-Offset für Nicht-Spieler Objekte wie Fahrzeuge (-0.5 bis 0.5)
@ -1010,6 +1021,8 @@ Allow to dig/place Techage power lines nearby power poles=Erlaubt TODO
### pump.lua ### ### pump.lua ###
Number of liquid units that are allowed to be pumped=Anzahl der Flüssigkeitseinheiten, die gepumpt werden dürfen
Number of units=Anzahl der Einheiten
TA3 Pump=TA3 Pumpe TA3 Pump=TA3 Pumpe
TA4 Pump=TA4 Pumpe TA4 Pump=TA4 Pumpe
@ -1120,6 +1133,7 @@ stopped=gestoppt
### sequencer2.lua ### ### sequencer2.lua ###
- 'goto <num>' (jump to another line)@n= - 'goto <num>' (springe zu einer anderen Zeile)@n - 'goto <num>' (jump to another line)@n= - 'goto <num>' (springe zu einer anderen Zeile)@n
- 'nop' (do nothing)@n= - 'nop' (mache nichts)@n
- 'send <node num> <cmnd>' (techage command)@n= - 'send <node num> <cmnd>' (techage Kommando)@n - 'send <node num> <cmnd>' (techage command)@n= - 'send <node num> <cmnd>' (techage Kommando)@n
- 'stop' (stop the execution)@n= - 'stop' (stoppe die Ausführung)@n - 'stop' (stop the execution)@n= - 'stop' (stoppe die Ausführung)@n
- 1 corresponds to 100 ms@n= - 1 entspricht 100 ms@n - 1 corresponds to 100 ms@n= - 1 entspricht 100 ms@n

View File

@ -460,7 +460,6 @@ Error: Invalid path !!=
Error: Recording is missing !!= Error: Recording is missing !!=
Flight route (A to B)= Flight route (A to B)=
Move=
See chat output= See chat output=
TA5 Fly Controller= TA5 Fly Controller=
Test= Test=
@ -480,6 +479,7 @@ Store=
Click on all blocks that shall be moved= Click on all blocks that shall be moved=
Maximum Speed= Maximum Speed=
Maximum speed for moving blocks= Maximum speed for moving blocks=
Move=
Move A-B= Move A-B=
Move B-A= Move B-A=
Move block height= Move block height=
@ -495,7 +495,6 @@ TA2 Flywheel=
Area already loaded or max. number of Forceload Blocks reached!= Area already loaded or max. number of Forceload Blocks reached!=
List of your Forceload Blocks:= List of your Forceload Blocks:=
Priv missing=
Punch the block to make the area visible.= Punch the block to make the area visible.=
Show all forceload blocks in a 64x64x64 range= Show all forceload blocks in a 64x64x64 range=
Techage Forceload Block= Techage Forceload Block=
@ -870,15 +869,27 @@ TA1 Pine Wood Board=
TA4 Streetlamp Solar Cell= TA4 Streetlamp Solar Cell=
### minichest.lua ###
Test Chest=
### minitank.lua ###
Test Mini Tank=
### movecontroller.lua ### ### movecontroller.lua ###
Error: Invalid distance !!= Error: Invalid distance !!=
Handover to A= Handover to A=
Handover to B= Handover to B=
Move distance=
Move distance (A to B)= Move distance (A to B)=
Number of the next movecontroller= Number of the next movecontroller=
Number of the previous movecontroller= Number of the previous movecontroller=
Object offset= Object offset=
Operational mode=
Reset=
Switch to the remote controlled 'move xyz' mode=
TA4 Move Controller= TA4 Move Controller=
Y-offset for non-player objects like vehicles (-0.5 to 0.5)= Y-offset for non-player objects like vehicles (-0.5 to 0.5)=
@ -1010,6 +1021,8 @@ Allow to dig/place Techage power lines nearby power poles=
### pump.lua ### ### pump.lua ###
Number of liquid units that are allowed to be pumped=
Number of units=
TA3 Pump= TA3 Pump=
TA4 Pump= TA4 Pump=
@ -1120,6 +1133,7 @@ stopped=
### sequencer2.lua ### ### sequencer2.lua ###
- 'goto <num>' (jump to another line)@n= - 'goto <num>' (jump to another line)@n=
- 'nop' (do nothing)@n=
- 'send <node num> <cmnd>' (techage command)@n= - 'send <node num> <cmnd>' (techage command)@n=
- 'stop' (stop the execution)@n= - 'stop' (stop the execution)@n=
- 1 corresponds to 100 ms@n= - 1 corresponds to 100 ms@n=

View File

@ -826,6 +826,18 @@ The processing power is up to 8 times one item every 4 seconds.
[ta3_injector|image] [ta3_injector|image]
### TA3 Item Flow Limiter
The Flow Limiter limits the number of items that can be pushed through by using a slider. This allows the number of items that are put into an oven, for example, to be precisely adapted to the recipe.
The Flow Limiter must be configured via the menu and then started. If the configured number of items has been passed, the block switches off. The next time the Flow Limiter is switched on, it again transmits the configured number of items.
**Note: The Flow Limiter must be placed behind the pusher.**
The Flow Limiter can also be configured and started using a Lua or Beduino controller.
[ta3_item_flow_limiter_pas|image]
## Tools ## Tools

View File

@ -804,7 +804,13 @@ In einen TA4 Tank passen 2000 Einheiten oder 200 Fässer einer Flüssigkeit.
Siehe TA3 Pumpe. Siehe TA3 Pumpe.
Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden. Zusätzlich unterstützt die Pumpe das Kommando `flowrate`. Damit kann die Gesamtdurchflussmenge durch die Pumpe abgefragt werden. Die TA4 Pumpe pumpt 8 Einheiten Flüssigkeit alle zwei Sekunden.
In der Betriebsart "Durchflussbegrenzer" kann die Anzahl der Einheiten, die von der Pumpe gepumpt werden, begrenzt werden. Die Betriebsart Durchflussbegrenzer kann über das Gabelschlüssel-Menü aktiviert werden, indem im Menü die Anzahl an Einheiten konfiguriert wird. Sobald die konfigurierte Anzahl an Einheiten gepumpt wurden, schaltet sich die Pumpe ab. Wird die Pumpe wieder eingeschaltet, pumpt sie wieder die konfigurierte Anzahl an Einheiten und schaltet sich dann ab.
Der Durchflussbegrenzer kann auch per Lua- oder Beduino Controller konfiguriert und gestartet werden.
Zusätzlich unterstützt die Pumpe das Kommando `flowrate`. Damit kann die Gesamtdurchflussmenge durch die Pumpe abgefragt werden.
[ta4_pump|image] [ta4_pump|image]
@ -957,3 +963,8 @@ Die Verarbeitungsleistung beträgt ein Item alle 8 s. Der Block benötigt hierf
[ta4_recycler|image] [ta4_recycler|image]
### TA4 Item Durchlaufbegrenzer / Item Flow Limiter
Die Funktion entspricht der von TA3.
[ta4_item_flow_limiter_pas|image]

View File

@ -796,7 +796,13 @@ A TA4 tank can hold 2000 units or 200 barrels of liquid.
See TA3 pump. See TA3 pump.
The TA4 pump pumps 8 units of liquid every two seconds. The pump also supports the `flowrate` command. This means that the total flow rate through the pump can be queried. The TA4 pump pumps 8 units of liquid every two seconds.
In the "Flow limiter" mode, the number of units pumped by the pump can be limited. The flow limiter mode can be activated via the open-end wrench menu by configuring the number of units in the menu. Once the configured number of units have been pumped, the pump will turn off. When the pump is turned on again, it will pump the configured number of units again and then turn off.
The flow limiter can also be configured and started using a Lua or Beduino controller.
The pump also supports the `flowrate` command. This allows the total flow rate through the pump to be queried.
[ta4_pump|image] [ta4_pump|image]
@ -949,3 +955,10 @@ The machine can disassemble pretty much any Techage and Hyperloop blocks. But no
The processing power is one item every 8 s. The block requires 16 ku of electricity for this. The processing power is one item every 8 s. The block requires 16 ku of electricity for this.
[ta4_recycler|image] [ta4_recycler|image]
### TA4 Item Flow Limiter
The function corresponds to that of TA3.
[ta4_item_flow_limiter_pas|image]

View File

@ -228,6 +228,7 @@
- [TA4 Elektronikfabrik / Electronic Fab](./manual_ta4_DE.md#ta4-elektronikfabrik--electronic-fab) - [TA4 Elektronikfabrik / Electronic Fab](./manual_ta4_DE.md#ta4-elektronikfabrik--electronic-fab)
- [TA4 Injektor / Injector](./manual_ta4_DE.md#ta4-injektor--injector) - [TA4 Injektor / Injector](./manual_ta4_DE.md#ta4-injektor--injector)
- [TA4 Recycler](./manual_ta4_DE.md#ta4-recycler) - [TA4 Recycler](./manual_ta4_DE.md#ta4-recycler)
- [TA4 Item Durchlaufbegrenzer / Item Flow Limiter](./manual_ta4_DE.md#ta4-item-durchlaufbegrenzer--item-flow-limiter)
- [TA5: Zukunft](./manual_ta5_DE.md#ta5:-zukunft) - [TA5: Zukunft](./manual_ta5_DE.md#ta5:-zukunft)
- [Energiequellen](./manual_ta5_DE.md#energiequellen) - [Energiequellen](./manual_ta5_DE.md#energiequellen)
- [TA5 Fusionsreaktor](./manual_ta5_DE.md#ta5-fusionsreaktor) - [TA5 Fusionsreaktor](./manual_ta5_DE.md#ta5-fusionsreaktor)

View File

@ -134,6 +134,7 @@
- [TA3 Gravel Rinser](./manual_ta3_EN.md#ta3-gravel-rinser) - [TA3 Gravel Rinser](./manual_ta3_EN.md#ta3-gravel-rinser)
- [TA3 Grinder](./manual_ta3_EN.md#ta3-grinder) - [TA3 Grinder](./manual_ta3_EN.md#ta3-grinder)
- [TA3 Injector](./manual_ta3_EN.md#ta3-injector) - [TA3 Injector](./manual_ta3_EN.md#ta3-injector)
- [TA3 Item Flow Limiter](./manual_ta3_EN.md#ta3-item-flow-limiter)
- [Tools](./manual_ta3_EN.md#tools) - [Tools](./manual_ta3_EN.md#tools)
- [Techage Info Tool](./manual_ta3_EN.md#techage-info-tool) - [Techage Info Tool](./manual_ta3_EN.md#techage-info-tool)
- [TechAge Programmer](./manual_ta3_EN.md#techage-programmer) - [TechAge Programmer](./manual_ta3_EN.md#techage-programmer)
@ -228,6 +229,7 @@
- [TA4 Electronic Fab](./manual_ta4_EN.md#ta4-electronic-fab) - [TA4 Electronic Fab](./manual_ta4_EN.md#ta4-electronic-fab)
- [TA4 Injector](./manual_ta4_EN.md#ta4-injector) - [TA4 Injector](./manual_ta4_EN.md#ta4-injector)
- [TA4 Recycler](./manual_ta4_EN.md#ta4-recycler) - [TA4 Recycler](./manual_ta4_EN.md#ta4-recycler)
- [TA4 Item Flow Limiter](./manual_ta4_EN.md#ta4-item-flow-limiter)
- [TA5: Future](./manual_ta5_EN.md#ta5:-future) - [TA5: Future](./manual_ta5_EN.md#ta5:-future)
- [Energy Sources](./manual_ta5_EN.md#energy-sources) - [Energy Sources](./manual_ta5_EN.md#energy-sources)
- [TA5 Fusion Reactor](./manual_ta5_EN.md#ta5-fusion-reactor) - [TA5 Fusion Reactor](./manual_ta5_EN.md#ta5-fusion-reactor)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B