2018-08-27 21:25:56 +02:00
|
|
|
-- Redéfinition de la propriété digiline pour le player_detector
|
|
|
|
local GET_COMMAND = "GET"
|
|
|
|
local function object_detector_make_formspec(pos)
|
|
|
|
local meta = minetest.get_meta(pos)
|
|
|
|
meta:set_string("formspec", "size[9,2.5]" ..
|
|
|
|
"field[0.3, 0;9,2;scanname;Name of player to scan for (empty for any):;${scanname}]"..
|
|
|
|
"field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
|
|
|
|
"button_exit[7,0.75;2,3;;Save]")
|
|
|
|
end
|
|
|
|
|
|
|
|
local object_detector_digiline = {
|
|
|
|
receptor = {},
|
|
|
|
effector = {
|
|
|
|
action = function(pos, node, channel, msg)
|
|
|
|
local meta = minetest.get_meta(pos)
|
|
|
|
if channel == meta:get_string("digiline_channel") then
|
|
|
|
if msg == GET_COMMAND then
|
|
|
|
local objs = minetest.get_objects_inside_radius(pos, mesecon.setting("detector_radius", 6))
|
|
|
|
|
|
|
|
-- abort if no scan results were found
|
|
|
|
if next(objs) == nil then return false end
|
|
|
|
|
|
|
|
local scanname = meta:get_string("scanname")
|
|
|
|
local scan_for = {}
|
|
|
|
for _, str in pairs(string.split(scanname:gsub(" ", ""), ",")) do
|
|
|
|
scan_for[str] = true
|
|
|
|
end
|
|
|
|
local every_player = scanname == ""
|
|
|
|
for _, obj in pairs(objs) do
|
|
|
|
-- "" is returned if it is not a player; "" ~= nil; so only handle objects with foundname ~= ""
|
|
|
|
local foundname = obj:get_player_name()
|
|
|
|
if foundname ~= "" then
|
|
|
|
if every_player or scan_for[foundname] then
|
|
|
|
digilines.receptor_send(pos, digilines.rules.default, channel, foundname)
|
|
|
|
break;
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
meta:set_string("scanname", msg)
|
|
|
|
object_detector_make_formspec(pos)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
minetest.override_item(
|
|
|
|
"mesecons_detector:object_detector_off",
|
|
|
|
{
|
|
|
|
digiline = object_detector_digiline
|
|
|
|
})
|
|
|
|
minetest.override_item(
|
|
|
|
"mesecons_detector:object_detector_on",
|
|
|
|
{
|
|
|
|
digiline = object_detector_digiline
|
|
|
|
})
|
2018-09-16 15:24:40 +02:00
|
|
|
|
|
|
|
minetest.log("action", "[nalc_mesecons] loaded.")
|