mycoins/router.lua

301 lines
12 KiB
Lua
Raw Permalink Normal View History

2015-05-06 10:19:15 -07:00
router_cycle = 10
router_radius = 30
2015-04-29 07:23:03 -07:00
function default.router_off_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered Off...]"
return formspec
end
2015-05-06 10:19:15 -07:00
function default.router_on_formspec(pos)
2015-04-29 07:23:03 -07:00
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
2015-04-30 20:37:51 -07:00
"label[1,0;Powered On...]"..
2015-05-01 14:48:23 -07:00
"label[2,0.5;Computers:]"..
2015-04-30 20:37:51 -07:00
"label[2,0.8;Active: "..#active_computers.."]"..
"label[2,1;Inactive: "..#inactive_computers.."]"..
2015-05-01 14:48:23 -07:00
"label[4,0.5;Routers:]"..
"label[4,0.8;Active: "..#active_routers.."]"..
"label[4,1;Inactive: "..#inactive_routers.."]"..
2015-05-06 10:19:15 -07:00
"label[6,0.5;Available Networks:]"..
2015-05-01 14:48:23 -07:00
"label[6,0.8;Active: "..#active_isp.."]"..
2015-05-06 10:19:15 -07:00
"label[6,1;Inactive: "..#inactive_isp.."]"..
"label[3,2.5;Test:]"..
"label[3,2.8;Active: "..#active_isp.."]"..
"label[3,3;Inactive: "..#inactive_isp.."]"..
2015-04-29 07:23:03 -07:00
"button_exit[4,7;2,1;exit;Exit]"
return formspec
end
2015-04-30 16:28:21 -07:00
function default.router_error_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;No Networks Available...]"
return formspec
end
2015-04-29 07:23:03 -07:00
2015-05-01 14:48:23 -07:00
function default.find_network(pos)
2015-05-06 10:19:15 -07:00
-- need to do some owner checking and report isp networks accordingly using the router owner function or similar.....
2015-05-01 14:48:23 -07:00
active_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer_active","mycoins:game_computer_active","mycoins:alien_computer_active"})
inactive_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer","mycoins:game_computer","mycoins:alien_computer"})
active_routers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:router_on"})
inactive_routers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:router"})
active_isp = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:isp_on"})
inactive_isp = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:isp"})
end
2015-05-02 08:59:15 -07:00
local function router_owner(meta, player)
if player:get_player_name() ~= meta:get_string("owner") then
return false
end
return true
end
2015-05-06 10:19:15 -07:00
-- WIFI Router
2015-04-28 21:13:26 -07:00
minetest.register_node("mycoins:router_on", {
2015-04-30 16:28:21 -07:00
description = "WIFI Router",
2015-04-28 21:13:26 -07:00
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
{name="mycoins_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"mycoins_router_f.png"},
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
is_ground_content = true,
2015-04-29 07:23:03 -07:00
groups = {snappy=3, not_in_creative_inventory = 1},
2015-04-28 21:13:26 -07:00
sound = default.node_sound_wood_defaults(),
2015-04-29 07:23:03 -07:00
drop = "mycoins:router",
2015-04-28 21:13:26 -07:00
drawtype = "nodebox",
2015-04-30 16:28:21 -07:00
light_source = 4,
2015-04-28 21:13:26 -07:00
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
},
},
on_punch = function(pos)
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
2015-04-29 07:23:03 -07:00
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_off_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-29 07:23:03 -07:00
end,
2015-04-30 16:28:21 -07:00
on_timer = function(pos)
2015-05-01 14:48:23 -07:00
default.find_network(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-04-30 16:28:21 -07:00
if isp == nil then
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
else
2015-05-06 10:19:15 -07:00
2015-04-30 16:28:21 -07:00
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
end
end,
2015-05-01 14:48:23 -07:00
after_place_node = function(pos, placer)
2015-04-29 07:23:03 -07:00
local meta = minetest.get_meta(pos)
2015-04-30 16:28:21 -07:00
local timer = minetest.get_node_timer(pos)
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
end,
2015-05-01 14:48:23 -07:00
on_construct = function(pos)
default.find_network(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-04-30 16:28:21 -07:00
if isp == nil then
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
end
2015-04-28 21:13:26 -07:00
end,
2015-05-01 14:48:23 -07:00
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
2015-05-02 08:59:15 -07:00
return router_owner(meta, player)
2015-05-01 14:48:23 -07:00
end,
2015-04-28 21:13:26 -07:00
})
minetest.register_node("mycoins:router", {
2015-04-30 16:28:21 -07:00
description = "WIFI Router",
2015-04-28 21:13:26 -07:00
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png", "mycoins_router_f.png"},
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
is_ground_content = true,
groups = {snappy=3},
sound = default.node_sound_wood_defaults(),
2015-04-29 07:23:03 -07:00
drop = "mycoins:router",
2015-04-28 21:13:26 -07:00
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
},
},
on_punch = function(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-05-01 14:48:23 -07:00
default.find_network(pos)
2015-04-30 16:28:21 -07:00
if isp == nil then
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
else
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
end
end,
on_timer = function(pos)
2015-05-01 14:48:23 -07:00
default.find_network(pos)
2015-04-30 16:28:21 -07:00
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
meta:set_string("formspec", default.router_off_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
timer:stop()
end,
2015-05-01 14:48:23 -07:00
after_place_node = function(pos, placer)
2015-04-30 16:28:21 -07:00
local timer = minetest.get_node_timer(pos)
2015-04-28 21:13:26 -07:00
local node = minetest.get_node(pos)
2015-04-29 07:23:03 -07:00
local meta = minetest.get_meta(pos)
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-29 07:23:03 -07:00
end,
2015-05-01 14:48:23 -07:00
on_construct = function(pos)
default.find_network(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-04-30 16:28:21 -07:00
if isp == nil then
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
end
end,
2015-05-01 14:48:23 -07:00
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
2015-05-02 08:59:15 -07:00
return router_owner(meta, player)
2015-05-01 14:48:23 -07:00
end,
2015-04-30 16:28:21 -07:00
})
minetest.register_node("mycoins:router_error", {
description = "WIFI Router",
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
{name="mycoins_router_f_error.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"mycoins_router_f.png"},
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
is_ground_content = true,
groups = {snappy=3, not_in_creative_inventory = 1},
sound = default.node_sound_wood_defaults(),
drop = "mycoins:router",
drawtype = "nodebox",
light_source = 4,
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
},
},
on_punch = function(pos)
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
2015-04-29 07:23:03 -07:00
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_off_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
end,
on_timer = function(pos)
2015-05-01 14:48:23 -07:00
default.find_network(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-04-30 16:28:21 -07:00
if isp == nil then
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
else
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-05-06 10:19:15 -07:00
timer:start(router_cycle)
2015-04-30 16:28:21 -07:00
end
end,
on_construct = function(pos)
2015-05-06 10:19:15 -07:00
local isp = minetest.find_node_near(pos, router_radius, {"mycoins:isp_on"})
2015-04-30 16:28:21 -07:00
if isp == nil then
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
meta:set_string("formspec", default.router_error_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
2015-05-06 10:19:15 -07:00
meta:set_string("formspec", default.router_on_formspec(pos))
2015-05-01 14:48:23 -07:00
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
2015-04-30 16:28:21 -07:00
end
2015-04-28 21:13:26 -07:00
end,
2015-05-01 14:48:23 -07:00
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
2015-05-02 08:59:15 -07:00
return router_owner(meta, player)
2015-05-01 14:48:23 -07:00
end,
2015-04-28 21:13:26 -07:00
})