mycoins/isp.lua~

185 lines
5.9 KiB
Lua

function default.isp_off_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered Off...]"..
"list[nodemeta:".. spos .. ";main;1,3;1,1;]"..
"list[current_player;main;1,6;8,4;]"..
"button_exit[4,5;2,1;exit;Exit]"
return formspec
end
function default.isp_on_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered On...]"..
"label[1,2.6;Payment:]"..
"list[nodemeta:".. spos .. ";main;1,3;1,1;]"..
"list[current_player;main;1,6;8,4;]"..
"button_exit[4,5;2,1;exit;Exit]"
return formspec
end
-- ISP
-- Alienware Computer
minetest.register_node("mycoins:isp",{
drawtype = "nodebox",
description = "Internet Service Provider",
tiles = {
"mycoins_isp_tp.png",
"mycoins_isp_bt.png",
"mycoins_isp_rt.png",
"mycoins_isp_lt.png",
"mycoins_isp_bk.png",
"mycoins_isp_ft_off.png"
},
paramtype = "light",
paramtype2 = "facedir",
drop = "mycoins:isp",
groups = {cracky=2, oddly_breakable_by_hand=2},
node_box = {
type = "fixed",
fixed = {
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
sounds = default.node_sound_wood_defaults(),
after_place_node = function(pos)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
meta:set_string("formspec", default.isp_on_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:start(60)
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.isp_on_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main") and computer_owner(meta, player)
end,
on_timer = function(pos)
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:isp', param2 = node.param2})
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
end,
on_punch = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:isp_on', param2 = node.param2})
meta:set_string("formspec", default.isp_on_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not computer_owner(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a Alienware computer belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not computer_owner(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a Alienware computer belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
})
minetest.register_node("mycoins:isp_on",{
drawtype = "nodebox",
description = "Internet Service Provider",
tiles = {
"mycoins_isp_tp.png",
"mycoins_isp_bt.png",
"mycoins_isp_rt.png",
"mycoins_isp_lt.png",
"mycoins_isp_bk.png",
"mycoins_isp_ft.png"
},
paramtype = "light",
paramtype2 = "facedir",
light_source = 8,
drop = "mycoins:alien_computer",
groups = {cracky=2, not_in_creative_inventory=1, oddly_breakable_by_hand=2},
node_box = {
type = "fixed",
fixed = {
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
sounds = default.node_sound_wood_defaults(),
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main") and computer_owner(meta, player)
end,
on_timer = function(pos)
end,
on_punch = function(pos)
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:isp', param2 = node.param2})
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not computer_owner(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a Alienware computer belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
return 0
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not computer_owner(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a Alienware computer belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos))
return 0
end
return stack:get_count()
end,
})