display bugfix, TA4 state collector, button and player detector added

master
Joachim Stolberg 2020-03-15 23:50:15 +01:00
parent d9ee957dad
commit 4d67e95c17
15 changed files with 444 additions and 201 deletions

View File

@ -63,7 +63,7 @@ local function formspec(self, pos, nvm)
"label[1.6,0.9;"..S("Start level").."]"..
"dropdown[0,1.8;1.5;depth;"..depth_list..";"..Depth2Idx[nvm.quarry_depth].."]"..
"label[1.6,1.9;"..S("Digging depth").."]"..
"label[0,2.9;"..S("level=")..level..", "..S("pos=")..index.."/25]"..
"label[0,2.9;"..S("level").."="..level..", "..S("pos=")..index.."/25]"..
"list[context;main;5,0.8;3,3;]"..
"image[4,0.8;1,1;"..techage.get_power_image(pos, nvm).."]"..
"image_button[4,2.8;1,1;".. self:get_state_button_image(nvm) ..";state_button;]"..

View File

@ -20,6 +20,10 @@ techage.Items = {
ta1_gravelsieve = "techage:sieve3",
hammer = "techage:hammer_bronze",
meridium = "techage:meridium_ingot",
baborium = "techage:stone_with_baborium",
bauxite = "techage:bauxite_stone",
usmium = "techage:usmium_nuggets",
oil = "techage:oil_source",
ta1_hopper = "techage:hopper_ta1",
wlanchip = "techage:ta4_wlanchip",
tube = "techage:tubeS",
@ -141,5 +145,8 @@ techage.Items = {
ta4_lua_server = "techage:ta4_server",
ta4_sensor_chest = "techage:ta4_sensor_chest",
ta4_terminal = "techage:ta4_terminal",
ta4_button = "techage:ta4_button_off",
ta4_playerdetector = "techage:ta4_playerdetector_off",
ta4_collector = "techage:ta4_collector",
--ta4_ "",
}

View File

@ -2,8 +2,6 @@ techage.manual_DE = {}
techage.manual_DE.aTitel = {
"1,Tech Age Mod",
"2,Software Update",
"3,Was hat sich am Spiel geändert?",
"2,Hinweise",
"2,Erze und Mineralien",
"3,Meridium",
@ -150,6 +148,11 @@ techage.manual_DE.aTitel = {
"3,TA4 Lua Server",
"3,TA4 Sensor Kiste/Chest",
"3,TA4 Lua Controller Terminal",
"2,TA4 Logik-/Schalt-Blöcke",
"3,TA4 Taster/Schalter / Button/Switch",
"3,TA4 Spieler Detektor / Player Detector",
"3,TA4 Collector",
"3, ",
"2,Weitere TA4 Blöcke",
"3,TA4 Tank / TA4 Tank",
"3,TA4 Pumpe / TA4 Pump",
@ -174,31 +177,6 @@ techage.manual_DE.aText = {
"\n"..
"\n"..
"\n",
"Zum 23.02.2020 gab es ein größeres Software-Update\\, was einige Änderungen und aus Sicht der Spieler auch \"Probleme\" mit sich bringt. Das Software-Update war aber nötig\\, um die techage Mod weiter ausbauen und entwickeln zu können.\n"..
"\n"..
"Da sich mit dem Update die Art und Weise wie Daten der Maschinen gespeichert werden\\, geändert hat\\, sind nach dem Update alle Maschinen erst einmal ohne Daten und damit Funktionslos und müssen \"repariert\" werden. \n"..
"\n"..
"Dazu gibt es ein Reparaturset\\, bestehend aus dem Schraubenschlüssel (Techage Info Werkzeug) und der Werkzeugtasche (TechAge Reparaturset). Beide Werkzeuge können gecraftet werden.\n"..
"\n"..
" - Mit dem Schraubenschlüssel können die Verbindungen über das Stromnetz geprüft werden. Dazu einfach auf einen Generator oder eine Junction klicken\\, dann werden alle verbundenen Blöcke in der Umgebung markiert. Bei Unterbrechungen immer den letzten markierten Block (Junction) in der Kette neu setzen.\n"..
" - normale Maschinen müssen nur neu gestartet werden. Hilft dies nicht\\, einfach neu setzen.\n"..
" - Generatoren (auch Akkus und Brennstoffzelle) können entweder neu gesetzt\\, oder mit dem Reparaturset angeklickt und damit repariert werden.\n"..
" - Die Trägermodule der Solarzellen müssen ebenfalls mit dem \"Reparaturset\" angeklickt werden.\n"..
" - Die Stromschalterbox und die Stromschalter müssen neu gesetzt werden. Die Stromschalterbox verhält sich beim Setzen nun ähnlich wie Stromkabel.\n"..
" - Der TA4 Solar Wechselrichter besteht jetzt nur noch aus einem Block. Der zweite Block muss entfernt und durch ein rotes Kabel ersetzt werden.\n"..
" - Wasserstoff ist nun wie eine Flüssigkeit zu behandeln. Elektrolyseur und Brennstoffzelle müssen daher nicht mehr über Röhren und Schieber sondern über Pumpen und Flüssigkeitsleitungen miteinander verbunden werden.\n"..
"\n",
" - der TA1 Hopper ist weg\\, dafür kann jetzt der Hopper aus der Mod Minecart genutzt werden.\n"..
" - Blöcke für Wasser und andere Flüssigkeiten (Boiler\\, Tanks) haben kein Inventory mehr. Diese muss man nun füllen bzw. leeren\\, in dem man mit einem vollen bzw. leeren Behälter auf den Block klickt. Bei Wasser ist das der Eimer\\, bei Öl und anderen Flüssigkeiten die Fässer oder Kanister.\n"..
" - für TA2 und TA3 gibt er jetzt einen Steinbrecher (Quarry) zum Abbau von Steinen.\n"..
" - Die Stromschalterbox und die Stromschalter wurden überarbeitet und sind nun leichter zu Platzieren.\n"..
" - Alle Menüs werden nun automatisch und zyklisch aktualisiert\\, den \"Update\" Button gibt es nicht mehr.\n"..
" - Die Tanks können nun nicht mehr direkt über Schieber gefüllt oder geleert werden. Hierzu ist zusätzlich ein TA Einfülltrichter (TA Liquid Filler) notwendig.\n"..
" - Gas\\, was beim Destillieren entsteht (Propangas)\\, kann über den Reformer in Wasserstoff umgewandelt und dann zu Strom gemacht werden.\n"..
" - Der TA4 Solar Wechselrichter besteht jetzt nur noch aus einem Block.\n"..
" - Generator und Wärmetauscher beim Energiespeicher arbeiten nun unabhängig von einander und können auch einzeln mit dem Stromnetz verbunden sein.\n"..
" - \n"..
"\n",
"Diese Dokumentation ist sowohl \"ingame\" (Block Konstruktionsplan) als auch auf GitHub als MD-Files verfügbar.\n"..
"\n"..
" - Link: https://github.com/joe7575/techage/blob/master/manuals/toc_DE.md\n"..
@ -223,20 +201,32 @@ techage.manual_DE.aText = {
" - Bauxit - ein Aluminiumerz\\, was in TA4 zur Herstellung von Aluminium benötigt wird\n"..
"\n",
"Meridium ist eine Legierung aus Stahl und Mesekristallen. Meridium Ingots können mit dem Kohlebrenner aus Stahl und Mesesplitter hergestellt werden. Meridium leuchtet im Dunkeln. Auch Werkzeuge aus Meridium leuchten und sind daher im Untertagebau sehr hilfreich.\n"..
"\n"..
"\n"..
"\n",
"Usmium kommt nur als Nuggets vor und kann nur beim Waschen von Kies mit der TA2 Kieswaschanlage gewonnen werden.\n"..
"\n"..
"\n"..
"\n",
"Baborium wird nur im Untertagebau gewonnen. Baborium findet man nur in Stein in einer Höhe zwischen -250 und -340 Meter.\n"..
"\n"..
"\n"..
"\n",
"Erdöl kann nur mit Hilfe des Explorers gefunden und mit Hilfe entsprechender TA3 Maschinen gefördert werden. Siehe TA3.\n"..
"\n"..
"\n"..
"\n",
"Bauxit wird nur im Untertagebau gewonnen. Bauxit findet man nur in Stein in einer Höhe zwischen -50 und -500 Meter.\n"..
"Es wird zur Herstellung von Aluminium benötigt\\, was vor allem in TA4 Verwendung findet.\n"..
"\n"..
"\n"..
"\n",
" - 28.09.2019: Um Solaranlage erweitert\n"..
" - 05.10.2019: Daten zur Solaranlage und Beschreibung zum Wechselrichter und zum Power-Terminal geändert\n"..
" - 18.11.2019: Kapitel für Erze\\, Reaktor\\, Aluminium\\, Silo\\, Bauxit\\, Ofenheizung\\, Kieswaschanlage hinzugefügt\n"..
" - 22.02.2020: Korrekturen und Kapitel zum Update\n"..
" - 29.02.2020: ICTA Controller hinzugefügt und weitere Korrekturen\n"..
" - 14.03.2020 Lua Controller hinzugefügt und weitere Korrekturen\n"..
"\n",
"In TA1 geht es darum\\, mit einfachen Werkzeugen und Gerätschaften ausreichend Erze zu schürfen und Holzkohle herzustellen\\, so dass damit TA2 Maschinen hergestellt und betrieben werden können.\n"..
"\n"..
@ -299,7 +289,7 @@ techage.manual_DE.aText = {
"\n",
"Der Hopper aus der Mod \"Minecart\" dient in erster Linie zum Be- und Entladen von Minecarts. Er saugt Gegenstände (items) von oben ein und gibt diese nach rechts weiter. Beim Platzieren des Trichters muss daher auf die Ausgaberichtung geachtet werden.\n"..
"\n"..
"Der Trichter kann aber auch Items aus Kisten (chest) ziehen\\, sofern die Kiste auf dem Trichter steht. \n"..
"Der Trichter kann aber auch Items aus Kisten (chest) ziehen\\, sofern die Kiste neben oder auf dem Trichter steht. \n"..
"\n"..
"Der Trichter kann auch Items in Kisten legen\\, sofern die Kiste neben dem Trichter steht.\n"..
"\n"..
@ -1234,6 +1224,18 @@ techage.manual_DE.aText = {
"\n"..
"\n",
"",
"Beim TA4 Taster/Schalter hat sich nur das Aussehen geändert. Die Funktionalität ist gleich wie beim TA3 Taster/Schalter.\n"..
"\n"..
"\n"..
"\n",
"Beim TA4 Spieler Detektor hat sich nur das Aussehen geändert. Die Funktionalität ist gleich wie beim TA3 Spieler Detektor.\n"..
"\n"..
"\n"..
"\n",
"\n"..
"\n",
"",
"",
"Siehe TA3 Tank.\n"..
"\n"..
"In einen TA4 Tank passen 2000 Einheiten oder 200 Fässer einer Flüssigkeit.\n"..
@ -1262,13 +1264,11 @@ techage.manual_DE.aItemName = {
"wlanchip",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"meridium",
"usmium",
"baborium",
"oil",
"bauxite",
"",
"techage_ta1",
"",
@ -1409,6 +1409,11 @@ techage.manual_DE.aItemName = {
"ta4_sensor_chest",
"ta4_terminal",
"",
"ta4_button",
"ta4_playerdetector",
"ta4_collector",
"",
"",
"ta4_tank",
"ta4_pump",
"ta4_furnaceheater",
@ -1426,8 +1431,6 @@ techage.manual_DE.aPlanTable = {
"",
"",
"",
"",
"",
"coalpile",
"coalburner",
"",
@ -1570,5 +1573,10 @@ techage.manual_DE.aPlanTable = {
"",
"",
"",
"",
"",
"",
"",
"",
}

View File

@ -14,6 +14,7 @@
local NUM_ROWS = 5
local RADIUS = 6
local Param2ToFacedir = {[0] = 0, 0, 3, 1, 2, 0}
lcdlib.register_display_entity("techage:display_entity")
@ -32,7 +33,7 @@ local function on_timer(pos)
local node = minetest.get_node(pos)
-- check if display is loaded and a player in front of the display
if node.name == "techage:ta4_display" then
local dir = minetest.facedir_to_dir((node.param2 + 2) % 4)
local dir = minetest.facedir_to_dir(Param2ToFacedir[node.param2 % 6])
local pos2 = vector.add(pos, vector.multiply(dir, RADIUS))
for _, obj in pairs(minetest.get_objects_inside_radius(pos2, RADIUS)) do
if obj:is_player() then

View File

@ -174,11 +174,12 @@ else
dofile(MP.."/logic/cart_detector.lua")
dofile(MP.."/logic/gateblock.lua")
dofile(MP.."/logic/doorblock.lua")
dofile(MP.."/logic/collector.lua")
-- Test
dofile(MP.."/recipe_checker.lua")
dofile(MP.."/.test/sink.lua")
--dofile(MP.."/.test/meta_node.lua")
dofile(MP.."/.test/state_node.lua")
-- Solar
dofile(MP.."/solar/minicell.lua")

View File

@ -102,6 +102,8 @@ Network Data=Netzwerkdaten
No network or active generator available!=Kein Stromnetz oder aktiver Generator verfügbar
No plan available=Kein Plan verfügar
No wind at this altitude!=Kein Wind auf dieser Höhe
Node number to send the events to=Knotennummer zum Senden der Events
Node numbers to read the states from=Knotennummern zum Lesen der Zustände
Node owner=Blockbesitzer
Number of all nodes=Anzahl aller Blöcke
Oil=Öl
@ -137,6 +139,7 @@ Remove derrick=Entferne Ölturm
Rinsing=Waschen
River Water Barrel=Flusswasserfass
Save=Speichern
Send an event if state is equal or larget than=Senden ein Event wenn Status größer oder gleich als
Send signal if nodes have been:=Sende ein Signal falls Blöcke:
Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken
Sieved Basalt Gravel=Basaltkies gesiebt
@ -250,6 +253,7 @@ TA3 Timer=TA3 Timer
TA3 Tiny Power Generator=TA3 Kleiner Stromgenerator
TA3 Turbine=TA3 Turbine
TA3 Vacuum Tube=TA3 Vakuumröhre
TA4 Button/Switch=TA4 Schalter/Taster
TA4 Carbon Fiber=TA4 Kohlefaser
TA4 Derrick=TA4 Bohrturm
TA4 Doser=TA4 Dosierer
@ -267,6 +271,7 @@ TA4 Low Power Box=TA4 Niederspannungsverteilerbox
TA4 Low Power Cable=TA4 Niederspannungskabel
TA4 Pillar=TA4 Säule
TA4 Pipe Inlet=TA4 Rohrzulauf
TA4 Player Detector=TA4 Spieler Detektor
TA4 Protected Chest=TA4 Gesicherte Kiste
TA4 Pump=TA4 Pumpe
TA4 RAM Chip=RAM Chip
@ -283,6 +288,7 @@ TA4 Solar Carrier Module B=TA4 Solar Trägermodul U
TA4 Solar Carrier Module T=TA4 Solar Trägermodul O
TA4 Solar Inverter=TA4 Solar Wechselrichter
TA4 Solar Module=TA4 Solarmodul
TA4 State Collector=TA4 Zuständesammler
TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle
TA4 Tank=TA4 Tank
TA4 Turbine=TA4 Turbine
@ -349,7 +355,7 @@ did you check the plan?=hast du den Plan geprüft?
empty=leer
full=voll
inlet/pipe error=Einlass/Röhrenfehler
level@==Ebene
level=Ebene
light=Licht
loaded=geladen
needs power=benötigt Strom
@ -372,9 +378,3 @@ storage empty?=Speicher leer?
water temperature=Wassertemperatur
wrong storage diameter=Falscher Wärmespeicher-Durchmesser
##### not used anymore #####
Secondary needed=Sekundär benötigt
Number of nodes=Anzahl Blöcke
TA4 Solar Inverter DC=TA4 Solar Wechselrichter DC
Secondary available=Sekundär verfügbar
Primary available=Primär verfügbar
Primary needed=Primär benötigt

View File

@ -100,6 +100,8 @@ Network Data=
No network or active generator available!=
No plan available=
No wind at this altitude!=
Node number to send the events to=
Node numbers to read the states from=
Node owner=
Number of all nodes=
Oil=
@ -135,6 +137,7 @@ Remove derrick=
Rinsing=
River Water Barrel=
Save=
Send an event if state is equal or larget than=
Send signal if nodes have been:=
Show all forceload blocks in a 64x64x64 range=
Sieved Basalt Gravel=
@ -248,6 +251,7 @@ TA3 Timer=
TA3 Tiny Power Generator=
TA3 Turbine=
TA3 Vacuum Tube=
TA4 Button/Switch=
TA4 Carbon Fiber=
TA4 Derrick=
TA4 Doser=
@ -265,6 +269,7 @@ TA4 Low Power Box=
TA4 Low Power Cable=
TA4 Pillar=
TA4 Pipe Inlet=
TA4 Player Detector=
TA4 Protected Chest=
TA4 Pump=
TA4 RAM Chip=
@ -281,6 +286,7 @@ TA4 Solar Carrier Module B=
TA4 Solar Carrier Module T=
TA4 Solar Inverter=
TA4 Solar Module=
TA4 State Collector=
TA4 Streetlamp Solar Cell=
TA4 Tank=
TA4 Turbine=
@ -347,7 +353,7 @@ did you check the plan?=
empty=
full=
inlet/pipe error=
level@==
level=
light=
loaded=
needs power=

View File

@ -8,19 +8,25 @@
GPL v3
See LICENSE.txt for more information
Logic button
TA3 & TA4 Logic button
]]--
-- for lazy programmers
local M = minetest.get_meta
local S = techage.S
local NDEF = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}) end
local logic = techage.logic
local function switch_on(pos)
local cycle_time = M(pos):get_int("cycle_time")
logic.swap_node(pos, "techage:ta3_button_on")
local name = techage.get_node_lvm(pos).name
if name == "techage:ta3_button_off" then
logic.swap_node(pos, "techage:ta3_button_on")
elseif name == "techage:ta4_button_off" then
logic.swap_node(pos, "techage:ta4_button_on")
end
logic.send_on(pos, M(pos), cycle_time)
minetest.sound_play("techage_button", {
pos = pos,
@ -30,7 +36,12 @@ local function switch_on(pos)
end
local function switch_off(pos, is_button)
logic.swap_node(pos, "techage:ta3_button_off")
local name = techage.get_node_lvm(pos).name
if name == "techage:ta3_button_on" then
logic.swap_node(pos, "techage:ta3_button_off")
elseif name == "techage:ta4_button_on" then
logic.swap_node(pos, "techage:ta4_button_off")
end
logic.send_off(pos, M(pos))
if not is_button then
minetest.sound_play("techage_button", {
@ -52,6 +63,86 @@ local function formspec(meta)
"button_exit[2,4;3,1;exit;"..S("Save").."]"
end
local function on_receive_fields(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then
return
end
local meta = M(pos)
if not techage.check_numbers(fields.numbers, player:get_player_name()) then
return
end
meta:set_string("numbers", fields.numbers)
if fields.public then
meta:set_string("public", fields.public)
end
local cycle_time = nil
if fields.type == "switch" then
meta:set_int("cycle_idx", 1)
cycle_time = 0
elseif fields.type == "button 1s" then
meta:set_int("cycle_idx", 2)
cycle_time = 1
elseif fields.type == "button 2s" then
meta:set_int("cycle_idx", 3)
cycle_time = 2
elseif fields.type == "button 4s" then
meta:set_int("cycle_idx", 4)
cycle_time = 4
elseif fields.type == "button 8s" then
meta:set_int("cycle_idx", 5)
cycle_time = 8
elseif fields.type == "button 16s" then
meta:set_int("cycle_idx", 6)
cycle_time = 16
elseif fields.type == "button 32s" then
meta:set_int("cycle_idx", 7)
cycle_time = 32
end
if cycle_time ~= nil then
meta:set_int("cycle_time", cycle_time)
end
logic.infotext(meta, NDEF(pos).description)
if fields.exit then
meta:set_string("formspec", nil)
meta:set_string("fixed" , "true")
else
meta:set_string("formspec", formspec(meta))
end
end
local function on_rightclick_on(pos, node, clicker)
local meta = M(pos)
local fixed = meta:get_string("fixed")
if fixed == "true" then
if meta:get_string("public") == "true" or
clicker:get_player_name() == meta:get_string("owner") then
switch_on(pos)
end
end
end
local function on_rightclick_off(pos, node, clicker)
local meta = M(pos)
local numbers = meta:get_string("numbers")
if numbers ~= "" and numbers ~= nil then
if meta:get_string("public") == "true" or
clicker:get_player_name() == meta:get_string("owner") then
switch_off(pos)
end
end
end
local function techage_set_numbers(pos, numbers, player_name)
local meta = M(pos)
local res = logic.set_numbers(pos, numbers, player_name, NDEF(pos).description)
meta:set_string("formspec", formspec(meta))
return res
end
local function after_dig_node(pos, oldnode, oldmetadata, digger)
techage.remove_node(pos)
end
minetest.register_node("techage:ta3_button_off", {
description = S("TA3 Button/Switch"),
tiles = {
@ -73,74 +164,10 @@ minetest.register_node("techage:ta3_button_off", {
meta:set_int("cycle_time", 0)
end,
on_receive_fields = function(pos, formname, fields, player)
if minetest.is_protected(pos, player:get_player_name()) then
return
end
local meta = M(pos)
if not techage.check_numbers(fields.numbers, player:get_player_name()) then
return
end
meta:set_string("numbers", fields.numbers)
if fields.public then
meta:set_string("public", fields.public)
end
local cycle_time = nil
if fields.type == "switch" then
meta:set_int("cycle_idx", 1)
cycle_time = 0
elseif fields.type == "button 1s" then
meta:set_int("cycle_idx", 2)
cycle_time = 1
elseif fields.type == "button 2s" then
meta:set_int("cycle_idx", 3)
cycle_time = 2
elseif fields.type == "button 4s" then
meta:set_int("cycle_idx", 4)
cycle_time = 4
elseif fields.type == "button 8s" then
meta:set_int("cycle_idx", 5)
cycle_time = 8
elseif fields.type == "button 16s" then
meta:set_int("cycle_idx", 6)
cycle_time = 16
elseif fields.type == "button 32s" then
meta:set_int("cycle_idx", 7)
cycle_time = 32
end
if cycle_time ~= nil then
meta:set_int("cycle_time", cycle_time)
end
logic.infotext(meta, S("TA3 Button/Switch"))
if fields.exit then
meta:set_string("formspec", nil)
meta:set_string("fixed" , "true")
else
meta:set_string("formspec", formspec(meta))
end
end,
on_rightclick = function(pos, node, clicker)
local meta = M(pos)
local fixed = meta:get_string("fixed")
if fixed == "true" then
if meta:get_string("public") == "true" or
clicker:get_player_name() == meta:get_string("owner") then
switch_on(pos)
end
end
end,
techage_set_numbers = function(pos, numbers, player_name)
local meta = M(pos)
local res = logic.set_numbers(pos, numbers, player_name, S("TA3 Button/Switch"))
meta:set_string("formspec", formspec(meta))
return res
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
techage.remove_node(pos)
end,
on_receive_fields = on_receive_fields,
on_rightclick = on_rightclick_on,
techage_set_numbers = techage_set_numbers,
after_dig_node = after_dig_node,
on_rotate = screwdriver.disallow,
paramtype2 = "facedir",
@ -149,7 +176,6 @@ minetest.register_node("techage:ta3_button_off", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("techage:ta3_button_on", {
description = ("TA3 Button/Switch"),
tiles = {
@ -162,30 +188,10 @@ minetest.register_node("techage:ta3_button_on", {
"techage_filling_ta3.png^techage_frame_ta3.png^techage_button_on.png",
},
on_rightclick = function(pos, node, clicker)
local meta = M(pos)
local numbers = meta:get_string("numbers")
if numbers ~= "" and numbers ~= nil then
if meta:get_string("public") == "true" or
clicker:get_player_name() == meta:get_string("owner") then
switch_off(pos)
end
end
end,
on_rightclick = on_rightclick_off,
on_timer = switch_off,
on_rotate = screwdriver.disallow,
techage_set_numbers = function(pos, numbers, player_name)
local meta = M(pos)
local res = logic.set_numbers(pos, numbers, player_name, S("TA3 Button/Switch"))
meta:set_string("formspec", formspec(meta))
return res
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
techage.remove_node(pos)
end,
techage_set_numbers = techage_set_numbers,
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2, not_in_creative_inventory=1},
@ -194,6 +200,82 @@ minetest.register_node("techage:ta3_button_on", {
drop = "techage:ta3_button_off",
})
minetest.register_node("techage:ta4_button_off", {
description = S("TA4 Button/Switch"),
inventory_image = "techage_smartline_button_inv.png",
tiles = {
-- up, down, right, left, back, front
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png^techage_smartline_button_off.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -6/32, -6/32, 14/32, 6/32, 6/32, 16/32},
},
},
after_place_node = function(pos, placer)
local meta = M(pos)
logic.after_place_node(pos, placer, "techage:ta4_button_off", S("TA4 Button/Switch"))
logic.infotext(meta, S("TA4 Button/Switch"))
meta:set_string("formspec", formspec(meta))
meta:set_string("public", "false")
meta:set_int("cycle_time", 0)
end,
on_receive_fields = on_receive_fields,
on_rightclick = on_rightclick_on,
techage_set_numbers = techage_set_numbers,
after_dig_node = after_dig_node,
on_rotate = screwdriver.disallow,
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
})
minetest.register_node("techage:ta4_button_on", {
description = ("TA4 Button/Switch"),
inventory_image = "techage_smartline_button_inv.png",
tiles = {
-- up, down, right, left, back, front
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png^techage_smartline_button_on.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -6/32, -6/32, 14/32, 6/32, 6/32, 16/32},
},
},
on_rightclick = on_rightclick_off,
on_timer = switch_off,
on_rotate = screwdriver.disallow,
techage_set_numbers = techage_set_numbers,
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2, not_in_creative_inventory=1},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
drop = "techage:ta4_button_off",
})
minetest.register_craft({
output = "techage:ta3_button_off",
recipe = {
@ -203,3 +285,12 @@ minetest.register_craft({
},
})
minetest.register_craft({
output = "techage:ta4_button_off",
recipe = {
{"", "techage:aluminum", "dye:blue"},
{"", "default:glass", "techage:ta4_wlanchip"},
{"", "", ""},
},
})

View File

@ -8,25 +8,26 @@
GPL v3
See LICENSE.txt for more information
Player Detector
TA3 & TA4 Player Detector
]]--
-- for lazy programmers
local M = minetest.get_meta
local S = techage.S
local NDEF = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}) end
local logic = techage.logic
local CYCLE_TIME = 1
local function switch_on(pos)
if logic.swap_node(pos, "techage:ta3_playerdetector_on") then
local function switch_on(pos, stage)
if logic.swap_node(pos, "techage:ta"..stage.."_playerdetector_on") then
logic.send_on(pos, M(pos))
end
end
local function switch_off(pos)
if logic.swap_node(pos, "techage:ta3_playerdetector_off") then
local function switch_off(pos, stage)
if logic.swap_node(pos, "techage:ta"..stage.."_playerdetector_off") then
logic.send_off(pos, M(pos))
end
end
@ -88,7 +89,7 @@ local function on_receive_fields(pos, formname, fields, player)
if fields.exit == "Save" then
if techage.check_numbers(fields.numbers, player:get_player_name()) then
meta:set_string("numbers", fields.numbers)
logic.infotext(M(pos), S("TA3 Player Detector"))
logic.infotext(M(pos), NDEF(pos).description)
end
meta:set_string("names", fields.names)
meta:set_string("formspec", formspec(meta))
@ -119,7 +120,7 @@ minetest.register_node("techage:ta3_playerdetector_off", {
on_timer = function (pos, elapsed)
if scan_for_player(pos) then
switch_on(pos)
switch_on(pos, 3)
end
return true
end,
@ -139,7 +140,7 @@ minetest.register_node("techage:ta3_playerdetector_off", {
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("techage:ta3_playerdetector_on", {
@ -154,7 +155,7 @@ minetest.register_node("techage:ta3_playerdetector_on", {
on_timer = function (pos, elapsed)
if not scan_for_player(pos) then
switch_off(pos)
switch_off(pos, 3)
end
return true
end,
@ -178,6 +179,113 @@ minetest.register_node("techage:ta3_playerdetector_on", {
drop = "techage:ta3_playerdetector_off"
})
minetest.register_node("techage:ta4_playerdetector_off", {
description = S("TA4 Player Detector"),
inventory_image = 'techage_smartline_detector_inv.png',
tiles = {
-- up, down, right, left, back, front
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png^techage_smartline_detector.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -6/32, -6/32, 14/32, 6/32, 6/32, 16/32},
},
},
after_place_node = function(pos, placer)
local meta = M(pos)
logic.after_place_node(pos, placer, "techage:ta4_playerdetector_off", S("TA4 Player Detector"))
logic.infotext(meta, S("TA4 Player Detector"))
meta:set_string("formspec", formspec(meta))
minetest.get_node_timer(pos):start(CYCLE_TIME)
end,
on_receive_fields = on_receive_fields,
on_timer = function (pos, elapsed)
if scan_for_player(pos) then
switch_on(pos, 4)
end
return true
end,
techage_set_numbers = function(pos, numbers, player_name)
local meta = M(pos)
local res = logic.set_numbers(pos, numbers, player_name, S("TA4 Player Detector"))
meta:set_string("formspec", formspec(meta))
return res
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
techage.remove_node(pos)
techage.del_mem(pos)
end,
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
})
minetest.register_node("techage:ta4_playerdetector_on", {
description = "TA4 Player Detector",
inventory_image = 'techage_smartline_detector_inv.png',
tiles = {
-- up, down, right, left, back, front
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png",
"techage_smartline.png^techage_smartline_detector_on.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -6/32, -6/32, 14/32, 6/32, 6/32, 16/32},
},
},
on_receive_fields = on_receive_fields,
on_timer = function (pos, elapsed)
if not scan_for_player(pos) then
switch_off(pos, 4)
end
return true
end,
techage_set_numbers = function(pos, numbers, player_name)
local meta = M(pos)
local res = logic.set_numbers(pos, numbers, player_name, S("TA4 Player Detector"))
meta:set_string("formspec", formspec(meta))
return res
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
techage.remove_node(pos)
techage.del_mem(pos)
end,
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
groups = {choppy=2, cracky=2, crumbly=2, not_in_creative_inventory=1},
is_ground_content = false,
sounds = default.node_sound_metal_defaults(),
drop = "techage:ta4_playerdetector_off"
})
minetest.register_craft({
output = "techage:ta3_playerdetector_off",
recipe = {
@ -187,17 +295,29 @@ minetest.register_craft({
},
})
techage.register_node({"techage:ta3_playerdetector_off", "techage:ta3_playerdetector_on"}, {
on_recv_message = function(pos, src, topic, payload)
if topic == "name" then
local nvm = techage.get_nvm(pos)
return nvm.player_name or ""
else
return "unsupported"
end
end,
on_node_load = function(pos)
minetest.get_node_timer(pos):start(CYCLE_TIME)
end,
minetest.register_craft({
output = "techage:ta4_playerdetector_off",
recipe = {
{"", "techage:aluminum", "dye:blue"},
{"", "default:copper_ingot", "techage:ta4_wlanchip"},
},
})
techage.register_node({
"techage:ta3_playerdetector_off", "techage:ta3_playerdetector_on",
"techage:ta4_playerdetector_off", "techage:ta4_playerdetector_on"
}, {
on_recv_message = function(pos, src, topic, payload)
if topic == "name" then
local nvm = techage.get_nvm(pos)
return nvm.player_name or ""
else
return "unsupported"
end
end,
on_node_load = function(pos)
minetest.get_node_timer(pos):start(CYCLE_TIME)
end,
}
)

View File

@ -145,16 +145,13 @@ techage.lua_ctlr.register_action("clear_screen", {
})
techage.lua_ctlr.register_action("chat", {
cmnd = function(self, text1, text2, text3)
text1 = tostring(text1 or "")
text2 = tostring(text2 or "")
text3 = tostring(text3 or "")
minetest.chat_send_player(self.meta.owner, "[TA4 Lua Controller] "..text1..text2..text3)
cmnd = function(self, text)
text = tostring(text or "")
minetest.chat_send_player(self.meta.owner, "[TA4 Lua Controller] "..text)
end,
help = " $chat(text,...)\n"..
" Send yourself a chat message.\n"..
" The function accepts up to 3 text parameters\n"..
' example: $chat("Hello ", name)'
' example: $chat("Hello "..name)'
})
techage.lua_ctlr.register_action("door", {

View File

@ -16,33 +16,7 @@ Regenerative Energiequellen wie Wind, Sonne und Biokraft helfen dir, das Ölzeit
[wlanchip|image]
## Software Update
Zum 23.02.2020 gab es ein größeres Software-Update, was einige Änderungen und aus Sicht der Spieler auch "Probleme" mit sich bringt. Das Software-Update war aber nötig, um die techage Mod weiter ausbauen und entwickeln zu können.
Da sich mit dem Update die Art und Weise wie Daten der Maschinen gespeichert werden, geändert hat, sind nach dem Update alle Maschinen erst einmal ohne Daten und damit Funktionslos und müssen "repariert" werden.
Dazu gibt es ein Reparaturset, bestehend aus dem Schraubenschlüssel (Techage Info Werkzeug) und der Werkzeugtasche (TechAge Reparaturset). Beide Werkzeuge können gecraftet werden.
- Mit dem Schraubenschlüssel können die Verbindungen über das Stromnetz geprüft werden. Dazu einfach auf einen Generator oder eine Junction klicken, dann werden alle verbundenen Blöcke in der Umgebung markiert. Bei Unterbrechungen immer den letzten markierten Block (Junction) in der Kette neu setzen.
- normale Maschinen müssen nur neu gestartet werden. Hilft dies nicht, einfach neu setzen.
- Generatoren (auch Akkus und Brennstoffzelle) können entweder neu gesetzt, oder mit dem Reparaturset angeklickt und damit repariert werden.
- Die Trägermodule der Solarzellen müssen ebenfalls mit dem "Reparaturset" angeklickt werden.
- Die Stromschalterbox und die Stromschalter müssen neu gesetzt werden. Die Stromschalterbox verhält sich beim Setzen nun ähnlich wie Stromkabel.
- Der TA4 Solar Wechselrichter besteht jetzt nur noch aus einem Block. Der zweite Block muss entfernt und durch ein rotes Kabel ersetzt werden.
- Wasserstoff ist nun wie eine Flüssigkeit zu behandeln. Elektrolyseur und Brennstoffzelle müssen daher nicht mehr über Röhren und Schieber sondern über Pumpen und Flüssigkeitsleitungen miteinander verbunden werden.
### Was hat sich am Spiel geändert?
- der TA1 Hopper ist weg, dafür kann jetzt der Hopper aus der Mod Minecart genutzt werden.
- Blöcke für Wasser und andere Flüssigkeiten (Boiler, Tanks) haben kein Inventory mehr. Diese muss man nun füllen bzw. leeren, in dem man mit einem vollen bzw. leeren Behälter auf den Block klickt. Bei Wasser ist das der Eimer, bei Öl und anderen Flüssigkeiten die Fässer oder Kanister.
- für TA2 und TA3 gibt er jetzt einen Steinbrecher (Quarry) zum Abbau von Steinen.
- Die Stromschalterbox und die Stromschalter wurden überarbeitet und sind nun leichter zu Platzieren.
- Alle Menüs werden nun automatisch und zyklisch aktualisiert, den "Update" Button gibt es nicht mehr.
- Die Tanks können nun nicht mehr direkt über Schieber gefüllt oder geleert werden. Hierzu ist zusätzlich ein TA Einfülltrichter (TA Liquid Filler) notwendig.
- Gas, was beim Destillieren entsteht (Propangas), kann über den Reformer in Wasserstoff umgewandelt und dann zu Strom gemacht werden.
- Der TA4 Solar Wechselrichter besteht jetzt nur noch aus einem Block.
- Generator und Wärmetauscher beim Energiespeicher arbeiten nun unabhängig von einander und können auch einzeln mit dem Stromnetz verbunden sein.
-
## Hinweise
@ -77,27 +51,39 @@ Techage fügt dem Spiel einige neue Items hinzu:
Meridium ist eine Legierung aus Stahl und Mesekristallen. Meridium Ingots können mit dem Kohlebrenner aus Stahl und Mesesplitter hergestellt werden. Meridium leuchtet im Dunkeln. Auch Werkzeuge aus Meridium leuchten und sind daher im Untertagebau sehr hilfreich.
[meridium|image]
### Usmium
Usmium kommt nur als Nuggets vor und kann nur beim Waschen von Kies mit der TA2 Kieswaschanlage gewonnen werden.
[usmium|image]
### Baborium
Baborium wird nur im Untertagebau gewonnen. Baborium findet man nur in Stein in einer Höhe zwischen -250 und -340 Meter.
[baborium|image]
### Erdöl
Erdöl kann nur mit Hilfe des Explorers gefunden und mit Hilfe entsprechender TA3 Maschinen gefördert werden. Siehe TA3.
[oil|image]
### Bauxit
Bauxit wird nur im Untertagebau gewonnen. Bauxit findet man nur in Stein in einer Höhe zwischen -50 und -500 Meter.
Es wird zur Herstellung von Aluminium benötigt, was vor allem in TA4 Verwendung findet.
[bauxite|image]
## History
@ -105,4 +91,6 @@ Es wird zur Herstellung von Aluminium benötigt, was vor allem in TA4 Verwendung
- 05.10.2019: Daten zur Solaranlage und Beschreibung zum Wechselrichter und zum Power-Terminal geändert
- 18.11.2019: Kapitel für Erze, Reaktor, Aluminium, Silo, Bauxit, Ofenheizung, Kieswaschanlage hinzugefügt
- 22.02.2020: Korrekturen und Kapitel zum Update
- 29.02.2020: ICTA Controller hinzugefügt und weitere Korrekturen
- 14.03.2020 Lua Controller hinzugefügt und weitere Korrekturen

View File

@ -80,7 +80,7 @@ Um hier nicht stundenlang am Sieb zu stehen, kann das Sieben mit dem Trichter (h
Der Hopper aus der Mod "Minecart" dient in erster Linie zum Be- und Entladen von Minecarts. Er saugt Gegenstände (items) von oben ein und gibt diese nach rechts weiter. Beim Platzieren des Trichters muss daher auf die Ausgaberichtung geachtet werden.
Der Trichter kann aber auch Items aus Kisten (chest) ziehen, sofern die Kiste auf dem Trichter steht.
Der Trichter kann aber auch Items aus Kisten (chest) ziehen, sofern die Kiste neben oder auf dem Trichter steht.
Der Trichter kann auch Items in Kisten legen, sofern die Kiste neben dem Trichter steht.

View File

@ -381,6 +381,27 @@ Das Terminal dient zur Ein-/Ausgabe für den Lua Controller.
## TA4 Logik-/Schalt-Module
### TA4 Taster/Schalter / Button/Switch
Beim TA4 Taster/Schalter hat sich nur das Aussehen geändert. Die Funktionalität ist gleich wie beim TA3 Taster/Schalter.
[ta4_button|image]
### TA4 Spieler Detektor / Player Detector
Beim TA4 Spieler Detektor hat sich nur das Aussehen geändert. Die Funktionalität ist gleich wie beim TA3 Spieler Detektor.
[ta4_playerdetector|image]
### TA4 Zustandssammler / State Collector
[ta4_collector|image]
Der Zustandssammler fragt der Reihe nach alle konfigurierten Maschinen nach dem Status ab. Wenn eine der Maschinen einen vorkonfigurierte Status erreicht oder überschritten hat, wird ein "on" Kommando gesendet. Damit können bspw. vom einem Lua Controller aus sehr einfach viele Maschinen auf Störungen überwacht werden.
## Weitere TA4 Blöcke

View File

@ -400,7 +400,7 @@ Messages are used to transport data between Controllers. Messages are text strin
* `$send_msg(num, msg)` - Send a message to another Controller. _num_ is the destination number. (see example "Emails")
* `$chat(text,...)` - Send yourself a chat message. This function allows up to 3 text strings.
* `$chat(text)` - Send yourself a chat message. _text_ is a text string.
* `$door(pos, text)` - Open/Close a door at position "pos".
Example: `$door("123,7,-1200", "close")`.
Hint: Use the Techage Info Tool to determine the door position.

View File

@ -1,8 +1,6 @@
# Inhaltsverzeichnis
- [Tech Age Mod](./manual_DE.md#tech-age-mod)
- [Software Update](./manual_DE.md#software-update)
- [Was hat sich am Spiel geändert?](./manual_DE.md#was-hat-sich-am-spiel-geändert?)
- [Hinweise](./manual_DE.md#hinweise)
- [Erze und Mineralien](./manual_DE.md#erze-und-mineralien)
- [Meridium](./manual_DE.md#meridium)
@ -149,6 +147,11 @@
- [TA4 Lua Server](./manual_ta4_DE.md#ta4-lua-server)
- [TA4 Sensor Kiste/Chest](./manual_ta4_DE.md#ta4-sensor-kistechest)
- [TA4 Lua Controller Terminal](./manual_ta4_DE.md#ta4-lua-controller-terminal)
- [TA4 Logik-/Schalt-Blöcke](./manual_ta4_DE.md#ta4-logik-schalt-blöcke)
- [TA4 Taster/Schalter / Button/Switch](./manual_ta4_DE.md#ta4-tasterschalter--buttonswitch)
- [TA4 Spieler Detektor / Player Detector](./manual_ta4_DE.md#ta4-spieler-detektor--player-detector)
- [TA4 Collector](./manual_ta4_DE.md#ta4-collector)
- [ ](./manual_ta4_DE.md#-)
- [Weitere TA4 Blöcke](./manual_ta4_DE.md#weitere-ta4-blöcke)
- [TA4 Tank / TA4 Tank](./manual_ta4_DE.md#ta4-tank--ta4-tank)
- [TA4 Pumpe / TA4 Pump](./manual_ta4_DE.md#ta4-pumpe--ta4-pump)