built on 21/06/2020 10:21:23
This commit is contained in:
parent
25b5e3a76c
commit
e7445257b8
@ -39,6 +39,15 @@ Required: Minetest Game
|
||||
|
||||
### History
|
||||
|
||||
|
||||
#### 2020-06-21
|
||||
|
||||
Updates (see local readme files):
|
||||
- signs_bot v1.03
|
||||
- techage v0.13
|
||||
- hyperloop v2.06
|
||||
|
||||
|
||||
#### 2020-06-18
|
||||
|
||||
- techage v0.12
|
||||
|
@ -64,9 +64,9 @@ has some risks. Therefore:
|
||||
|
||||
## Configuration
|
||||
The following can be changed in the minetest menu (Settings -> Advanced Settings -> Mods -> hyperloop) or directly in 'minetest.conf'
|
||||
* "WiFi block enabled" - To enable the usage of WiFi blocks
|
||||
* "WiFi block crafting enabled" - To enable the crafting of WiFi blocks
|
||||
* "free tube placement enabled" - If enabled Hyperloop Tubes and Elevator Shafts can be build in all directions.
|
||||
* "WiFi block enabled" - To enable the usage of WiFi blocks (default: false)
|
||||
* "WiFi block crafting enabled" - To enable the crafting of WiFi blocks (default: false)
|
||||
* "free tube placement enabled" - If enabled Hyperloop Tubes and Elevator Shafts can be build in all directions (default: true)
|
||||
When this option is disabled, Hyperloop tubes can only be built in the horizontal direction and elevator shafts in the vertical direction.
|
||||
|
||||
Example for 'minetest.conf':
|
||||
|
@ -3,7 +3,7 @@
|
||||
Hyperloop Mod
|
||||
=============
|
||||
|
||||
v2.04 by JoSt
|
||||
v2.06 by JoSt
|
||||
|
||||
Copyright (C) 2017-2019 Joachim Stolberg
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
2019-03-23 v2.03 Elevator duplication bugfix
|
||||
2020-01-03 v2.04 Elevator door bugfix (MT 5+)
|
||||
2020-03-12 v2.05 minetest translator added (thanks to acmgit/Clyde)
|
||||
2020-06-14 v2.06 The default value for `hyperloop_free_tube_placement_enabled` is now true
|
||||
|
||||
]]--
|
||||
|
||||
@ -63,7 +64,7 @@ else
|
||||
-- Configuration settings
|
||||
hyperloop.wifi_enabled = minetest.settings:get_bool("hyperloop_wifi_enabled")
|
||||
hyperloop.wifi_crafting_enabled = minetest.settings:get_bool("hyperloop_wifi_crafting_enabled")
|
||||
hyperloop.free_tube_placement_enabled = minetest.settings:get_bool("hyperloop_free_tube_placement_enabled")
|
||||
hyperloop.free_tube_placement_enabled = minetest.settings:get_bool("hyperloop_free_tube_placement_enabled", true)
|
||||
|
||||
dofile(minetest.get_modpath("hyperloop") .. "/network.lua")
|
||||
dofile(minetest.get_modpath("hyperloop") .. "/data_base.lua")
|
||||
|
@ -166,4 +166,5 @@ optional: farming redo, node_io, doc, techage, minecart
|
||||
- 2020-01-02 v1.00 * bot inventory filter added, documentation enhanced
|
||||
- 2020-03-27 v1.01 * flower command and sign added
|
||||
- 2020-03-30 v1.02 * Program flow control commands added
|
||||
- 2020-06-21 v1.03 * Interpreter bugfixes, node and crop sensors changed
|
||||
|
||||
|
@ -46,9 +46,8 @@ local function node_timer(pos)
|
||||
if swap_node(pos, "signs_bot:crop_sensor_on") then
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos, true)
|
||||
minetest.after(1, swap_node, pos, "signs_bot:crop_sensor")
|
||||
end
|
||||
else
|
||||
swap_node(pos, "signs_bot:crop_sensor")
|
||||
end
|
||||
return true
|
||||
end
|
||||
@ -118,8 +117,8 @@ minetest.register_node("signs_bot:crop_sensor_on", {
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
diggable = false,
|
||||
groups = {sign_bot_sensor = 1, not_in_creative_inventory = 1},
|
||||
drop = "signs_bot:crop_sensor",
|
||||
groups = {sign_bot_sensor = 1, cracky = 1, not_in_creative_inventory = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
|
||||
@ -152,7 +151,7 @@ if minetest.get_modpath("doc") then
|
||||
data = {
|
||||
item = "signs_bot:crop_sensor",
|
||||
text = table.concat({
|
||||
I("The Crop Sensor sends a signal when, for example wheat is fully grown."),
|
||||
I("The Crop Sensor sends cyclical signals when, for example, wheat is fully grown."),
|
||||
I("The sensor range is one node/meter."),
|
||||
I("The sensor has an active side (red) that must point to the crop/field."),
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
signs_bot = {}
|
||||
|
||||
-- Version for compatibility checks, see readme.md/history
|
||||
signs_bot.version = 1.01
|
||||
signs_bot.version = 1.03
|
||||
|
||||
if minetest.global_exists("techage") and techage.version < 0.06 then
|
||||
minetest.log("error", "[signs_bot] Signs Bot requires techage version 0.06 or newer!")
|
||||
|
@ -49,7 +49,7 @@ local function get_line_tokens(script)
|
||||
while idx < #lines do
|
||||
idx = idx + 1
|
||||
-- remove comments
|
||||
local line = string.split(lines[idx], "--")[1] or ""
|
||||
local line = string.split(lines[idx], "--", true, 1)[1] or ""
|
||||
-- remove blanks
|
||||
line = trim(line)
|
||||
if #line > 0 then
|
||||
@ -255,10 +255,6 @@ function api.check_script(script)
|
||||
return false, I("'repeat' missing"), 0
|
||||
elseif (tbl["end"] or 0) < (tbl["repeat"] or 0) then
|
||||
return false, I("'end' missing"), 0
|
||||
elseif (tbl["call"] or 0) > (tbl["return"] or 0) then
|
||||
return false, I("'return' missing"), 0
|
||||
elseif (tbl["call"] or 0) < (tbl["return"] or 0) then
|
||||
return false, I("'call' missing"), 0
|
||||
end
|
||||
return true, I("Checked and approved"), 0
|
||||
end
|
||||
|
@ -71,16 +71,12 @@ local function any_node_changed(pos)
|
||||
|
||||
if mem.num ~= num then
|
||||
if mem.mode == 1 and num < mem.num then
|
||||
mem.num = num
|
||||
return true
|
||||
elseif mem.mode == 2 and num > mem.num then
|
||||
mem.num = num
|
||||
return true
|
||||
elseif mem.mode == 3 then
|
||||
mem.num = num
|
||||
return true
|
||||
end
|
||||
mem.num = num
|
||||
end
|
||||
return false
|
||||
end
|
||||
@ -93,6 +89,9 @@ local function on_receive_fields(pos, formname, fields, player)
|
||||
end
|
||||
if fields.accept then
|
||||
mem.mode = DropdownValues[fields.mode] or 3
|
||||
mem.num = nil
|
||||
minetest.get_node_timer(pos):start(CYCLE_TIME)
|
||||
swap_node(pos, "signs_bot:node_sensor")
|
||||
end
|
||||
meta:set_string("formspec", formspec(mem))
|
||||
end
|
||||
@ -102,9 +101,8 @@ local function node_timer(pos)
|
||||
if swap_node(pos, "signs_bot:node_sensor_on") then
|
||||
signs_bot.send_signal(pos)
|
||||
signs_bot.lib.activate_extender_nodes(pos, true)
|
||||
minetest.after(1, swap_node, pos, "signs_bot:node_sensor")
|
||||
end
|
||||
else
|
||||
swap_node(pos, "signs_bot:node_sensor")
|
||||
end
|
||||
return true
|
||||
end
|
||||
@ -172,13 +170,14 @@ minetest.register_node("signs_bot:node_sensor_on", {
|
||||
|
||||
on_timer = node_timer,
|
||||
update_infotext = update_infotext,
|
||||
on_receive_fields = on_receive_fields,
|
||||
on_rotate = screwdriver.disallow,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
diggable = false,
|
||||
groups = {sign_bot_sensor = 1, not_in_creative_inventory = 1},
|
||||
drop = "signs_bot:node_sensor",
|
||||
groups = {sign_bot_sensor = 1, cracky = 1, not_in_creative_inventory = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
|
||||
@ -211,7 +210,7 @@ if minetest.get_modpath("doc") then
|
||||
data = {
|
||||
item = "signs_bot:node_sensor",
|
||||
text = table.concat({
|
||||
I("The node sensor can send a signal when it detects that nodes appear or disappear,"),
|
||||
I("The node sensor sends cyclical signals when it detects that nodes have appeared or disappeared,"),
|
||||
I("but has to be configured accordingly."),
|
||||
I("Valid nodes are all kind of blocks and plants."),
|
||||
I("The sensor range is 3 nodes/meters in one direction."),
|
||||
|
@ -35,7 +35,7 @@ Textures: CC BY-SA 3.0
|
||||
### Dependencies
|
||||
Required: default, doors, bucket, stairs, screwdriver, basic_materials, tubelib2, minecart, lcdlib, safer_lua
|
||||
Recommended: signs_bot, hyperloop, compost, techpack_stairway, autobahn
|
||||
Optional: unified_inventory, wielded_light, unifieddyes, lua-mashal, lsqlite3, moreores
|
||||
Optional: unified_inventory, wielded_light, unifieddyes, lua-mashal, lsqlite3, moreores, ethereal, mesecon
|
||||
|
||||
|
||||
The mods `default`, `doors`, `bucket`, `stairs`, and `screwdriver` are part of Minetest Game.
|
||||
@ -90,4 +90,5 @@ to 'lsqlite3' and 'lua-marshal', but there is no way back, so:
|
||||
- 2020-06-04 V0.10 * minor changes and bugfixes
|
||||
- 2020-06-14 V0.11 * cart commands added for both controllers, support for moreores added
|
||||
- 2020-06-17 V0.12 * Ethereal support added, manual correction, tin ingot recipe bugfix
|
||||
- 2020-06-19 V0.13 * Mesecons Converter added
|
||||
|
||||
|
@ -182,13 +182,7 @@ end
|
||||
local function empty_on_punch(pos, nvm, full_container, item_count)
|
||||
nvm.liquid = nvm.liquid or {}
|
||||
nvm.liquid.amount = nvm.liquid.amount or 0
|
||||
local lqd_def
|
||||
-- handle legacy items
|
||||
if IsLiquid[full_container] then
|
||||
lqd_def = {inv_item = full_container, size = (item_count or 1), container = ""}
|
||||
else
|
||||
lqd_def = get_liquid_def(full_container)
|
||||
end
|
||||
local lqd_def = get_liquid_def(full_container)
|
||||
local ndef_lqd = LQD(pos)
|
||||
if lqd_def and ndef_lqd then
|
||||
local tank_size = ndef_lqd.capa or 0
|
||||
|
@ -111,6 +111,7 @@ techage.Items = {
|
||||
ta3_drill_pipe_wrench = "techage:ta3_drill_pipe_wrench",
|
||||
ta3_pipe = "techage:ta3_pipeS",
|
||||
ta3_pipe_wall_entry = "techage:ta3_pipe_wall_entry",
|
||||
ta3_mesecons_converter = "techage:ta3_mesecons_converter",
|
||||
----------------------------
|
||||
techage_ta4 = "techage_ta4.png",
|
||||
ta4_windturbine = "techage:ta4_wind_turbine",
|
||||
|
@ -99,6 +99,7 @@ techage.manual_DE.aTitel = {
|
||||
"3,TechAge Signallampe / Signal Lamp",
|
||||
"3,Tür/Tor Blöcke / Door/Gate Blocks",
|
||||
"3,TA3 Tür Controller / Door Controller",
|
||||
"3,TA3 Mesecons Umsetzer / TA3 Mesecons Converter",
|
||||
"2,Detektoren",
|
||||
"3,TA3 Detektor / Detector",
|
||||
"3,TA3 Wagen Detektor / Cart Detector",
|
||||
@ -934,6 +935,13 @@ techage.manual_DE.aText = {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Der Mesecons Umsetzer dient zur Umwandlung von Techage on/off Kommandos in Mesecons Signale und umgekehrt.\n"..
|
||||
"Dazu müssen eine oder mehrere Knotennummern eingegeben und der Konverter mit Mesecons Blöcken \n"..
|
||||
"über Mesecons Leitungen verbunden werden. Den Mesecons Umsetzer kann man auch mit dem Programmer konfigurieren.\n"..
|
||||
"Der Mesecons Umsetzer akzeptiert bis zu 5 Kommandos pro Sekunde\\, bei höherer Belastung schaltet er sich ab.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Detektoren scannen ihre Umgebung ab und senden ein 'on'-Kommando\\, wenn das Gesuchte erkannt wurde.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
@ -1566,6 +1574,7 @@ techage.manual_DE.aItemName = {
|
||||
"ta3_signallamp",
|
||||
"ta3_doorblock",
|
||||
"ta3_doorcontroller",
|
||||
"ta3_mesecons_converter",
|
||||
"ta3_nodedetector",
|
||||
"ta3_detector",
|
||||
"ta3_cartdetector",
|
||||
@ -1771,6 +1780,7 @@ techage.manual_DE.aPlanTable = {
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ta4_windturbine",
|
||||
"",
|
||||
"",
|
||||
|
@ -99,6 +99,7 @@ techage.manual_EN.aTitel = {
|
||||
"3,TechAge Signal Lamp",
|
||||
"3,Door/Gate Blocks",
|
||||
"3,TA3 Door Controller",
|
||||
"3,TA3 Mesecons Converter",
|
||||
"2,Detectors",
|
||||
"3,TA3 Detector",
|
||||
"3,TA3 Cart Detector",
|
||||
@ -932,6 +933,13 @@ techage.manual_EN.aText = {
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"The Mesecons converter is used to convert Techage on/off commands into Mesecons signals and vice versa.\n"..
|
||||
"To do this\\, one or more node numbers must be entered and the converter with Mesecons blocks\n"..
|
||||
"has to be connected via Mesecons cables. The Mesecons converter can also be configured with the programmer.\n"..
|
||||
"The Mesecons converter accepts up to 5 commands per second\\; it switches itself off at higher loads.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
"\n",
|
||||
"Detectors scan their surroundings and send an 'on' command when the search is recognized.\n"..
|
||||
"\n"..
|
||||
"\n"..
|
||||
@ -1556,6 +1564,7 @@ techage.manual_EN.aItemName = {
|
||||
"ta3_signallamp",
|
||||
"ta3_doorblock",
|
||||
"ta3_doorcontroller",
|
||||
"ta3_mesecons_converter",
|
||||
"ta3_nodedetector",
|
||||
"ta3_detector",
|
||||
"ta3_cartdetector",
|
||||
@ -1761,6 +1770,7 @@ techage.manual_EN.aPlanTable = {
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"ta4_windturbine",
|
||||
"",
|
||||
"",
|
||||
|
@ -13,7 +13,7 @@
|
||||
techage = {}
|
||||
|
||||
-- Version for compatibility checks, see readme.md/history
|
||||
techage.version = 0.12
|
||||
techage.version = 0.13
|
||||
|
||||
if minetest.global_exists("tubelib") then
|
||||
minetest.log("error", "[techage] Techage can't be used together with the mod tubelib!")
|
||||
@ -223,6 +223,9 @@ dofile(MP.."/logic/gateblock.lua")
|
||||
dofile(MP.."/logic/doorblock.lua")
|
||||
dofile(MP.."/logic/doorcontroller.lua")
|
||||
dofile(MP.."/logic/collector.lua")
|
||||
if minetest.global_exists("mesecon") then
|
||||
dofile(MP.."/logic/mesecons_converter.lua")
|
||||
end
|
||||
|
||||
-- Test
|
||||
dofile(MP.."/recipe_checker.lua")
|
||||
|
@ -43,8 +43,9 @@ minetest.register_ore({
|
||||
y_max = -250,
|
||||
})
|
||||
|
||||
techage.furnace.register_recipe({
|
||||
minetest.register_craft({
|
||||
type = 'cooking',
|
||||
output = 'techage:baborium_ingot',
|
||||
recipe = {'techage:baborium_lump'},
|
||||
time = 3,
|
||||
recipe = 'techage:baborium_lump',
|
||||
cooktime = 5,
|
||||
})
|
@ -31,7 +31,6 @@ minetest.register_craftitem("techage:cylinder_large_hydrogen", {
|
||||
stack_max = 1,
|
||||
})
|
||||
|
||||
techage.register_liquid("techage:hydrogen", "", 1, "techage:hydrogen")
|
||||
techage.register_liquid("techage:cylinder_small_hydrogen", "techage:ta3_cylinder_small", 1, "techage:hydrogen")
|
||||
techage.register_liquid("techage:cylinder_large_hydrogen", "techage:ta3_cylinder_large", 6, "techage:hydrogen")
|
||||
|
||||
|
@ -132,6 +132,5 @@ minetest.register_craftitem("techage:ta3_canister_oil", {
|
||||
})
|
||||
|
||||
techage.register_liquid("techage:bucket_oil", "bucket:bucket_empty", 1, "techage:oil_source")
|
||||
techage.register_liquid("techage:oil_source", "", 1, "techage:oil_source")
|
||||
techage.register_liquid("techage:ta3_barrel_oil", "techage:ta3_barrel_empty", 10, "techage:oil_source")
|
||||
techage.register_liquid("techage:ta3_canister_oil", "techage:ta3_canister_empty", 1, "techage:oil_source")
|
||||
|
@ -215,6 +215,7 @@ TA1 Melting Pot=TA1 Schmelztiegel
|
||||
TA1 Meridium Hammer (smash stone to gravel)=TA1 Meridiumhammer (zerschlage Stein zu Kies)
|
||||
TA1 Mese Hammer (smash stone to gravel)=TA1 Mesehammer (zerschlage Stein zu Kies)
|
||||
TA1 Steel Hammer (smash stone to gravel)=TA1 Stahlhammer (zerschlage Stein zu Kies)
|
||||
TA1 Stone Hammer (smash stone to gravel)=TA1 Steinhammer (zerschlage Stein zu Kies)
|
||||
TA2 Boiler Base=TA2 Boiler unten
|
||||
TA2 Boiler Top=TA2 Boiler oben
|
||||
TA2 Cylinder=TA2 Zylinder
|
||||
@ -261,6 +262,7 @@ TA3 Generator=TA3 Generator
|
||||
TA3 Gravel Sieve=TA3 Kiessieb
|
||||
TA3 Logic Block=TA3 Logikblock
|
||||
TA3 Melting=TA3 Schmelzen
|
||||
TA3 Mesecons Converter=TA3 Mesecons Konverter
|
||||
TA3 Naphtha=TA3 Naphtha
|
||||
TA3 Naphtha Barrel=TA3 Naphtha-Fass
|
||||
TA3 Naphtha Canister=TA3 Naphtha-Kanister
|
||||
|
@ -213,6 +213,7 @@ TA1 Melting Pot=
|
||||
TA1 Meridium Hammer (smash stone to gravel)=
|
||||
TA1 Mese Hammer (smash stone to gravel)=
|
||||
TA1 Steel Hammer (smash stone to gravel)=
|
||||
TA1 Stone Hammer (smash stone to gravel)=
|
||||
TA2 Boiler Base=
|
||||
TA2 Boiler Top=
|
||||
TA2 Cylinder=
|
||||
@ -259,6 +260,7 @@ TA3 Generator=
|
||||
TA3 Gravel Sieve=
|
||||
TA3 Logic Block=
|
||||
TA3 Melting=
|
||||
TA3 Mesecons Converter=
|
||||
TA3 Naphtha=
|
||||
TA3 Naphtha Barrel=
|
||||
TA3 Naphtha Canister=
|
||||
|
147
techage/logic/mesecons_converter.lua
Normal file
147
techage/logic/mesecons_converter.lua
Normal file
@ -0,0 +1,147 @@
|
||||
--[[
|
||||
|
||||
TechAge
|
||||
=======
|
||||
|
||||
Copyright (C) 2017-2020 Joachim Stolberg
|
||||
|
||||
GPL v3
|
||||
See LICENSE.txt for more information
|
||||
|
||||
Mesecons converter
|
||||
|
||||
]]--
|
||||
|
||||
-- for lazy programmers
|
||||
local M = minetest.get_meta
|
||||
local S = techage.S
|
||||
|
||||
local logic = techage.logic
|
||||
local OVER_LOAD_MAX = 10
|
||||
local CYCLE_TIME = 2
|
||||
|
||||
local function formspec(meta)
|
||||
local numbers = meta:get_string("numbers") or ""
|
||||
return "size[7.5,3]"..
|
||||
"field[0.5,1;7,1;numbers;"..S("Insert destination node number(s)")..";"..numbers.."]" ..
|
||||
"button_exit[2,2;3,1;exit;"..S("Save").."]"
|
||||
end
|
||||
|
||||
local function send_message(pos, topic)
|
||||
local meta = M(pos)
|
||||
local mem = techage.get_mem(pos)
|
||||
mem.overload_cnt = (mem.overload_cnt or 0) + 1
|
||||
if mem.overload_cnt > OVER_LOAD_MAX then
|
||||
logic.infotext(M(pos), S("TA3 Mesecons Converter"), "fault (overloaded)")
|
||||
minetest.get_node_timer(pos):stop()
|
||||
return false
|
||||
end
|
||||
local own_num = meta:get_string("node_number")
|
||||
local numbers = meta:get_string("numbers")
|
||||
techage.send_multi(own_num, numbers, topic)
|
||||
end
|
||||
|
||||
minetest.register_node("techage:ta3_mesecons_converter", {
|
||||
description = S("TA3 Mesecons Converter"),
|
||||
tiles = {
|
||||
-- up, down, right, left, back, front
|
||||
"techage_filling_ta3.png^techage_frame_ta3_top.png",
|
||||
"techage_filling_ta3.png^techage_frame_ta3_top.png",
|
||||
"techage_filling_ta3.png^techage_frame_ta3.png^techage_appl_mesecons_converter.png",
|
||||
},
|
||||
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = M(pos)
|
||||
local mem = techage.get_mem(pos)
|
||||
logic.after_place_node(pos, placer, "techage:ta3_mesecons_converter", S("TA3 Mesecons Converter"))
|
||||
logic.infotext(meta, S("TA3 Mesecons Converter"))
|
||||
meta:set_string("formspec", formspec(meta))
|
||||
mem.overload_cnt = 0
|
||||
minetest.get_node_timer(pos):start(CYCLE_TIME)
|
||||
mesecon.on_placenode(pos, minetest.get_node(pos))
|
||||
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 techage.check_numbers(fields.numbers, player:get_player_name()) then
|
||||
meta:set_string("numbers", fields.numbers)
|
||||
logic.infotext(M(pos), S("TA3 Mesecons Converter"))
|
||||
meta:set_string("formspec", formspec(meta))
|
||||
end
|
||||
minetest.get_node_timer(pos):start(CYCLE_TIME)
|
||||
end,
|
||||
|
||||
on_timer = function(pos,elapsed)
|
||||
local mem = techage.get_mem(pos)
|
||||
mem.overload_cnt = 0
|
||||
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("TA3 Mesecons Converter"))
|
||||
meta:set_string("formspec", formspec(meta))
|
||||
return res
|
||||
end,
|
||||
|
||||
mesecons = {
|
||||
receptor = {
|
||||
state = mesecon.state.off,
|
||||
rules = mesecon.rules.default,
|
||||
},
|
||||
effector = {
|
||||
rules = mesecon.rules.default,
|
||||
action_on = function(pos, node)
|
||||
send_message(pos, "on")
|
||||
end,
|
||||
action_off = function(pos, node)
|
||||
send_message(pos, "off")
|
||||
end,
|
||||
action_change = function(pos, node)
|
||||
send_message(pos, "change")
|
||||
end,
|
||||
}
|
||||
},
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata)
|
||||
techage.remove_node(pos, oldnode, oldmetadata)
|
||||
techage.del_mem(pos)
|
||||
mesecon.on_dignode(pos, oldnode)
|
||||
end,
|
||||
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=2, cracky=2, crumbly=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "techage:ta3_mesecons_converter",
|
||||
recipe = {
|
||||
{"techage:ta3_repeater", "mesecons:wire_00000000_off"},
|
||||
},
|
||||
})
|
||||
|
||||
techage.register_node({"techage:ta3_mesecons_converter"}, {
|
||||
on_recv_message = function(pos, src, topic, payload)
|
||||
local mem = techage.get_mem(pos)
|
||||
mem.overload_cnt = (mem.overload_cnt or 0) + 1
|
||||
if mem.overload_cnt > OVER_LOAD_MAX then
|
||||
logic.infotext(M(pos), S("TA3 Mesecons Converter"), "fault (overloaded)")
|
||||
minetest.get_node_timer(pos):stop()
|
||||
return false
|
||||
elseif topic == "on" then
|
||||
mesecon.receptor_on(pos, mesecon.rules.default)
|
||||
elseif topic == "off" then
|
||||
mesecon.receptor_off(pos, mesecon.rules.default)
|
||||
end
|
||||
end,
|
||||
on_node_load = function(pos)
|
||||
minetest.get_node_timer(pos):start(CYCLE_TIME)
|
||||
end,
|
||||
})
|
@ -592,6 +592,14 @@ Der Tür Controller dient zur Ansteuerung der TA3 Tür/Tor Blöcke. Beim Tür Co
|
||||
|
||||
[ta3_doorcontroller|image]
|
||||
|
||||
### TA3 Mesecons Umsetzer / TA3 Mesecons Converter
|
||||
|
||||
Der Mesecons Umsetzer dient zur Umwandlung von Techage on/off Kommandos in Mesecons Signale und umgekehrt.
|
||||
Dazu müssen eine oder mehrere Knotennummern eingegeben und der Konverter mit Mesecons Blöcken
|
||||
über Mesecons Leitungen verbunden werden. Den Mesecons Umsetzer kann man auch mit dem Programmer konfigurieren.
|
||||
Der Mesecons Umsetzer akzeptiert bis zu 5 Kommandos pro Sekunde, bei höherer Belastung schaltet er sich ab.
|
||||
|
||||
[ta3_mesecons_converter|image]
|
||||
|
||||
|
||||
## Detektoren
|
||||
|
@ -590,6 +590,16 @@ The door controller is used to control the TA3 door/gate blocks. With the door c
|
||||
[ta3_doorcontroller|image]
|
||||
|
||||
|
||||
### TA3 Mesecons Converter
|
||||
|
||||
The Mesecons converter is used to convert Techage on/off commands into Mesecons signals and vice versa.
|
||||
To do this, one or more node numbers must be entered and the converter with Mesecons blocks
|
||||
has to be connected via Mesecons cables. The Mesecons converter can also be configured with the programmer.
|
||||
The Mesecons converter accepts up to 5 commands per second; it switches itself off at higher loads.
|
||||
|
||||
[ta3_mesecons_converter|image]
|
||||
|
||||
|
||||
|
||||
## Detectors
|
||||
|
||||
|
@ -98,6 +98,7 @@
|
||||
- [TechAge Signallampe / Signal Lamp](./manual_ta3_DE.md#techage-signallampe--signal-lamp)
|
||||
- [Tür/Tor Blöcke / Door/Gate Blocks](./manual_ta3_DE.md#türtor-blöcke--doorgate-blocks)
|
||||
- [TA3 Tür Controller / Door Controller](./manual_ta3_DE.md#ta3-tür-controller--door-controller)
|
||||
- [TA3 Mesecons Umsetzer / TA3 Mesecons Converter](./manual_ta3_DE.md#ta3-mesecons-umsetzer--ta3-mesecons-converter)
|
||||
- [Detektoren](./manual_ta3_DE.md#detektoren)
|
||||
- [TA3 Detektor / Detector](./manual_ta3_DE.md#ta3-detektor--detector)
|
||||
- [TA3 Wagen Detektor / Cart Detector](./manual_ta3_DE.md#ta3-wagen-detektor--cart-detector)
|
||||
|
@ -98,6 +98,7 @@
|
||||
- [TechAge Signal Lamp](./manual_ta3_EN.md#techage-signal-lamp)
|
||||
- [Door/Gate Blocks](./manual_ta3_EN.md#doorgate-blocks)
|
||||
- [TA3 Door Controller](./manual_ta3_EN.md#ta3-door-controller)
|
||||
- [TA3 Mesecons Converter](./manual_ta3_EN.md#ta3-mesecons-converter)
|
||||
- [Detectors](./manual_ta3_EN.md#detectors)
|
||||
- [TA3 Detector](./manual_ta3_EN.md#ta3-detector)
|
||||
- [TA3 Cart Detector](./manual_ta3_EN.md#ta3-cart-detector)
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = techage
|
||||
depends = default,doors,tubelib2,basic_materials,bucket,stairs,screwdriver,minecart,lcdlib,safer_lua
|
||||
optional_depends = unified_inventory,wielded_light,unifieddyes,moreores, ethereal
|
||||
optional_depends = unified_inventory,wielded_light,unifieddyes,moreores,ethereal,mesecon
|
||||
description = Techage, go through 4 tech ages in search of wealth and power!
|
||||
|
BIN
techage/textures/techage_appl_mesecons_converter.png
Normal file
BIN
techage/textures/techage_appl_mesecons_converter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 301 B |
Loading…
Reference in New Issue
Block a user