Add docu to sequencer and move controller

This commit is contained in:
Joachim Stolberg 2021-10-30 16:37:21 +02:00
parent c1542a48d1
commit a961ec8796
11 changed files with 317 additions and 23 deletions

View File

@ -191,7 +191,9 @@ techage.Items = {
ta4_electricmeter = "techage:ta4_electricmeter", ta4_electricmeter = "techage:ta4_electricmeter",
ta4_transformer = "techage:ta4_transformer", ta4_transformer = "techage:ta4_transformer",
power_reduction = "techage_power_reduction.png", power_reduction = "techage_power_reduction.png",
ta4_button_4x = "techage:ta4_button_4x", ta4_button_4x = "techage:ta4_button_4x",
ta4_sequencer = "techage:ta4_sequencer",
ta4_movecontroller = "techage:ta4_movecontroller",
--ta4_ "", --ta4_ "",
} }

View File

@ -187,6 +187,8 @@ techage.manual_DE.aTitel = {
"3,TA4 Spieler Detektor / Player Detector", "3,TA4 Spieler Detektor / Player Detector",
"3,TA4 Zustandssammler / State Collector", "3,TA4 Zustandssammler / State Collector",
"3,TA4 Detektor / Detector", "3,TA4 Detektor / Detector",
"3,TA4 Move Controller",
"3,TA4 Sequenzer",
"2,TA4 Lampen", "2,TA4 Lampen",
"3,TA4 LED Pflanzenlampe / TA4 LED Grow Light", "3,TA4 LED Pflanzenlampe / TA4 LED Grow Light",
"3,TA4 LED Straßenlampe / TA4 LED Street Lamp", "3,TA4 LED Straßenlampe / TA4 LED Street Lamp",
@ -1577,6 +1579,50 @@ techage.manual_DE.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"Der TA4 Move Controller ist ähnlich zum \"Door Controller 2\"\\, aber die ausgewählten Blöcke werden nicht entfernt\\, sondern können bewegt werden.\n"..
"Da die bewegten Blöcke Spieler und Mobs mitnehmen können\\, die auf dem Block stehen\\, können damit Fahrstühle und ähnliche Transportsysteme gebaut werden.\n"..
"\n"..
"Anleitung:\n"..
"\n"..
" - Controller setzen und die Blöcke\\, die bewegt werden sollen\\, über das Menü an-trainieren (Es können bis zu 16 Blöcke an-trainiert werden)\n"..
" - die \"Flugstrecke\" muss über eine x\\,y\\,z Angabe (relativ) eingegeben werden (die maximale Distanz beträgt 100 m)\n"..
" - mit den Menü-Tasten \"Bewege A-B\" sowie \"Bewege B-A\" kann die Bewegung getestet werden\n"..
" - man kann auch durch Wände oder andere Blöcke fliegen\n"..
" - auch die Zielposition für die Blöcke kann belegt sein. Die Blöcke werden in diesem Falle \"unsichtbar\" gespeichert. Dies ist für Schiebetüren und ähnliches gedacht\n"..
" - Über das Gabelschlüssel-Menü kann im Controller auch ein \"handover\" programmiert werden. Durch Eingabe einer Blocknummer werden die Blöcke dann an den nächsten Move Controller übergeben. So lassen sich auch zusammenhängende Bewegungen über mehrere Move Controller realisieren.\n"..
"\n"..
"Der Move Controller unterstützt folgende techage Kommandos:\n"..
"\n"..
" - 'a2b' Bewege Block von A nach B\n"..
" - 'b2a' Bewege Block von B nach A\n"..
" - 'move' Bewege Block auf die andere Seite\n"..
"\n"..
"\n"..
"\n",
"über den TA4 Sequenzer können ganze Abläufe programmiert werden. Hier ein Beispiel:\n"..
"\n"..
" -- this is a comment\n"..
" \\[1\\] send 1234 a2b\n"..
" \\[30\\] send 1234 b2a\n"..
" \\[60\\] goto 1\n"..
"\n"..
" - Jede Zeile beginnt mit einem Nummer\\, welche einem Zeitpunkt entspricht '\\[<num>\\]'\n"..
" - Für Zeitpunkte sind Werte von 1 bis 50000 zulässig\n"..
" - 1 entspricht 100 ms\\, 50000 entspricht in etwa 4 Spieltagen\n"..
" - Leerzeilen oder Kommentare sind erlaubt ('-- comment')\n"..
" - Mit 'send <num> <command> <data>' kann man ein Kommando an einen Block senden\n"..
" - Mit 'goto <num>' kann man an eine andere Zeile/Zeitpunkt springen\n"..
" - Mit 'stop' kann man den Sequenzer verzögert stoppen\\, so dass er kein neues Kommando\nvon einem Taster oder anderem Block annimmt (um eine Bewegung abzuschließen)\nOhne 'stop' geht der Sequenzer sofort nach dem letzten Kommando in den stopped Modus.\n"..
"\n"..
"Der TA4 Sequenzer unterstützt folgende techage Kommandos:\n"..
"\n"..
" - 'goto <num>' Zu einer Kommandozeile springen und damit den Sequenzer starten\n"..
" - 'stop' Den Sequenzer anhalten\n"..
"\n"..
"Das 'goto' Kommando wird nur angenommen\\, wenn der Sequenzer gestoppt ist.\n"..
"\n"..
"\n"..
"\n",
"TA4 beinhaltet eine Reihe von leistungsstarken Lampen\\, die eine bessere Ausleuchtung ermöglichen oder Spezialaufgaben übernehmen.\n".. "TA4 beinhaltet eine Reihe von leistungsstarken Lampen\\, die eine bessere Ausleuchtung ermöglichen oder Spezialaufgaben übernehmen.\n"..
"\n", "\n",
"Die TA4 LED Pflanzenlampe ermöglicht ein schnelles und kräftiges Wachstum aller Pflanzen aus der 'farming' Mod. Die Lampe beleuchtet ein 3x3 großes Feld\\, so dass sich damit auch Pflanzen unter Tage anbauen lassen.\n".. "Die TA4 LED Pflanzenlampe ermöglicht ein schnelles und kräftiges Wachstum aller Pflanzen aus der 'farming' Mod. Die Lampe beleuchtet ein 3x3 großes Feld\\, so dass sich damit auch Pflanzen unter Tage anbauen lassen.\n"..
@ -1942,6 +1988,8 @@ techage.manual_DE.aItemName = {
"ta4_playerdetector", "ta4_playerdetector",
"ta4_collector", "ta4_collector",
"ta4_detector", "ta4_detector",
"ta4_movecontroller",
"ta4_sequencer",
"", "",
"ta4_growlight", "ta4_growlight",
"ta4_streetlamp", "ta4_streetlamp",
@ -2162,6 +2210,8 @@ techage.manual_DE.aPlanTable = {
"", "",
"", "",
"", "",
"",
"",
"ta4_liquid_filter_base", "ta4_liquid_filter_base",
"ta4_liquid_filter_gravel", "ta4_liquid_filter_gravel",
"ta4_liquid_filter_top", "ta4_liquid_filter_top",

View File

@ -187,6 +187,8 @@ techage.manual_EN.aTitel = {
"3,TA4 Player Detector", "3,TA4 Player Detector",
"3,TA4 State Collector", "3,TA4 State Collector",
"3,TA4 Detector", "3,TA4 Detector",
"3,TA4 Move Controller",
"3,TA4 Sequencer",
"2,TA4 Lamps", "2,TA4 Lamps",
"3,TA4 LED Grow Light", "3,TA4 LED Grow Light",
"3,TA4 Street Lamp", "3,TA4 Street Lamp",
@ -1575,6 +1577,50 @@ techage.manual_EN.aText = {
"\n".. "\n"..
"\n".. "\n"..
"\n", "\n",
"The TA4 Move Controller is similar to \"Door Controller 2\"\\, but the selected blocks are not removed\\, but can be moved.\n"..
"Since the moving blocks can take players and mobs standing on the block with them\\, elevators and similar transport systems can be built with them.\n"..
"\n"..
"Instructions:\n"..
"\n"..
" - Set the controller and train the blocks to be moved via the menu (up to 16 blocks can be trained)\n"..
" - the \"flight route\" must be entered via an x\\, y\\, z specification (relative) (the maximum distance is 100 m)\n"..
" - The movement can be tested with the menu buttons \"Move A-B\" and \"Move B-A\"\n"..
" - you can also fly through walls or other blocks\n"..
" - The target position for the blocks can also be occupied. In this case\\, the blocks are saved \"invisibly\". This is intended for sliding doors and the like\n"..
" - A \"handover\" can also be programmed in the controller via the open-ended wrench menu. By entering a block number\\, the blocks are then transferred to the next move controller. In this way\\, connected movements can also be implemented using several Move Controllers.\n"..
"\n"..
"The Move Controller supports the following techage commands:\n"..
"\n"..
" - 'a2b' Move block from A to B.\n"..
" - 'b2a' Move block from B to A.\n"..
" - 'move' Move block to the other side\n"..
"\n"..
"\n"..
"\n",
"Entire processes can be programmed using the TA4 sequencer. Here's an example:\n"..
"\n"..
" -- this is a comment\n"..
" \\[1\\] send 1234 a2b\n"..
" \\[30\\] send 1234 b2a\n"..
" \\[60\\] goto 1\n"..
"\n"..
" - Each line begins with a number which corresponds to a point in time '\\[<num>\\]'\n"..
" - Values from 1 to 50000 are permitted for times\n"..
" - 1 corresponds to 100 ms\\, 50000 corresponds to about 4 game days\n"..
" - Empty lines or comments are allowed ('-- comment')\n"..
" - With 'send <num> <command> <data>' you can send a command to a block\n"..
" - With 'goto <num>' you can jump to another line / point in time\n"..
" - With 'stop' you can stop the sequencer with a delay so that it does not receive a new command\naccepts from a button or other block (to complete a movement)\nWithout 'stop'\\, the sequencer goes into stopped mode immediately after the last command.\n"..
"\n"..
"The TA4 sequencer supports the following techage commands:\n"..
"\n"..
" - 'goto <num>' Jump to a command line and start the sequencer\n"..
" - 'stop' Stop the sequencer\n"..
"\n"..
"The 'goto' command is only accepted when the sequencer is stopped.\n"..
"\n"..
"\n"..
"\n",
"TA4 contains a series of powerful lamps that enable better illumination or take on special tasks.\n".. "TA4 contains a series of powerful lamps that enable better illumination or take on special tasks.\n"..
"\n", "\n",
"The TA4 LED grow light enables fast and vigorous growth of all plants from the 'farming' mod. The lamp illuminates a 3x3 field\\, so that plants can also be grown underground.\n".. "The TA4 LED grow light enables fast and vigorous growth of all plants from the 'farming' mod. The lamp illuminates a 3x3 field\\, so that plants can also be grown underground.\n"..
@ -1941,6 +1987,8 @@ techage.manual_EN.aItemName = {
"ta4_playerdetector", "ta4_playerdetector",
"ta4_collector", "ta4_collector",
"ta4_detector", "ta4_detector",
"ta4_movecontroller",
"ta4_sequencer",
"", "",
"ta4_growlight", "ta4_growlight",
"ta4_streetlamp", "ta4_streetlamp",
@ -2161,6 +2209,8 @@ techage.manual_EN.aPlanTable = {
"", "",
"", "",
"", "",
"",
"",
"ta4_liquid_filter_base", "ta4_liquid_filter_base",
"ta4_liquid_filter_gravel", "ta4_liquid_filter_gravel",
"ta4_liquid_filter_top", "ta4_liquid_filter_top",

View File

@ -118,7 +118,6 @@ TA4 Button/Switch=TA4 Schalter/Taster
### signallamp_4x.lua ### ### signallamp_4x.lua ###
Command=Kommando Command=Kommando
Command to be sent=Zu sendender Befehl
### button.lua ### ### button.lua ###
### cart_detector.lua ### ### cart_detector.lua ###
@ -142,11 +141,19 @@ Insert destination node number(s)=Gebe Zielnummer(n) ein
Save=Speichern Save=Speichern
### button.lua ###
### signallamp_4x.lua ###
Command to be sent=Zu sendender Befehl
### button_4x.lua ### ### button_4x.lua ###
Command to be sent (ignored for switches)=Zu sendender Befehl (wird für Schalter ignoriert)
Label=Beschriftung Label=Beschriftung
Label for the button=Beschriftung für die Taste Label for the button=Beschriftung für die Taste
Momentary button or on/off switch=Taster oder Ein-/Ausschalter
TA4 4x Button=TA4 4x Taster TA4 4x Button=TA4 4x Taster
Type=Typ
### button_4x.lua ### ### button_4x.lua ###
### signallamp_4x.lua ### ### signallamp_4x.lua ###
@ -615,6 +622,11 @@ Allow public access to the tank=Erlaube öffentlichen Zugriff auf den Tank
Liquid Tank=Flüssigkeitstank Liquid Tank=Flüssigkeitstank
To add liquids punch@nthe tank@nwith a liquid container=Um Flüssigkeit nachzufüllen,@nschlage mit einem Flüssigkeitsbehälter@nauf den Block To add liquids punch@nthe tank@nwith a liquid container=Um Flüssigkeit nachzufüllen,@nschlage mit einem Flüssigkeitsbehälter@nauf den Block
### liquid_lib.lua ###
### ta4_chest.lua ###
keep assignment=Zuordnung beibehalten
### liquid_pipe.lua ### ### liquid_pipe.lua ###
TA Junction Pipe=TA Leitungskupplung TA Junction Pipe=TA Leitungskupplung
@ -642,7 +654,6 @@ no usable water=Kein brauchbares Wasser
@nValid operators:@nand or on off me @=@= ~@= ( )@n=@nGültige Operatoren:@nand or on off @=@= ~@= ( )@n @nValid operators:@nand or on off me @=@= ~@= ( )@n=@nGültige Operatoren:@nand or on off @=@= ~@= ( )@n
Clear=Löschen Clear=Löschen
Debug=Debug Debug=Debug
Help=Hilfe
Inputs=Eingänge Inputs=Eingänge
Outputs=Ausgänge Outputs=Ausgänge
Rules=Regeln Rules=Regeln
@ -661,6 +672,11 @@ Update=Update
Store=Speichern Store=Speichern
### logic_block.lua ###
### sequencer2.lua ###
Help=Hilfe
### lye.lua ### ### lye.lua ###
Lye=Lauge Lye=Lauge
@ -722,6 +738,7 @@ TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle
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
Destination position is protected=Zielposition ist geschützt Destination position is protected=Zielposition ist geschützt
Error: Distance > 100 m !!=Fehler: Distanz > 100 m !!
Handover to A=Übergabe an A Handover to A=Übergabe an A
Handover to B=Übergabe an B Handover to B=Übergabe an B
Maximum Speed=Maximalgeschwindigkeit Maximum Speed=Maximalgeschwindigkeit
@ -957,12 +974,24 @@ stopped=gestoppt
### sequencer2.lua ### ### sequencer2.lua ###
- 'goto <num>' (jump to another line)@n= - 'goto <num>' (springe zu einer anderen Zeile)@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
- 1 corresponds to 100 ms@n= - 1 entspricht 100 ms@n
- 50000 corresponds to 4 game days@n= - 50000 entspricht 4 Spieltagen@n
'[<num>] <command>'@n='[<num>] <command>'@n
<command> is one of the following:@n=<command> ist eines der folgenden:@n
<num> is a number from 1 to 50000 and is@n=<num> ist eine Nummer von 1 bis 50000 und ist@n
@n=@n
Commands=Kommandos Commands=Kommandos
Example:@n=Beispiel:
Invalid command!=Ungültiges Kommando! Invalid command!=Ungültiges Kommando!
Start=Start Start=Start
Stop=Stopp Stop=Stopp
Syntax:@n=Syntax:@n
TA4 Sequencer=TA4 Sequenzer TA4 Sequencer=TA4 Sequenzer
running=läuft running=läuft
the timeslot when the command is executed.@n=der Zeitpunkt, wenn der Befehl ausgeführt wird.@n
### sequencer2.lua ### ### sequencer2.lua ###
### submenu.lua ### ### submenu.lua ###
@ -1074,7 +1103,6 @@ Size=Größe
TA4 8x2000 Chest=TA4 8x2000 Kiste TA4 8x2000 Chest=TA4 8x2000 Kiste
Unlock=Entsperren Unlock=Entsperren
Unlock connected chest@nif all slots are below 2000=Nachfolgende Kiste entsperren,@nsofern alle Speicherplätze <= 2000 Unlock connected chest@nif all slots are below 2000=Nachfolgende Kiste entsperren,@nsofern alle Speicherplätze <= 2000
keep assignment=Zuordnung beibehalten
right to left=von rechts nach links right to left=von rechts nach links
### ta4_doser.lua ### ### ta4_doser.lua ###

View File

@ -118,7 +118,6 @@ TA4 Button/Switch=
### signallamp_4x.lua ### ### signallamp_4x.lua ###
Command= Command=
Command to be sent=
### button.lua ### ### button.lua ###
### cart_detector.lua ### ### cart_detector.lua ###
@ -142,11 +141,19 @@ Insert destination node number(s)=
Save= Save=
### button.lua ###
### signallamp_4x.lua ###
Command to be sent=
### button_4x.lua ### ### button_4x.lua ###
Command to be sent (ignored for switches)=
Label= Label=
Label for the button= Label for the button=
Momentary button or on/off switch=
TA4 4x Button= TA4 4x Button=
Type=
### button_4x.lua ### ### button_4x.lua ###
### signallamp_4x.lua ### ### signallamp_4x.lua ###
@ -615,6 +622,11 @@ Allow public access to the tank=
Liquid Tank= Liquid Tank=
To add liquids punch@nthe tank@nwith a liquid container= To add liquids punch@nthe tank@nwith a liquid container=
### liquid_lib.lua ###
### ta4_chest.lua ###
keep assignment=
### liquid_pipe.lua ### ### liquid_pipe.lua ###
TA Junction Pipe= TA Junction Pipe=
@ -642,7 +654,6 @@ no usable water=
@nValid operators:@nand or on off me @=@= ~@= ( )@n= @nValid operators:@nand or on off me @=@= ~@= ( )@n=
Clear= Clear=
Debug= Debug=
Help=
Inputs= Inputs=
Outputs= Outputs=
Rules= Rules=
@ -661,6 +672,11 @@ Update=
Store= Store=
### logic_block.lua ###
### sequencer2.lua ###
Help=
### lye.lua ### ### lye.lua ###
Lye= Lye=
@ -722,6 +738,7 @@ TA4 Streetlamp Solar Cell=
Click on all blocks that shall be moved= Click on all blocks that shall be moved=
Destination position is protected= Destination position is protected=
Error: Distance > 100 m !!=
Handover to A= Handover to A=
Handover to B= Handover to B=
Maximum Speed= Maximum Speed=
@ -957,12 +974,24 @@ stopped=
### sequencer2.lua ### ### sequencer2.lua ###
- 'goto <num>' (jump to another line)@n=
- 'send <node num> <cmnd>' (techage command)@n=
- 'stop' (stop the execution)@n=
- 1 corresponds to 100 ms@n=
- 50000 corresponds to 4 game days@n=
'[<num>] <command>'@n=
<command> is one of the following:@n=
<num> is a number from 1 to 50000 and is@n=
@n=
Commands= Commands=
Example:@n=
Invalid command!= Invalid command!=
Start= Start=
Stop= Stop=
Syntax:@n=
TA4 Sequencer= TA4 Sequencer=
running= running=
the timeslot when the command is executed.@n=
### sequencer2.lua ### ### sequencer2.lua ###
### submenu.lua ### ### submenu.lua ###
@ -1074,7 +1103,6 @@ Size=
TA4 8x2000 Chest= TA4 8x2000 Chest=
Unlock= Unlock=
Unlock connected chest@nif all slots are below 2000= Unlock connected chest@nif all slots are below 2000=
keep assignment=
right to left= right to left=
### ta4_doser.lua ### ### ta4_doser.lua ###

View File

@ -720,9 +720,15 @@ minetest.register_node("techage:ta4_movecontroller", {
unmark_all(name) unmark_all(name)
meta:set_string("formspec", formspec(nvm, meta)) meta:set_string("formspec", formspec(nvm, meta))
elseif fields.store then elseif fields.store then
meta:set_string("distance", fields.distance) local dist = to_vector(fields.distance)
nvm.lpos2 = table_add(nvm.lpos1, to_vector(fields.distance)) local l = math.hypot(dist.x, math.hypot(dist.y, dist.z))
nvm.pos_2to1 = false if l <= 100 then
meta:set_string("distance", fields.distance)
nvm.lpos2 = table_add(nvm.lpos1, to_vector(fields.distance))
nvm.pos_2to1 = false
else
meta:set_string("status", S("Error: Distance > 100 m !!"))
end
meta:set_string("formspec", formspec(nvm, meta)) meta:set_string("formspec", formspec(nvm, meta))
elseif fields.moveAB then elseif fields.moveAB then
meta:set_string("status", "") meta:set_string("status", "")

View File

@ -18,6 +18,25 @@ local S = techage.S
local logic = techage.logic local logic = techage.logic
local HELP = S("Syntax:\n") ..
S("'[<num>] <command>'\n") ..
S("\n") ..
S("<num> is a number from 1 to 50000 and is\n") ..
S("the timeslot when the command is executed.\n") ..
S(" - 1 corresponds to 100 ms\n") ..
S(" - 50000 corresponds to 4 game days\n") ..
S("\n") ..
S("<command> is one of the following:\n") ..
S(" - 'send <node num> <cmnd>' (techage command)\n") ..
S(" - 'goto <num>' (jump to another line)\n") ..
S(" - 'stop' (stop the execution)\n") ..
S("\n") ..
S("Example:\n") ..
" -- move controller commands\n" ..
" [1] send 1234 a2b\n" ..
" [30] send 1234 b2a\n" ..
" [60] goto 1 -- keep going"
local function strsplit(text) local function strsplit(text)
text = text:gsub("\r\n", "\n") text = text:gsub("\r\n", "\n")
text = text:gsub("\r", "\n") text = text:gsub("\r", "\n")
@ -69,6 +88,9 @@ local function compile(s, tRes)
if not idx then if not idx then
return exception(tRes, i, "Syntax error!") return exception(tRes, i, "Syntax error!")
end end
if idx > 50000 then
return exception(tRes, i, "Order error!")
end
if idx <= old_idx then if idx <= old_idx then
return exception(tRes, i, "Order error!") return exception(tRes, i, "Order error!")
end end
@ -126,9 +148,6 @@ local function formspec(nvm, meta)
"textarea[0.3,0.2;10,8.3;text;;"..text.."]" "textarea[0.3,0.2;10,8.3;text;;"..text.."]"
return "size[10,8]" .. return "size[10,8]" ..
default.gui_bg ..
default.gui_bg_img ..
default.gui_slots ..
style .. style ..
"tabheader[0,0;tab;edit,help;1;;true]" .. "tabheader[0,0;tab;edit,help;1;;true]" ..
"label[0.1,-0.2;" .. S("Commands") .. ":]" .. "label[0.1,-0.2;" .. S("Commands") .. ":]" ..
@ -143,14 +162,10 @@ end
local function formspec_help(meta) local function formspec_help(meta)
local text = "" --minetest.formspec_escape("hepl") local text = "" --minetest.formspec_escape("hepl")
return "size[10,8]".. return "size[10,8]"..
default.gui_bg.. "style_type[textarea;font=mono;textcolor=#FFFFFF;border=false]"..
default.gui_bg_img..
default.gui_slots..
"style_type[textarea;font=mono;textcolor=#FFFFFF]"..
"tabheader[0,0;tab;edit,help;2;;true]".. "tabheader[0,0;tab;edit,help;2;;true]"..
"label[0,-0.2;Functions:]".. "textarea[0.3,0.3;10,9;;" .. S("Help") .. ":;"..minetest.formspec_escape(HELP).."]" ..
--"dropdown[0.3,0.2;10,8.3;functions;"..items..";"..pos.."]".. "background[0.1,0.3;9.8,8.0;techage_form_mask.png]"
"textarea[0.3,1.3;10,8;help;Help:;"..text.."]"
end end
local function restart_timer(pos, time) local function restart_timer(pos, time)
@ -200,15 +215,18 @@ local function on_receive_fields(pos, formname, fields, player)
local mem = techage.get_mem(pos) local mem = techage.get_mem(pos)
nvm.running = nvm.running or false nvm.running = nvm.running or false
print(1, dump(fields))
if fields.stop then if fields.stop then
nvm.running = false nvm.running = false
minetest.get_node_timer(pos):stop() minetest.get_node_timer(pos):stop()
logic.infotext(meta, S("TA4 Sequencer"), S("stopped")) logic.infotext(meta, S("TA4 Sequencer"), S("stopped"))
elseif not nvm.running then elseif not nvm.running then
if fields.help then print(2)
meta:set_string("formspec", formspec_help(nvm, meta)) if fields.tab == "2" then
print(3)
meta:set_string("formspec", formspec_help(meta))
return return
elseif fields.edit then elseif fields.tab == "1" then
meta:set_string("formspec", formspec(nvm, meta)) meta:set_string("formspec", formspec(nvm, meta))
return return
end end

View File

@ -495,6 +495,60 @@ Diesen Zähler kann man über das Kommando 'count' abfragen und über 'reset' zu
[ta4_detector|image] [ta4_detector|image]
### TA4 Move Controller
Der TA4 Move Controller ist ähnlich zum "Door Controller 2", aber die ausgewählten Blöcke werden nicht entfernt, sondern können bewegt werden.
Da die bewegten Blöcke Spieler und Mobs mitnehmen können, die auf dem Block stehen, können damit Fahrstühle und ähnliche Transportsysteme gebaut werden.
Anleitung:
- Controller setzen und die Blöcke, die bewegt werden sollen, über das Menü an-trainieren (Es können bis zu 16 Blöcke an-trainiert werden)
- die "Flugstrecke" muss über eine x,y,z Angabe (relativ) eingegeben werden (die maximale Distanz beträgt 100 m)
- mit den Menü-Tasten "Bewege A-B" sowie "Bewege B-A" kann die Bewegung getestet werden
- man kann auch durch Wände oder andere Blöcke fliegen
- auch die Zielposition für die Blöcke kann belegt sein. Die Blöcke werden in diesem Falle "unsichtbar" gespeichert. Dies ist für Schiebetüren und ähnliches gedacht
- Über das Gabelschlüssel-Menü kann im Controller auch ein "handover" programmiert werden. Durch Eingabe einer Blocknummer werden die Blöcke dann an den nächsten Move Controller übergeben. So lassen sich auch zusammenhängende Bewegungen über mehrere Move Controller realisieren.
Der Move Controller unterstützt folgende techage Kommandos:
- `a2b` Bewege Block von A nach B
- `b2a` Bewege Block von B nach A
- `move` Bewege Block auf die andere Seite
[ta4_movecontroller|image]
### TA4 Sequenzer
über den TA4 Sequenzer können ganze Abläufe programmiert werden. Hier ein Beispiel:
```
-- this is a comment
[1] send 1234 a2b
[30] send 1234 b2a
[60] goto 1
```
- Jede Zeile beginnt mit einem Nummer, welche einem Zeitpunkt entspricht `[<num>]`
- Für Zeitpunkte sind Werte von 1 bis 50000 zulässig
- 1 entspricht 100 ms, 50000 entspricht in etwa 4 Spieltagen
- Leerzeilen oder Kommentare sind erlaubt (`-- comment`)
- Mit `send <num> <command> <data>` kann man ein Kommando an einen Block senden
- Mit `goto <num>` kann man an eine andere Zeile/Zeitpunkt springen
- Mit `stop` kann man den Sequenzer verzögert stoppen, so dass er kein neues Kommando
von einem Taster oder anderem Block annimmt (um eine Bewegung abzuschließen)
Ohne `stop` geht der Sequenzer sofort nach dem letzten Kommando in den stopped Modus.
Der TA4 Sequenzer unterstützt folgende techage Kommandos:
- `goto <num>` Zu einer Kommandozeile springen und damit den Sequenzer starten
- `stop` Den Sequenzer anhalten
Das `goto` Kommando wird nur angenommen, wenn der Sequenzer gestoppt ist.
[ta4_sequencer|image]
## TA4 Lampen ## TA4 Lampen

View File

@ -488,6 +488,60 @@ This counter can be queried with the 'count' command and reset with 'reset'.
[ta4_detector|image] [ta4_detector|image]
### TA4 Move Controller
The TA4 Move Controller is similar to "Door Controller 2", but the selected blocks are not removed, but can be moved.
Since the moving blocks can take players and mobs standing on the block with them, elevators and similar transport systems can be built with them.
Instructions:
- Set the controller and train the blocks to be moved via the menu (up to 16 blocks can be trained)
- the "flight route" must be entered via an x, y, z specification (relative) (the maximum distance is 100 m)
- The movement can be tested with the menu buttons "Move A-B" and "Move B-A"
- you can also fly through walls or other blocks
- The target position for the blocks can also be occupied. In this case, the blocks are saved "invisibly". This is intended for sliding doors and the like
- A "handover" can also be programmed in the controller via the open-ended wrench menu. By entering a block number, the blocks are then transferred to the next move controller. In this way, connected movements can also be implemented using several Move Controllers.
The Move Controller supports the following techage commands:
- `a2b` Move block from A to B.
- `b2a` Move block from B to A.
- `move` Move block to the other side
[ta4_movecontroller|image]
### TA4 Sequencer
Entire processes can be programmed using the TA4 sequencer. Here's an example:
```
-- this is a comment
[1] send 1234 a2b
[30] send 1234 b2a
[60] goto 1
```
- Each line begins with a number which corresponds to a point in time `[<num>]`
- Values from 1 to 50000 are permitted for times
- 1 corresponds to 100 ms, 50000 corresponds to about 4 game days
- Empty lines or comments are allowed (`-- comment`)
- With `send <num> <command> <data>` you can send a command to a block
- With `goto <num>` you can jump to another line / point in time
- With `stop` you can stop the sequencer with a delay so that it does not receive a new command
accepts from a button or other block (to complete a movement)
Without `stop`, the sequencer goes into stopped mode immediately after the last command.
The TA4 sequencer supports the following techage commands:
- `goto <num>` Jump to a command line and start the sequencer
- `stop` Stop the sequencer
The `goto` command is only accepted when the sequencer is stopped.
[ta4_sequencer|image]
## TA4 Lamps ## TA4 Lamps

View File

@ -186,6 +186,8 @@
- [TA4 Spieler Detektor / Player Detector](./manual_ta4_DE.md#ta4-spieler-detektor--player-detector) - [TA4 Spieler Detektor / Player Detector](./manual_ta4_DE.md#ta4-spieler-detektor--player-detector)
- [TA4 Zustandssammler / State Collector](./manual_ta4_DE.md#ta4-zustandssammler--state-collector) - [TA4 Zustandssammler / State Collector](./manual_ta4_DE.md#ta4-zustandssammler--state-collector)
- [TA4 Detektor / Detector](./manual_ta4_DE.md#ta4-detektor--detector) - [TA4 Detektor / Detector](./manual_ta4_DE.md#ta4-detektor--detector)
- [TA4 Move Controller](./manual_ta4_DE.md#ta4-move-controller)
- [TA4 Sequenzer](./manual_ta4_DE.md#ta4-sequenzer)
- [TA4 Lampen](./manual_ta4_DE.md#ta4-lampen) - [TA4 Lampen](./manual_ta4_DE.md#ta4-lampen)
- [TA4 LED Pflanzenlampe / TA4 LED Grow Light](./manual_ta4_DE.md#ta4-led-pflanzenlampe--ta4-led-grow-light) - [TA4 LED Pflanzenlampe / TA4 LED Grow Light](./manual_ta4_DE.md#ta4-led-pflanzenlampe--ta4-led-grow-light)
- [TA4 LED Straßenlampe / TA4 LED Street Lamp](./manual_ta4_DE.md#ta4-led-straßenlampe--ta4-led-street-lamp) - [TA4 LED Straßenlampe / TA4 LED Street Lamp](./manual_ta4_DE.md#ta4-led-straßenlampe--ta4-led-street-lamp)

View File

@ -186,6 +186,8 @@
- [TA4 Player Detector](./manual_ta4_EN.md#ta4-player-detector) - [TA4 Player Detector](./manual_ta4_EN.md#ta4-player-detector)
- [TA4 State Collector](./manual_ta4_EN.md#ta4-state-collector) - [TA4 State Collector](./manual_ta4_EN.md#ta4-state-collector)
- [TA4 Detector](./manual_ta4_EN.md#ta4-detector) - [TA4 Detector](./manual_ta4_EN.md#ta4-detector)
- [TA4 Move Controller](./manual_ta4_EN.md#ta4-move-controller)
- [TA4 Sequencer](./manual_ta4_EN.md#ta4-sequencer)
- [TA4 Lamps](./manual_ta4_EN.md#ta4-lamps) - [TA4 Lamps](./manual_ta4_EN.md#ta4-lamps)
- [TA4 LED Grow Light](./manual_ta4_EN.md#ta4-led-grow-light) - [TA4 LED Grow Light](./manual_ta4_EN.md#ta4-led-grow-light)
- [TA4 Street Lamp](./manual_ta4_EN.md#ta4-street-lamp) - [TA4 Street Lamp](./manual_ta4_EN.md#ta4-street-lamp)