Added isp coin slot

master
DonBatman 2015-05-01 14:48:23 -07:00
parent 0fd742760b
commit f0ea30d3d6
6 changed files with 491 additions and 228 deletions

View File

@ -28,14 +28,20 @@ My first mod for minetest, I plan to expand this mod a bit more as time permits.
12/01/13 changed recipes for all pomputer components
12/02/13 created all new images for all computers
26th March 2014, Removed Homedecor, Mesecons and Moreores dependencies (TenPlus1), reduced abm's to only 2
April 2015, Updates by DonBatman and Nathan.S Removed all ABMs, updated the mod to work with current versions
of Minetest, improved code and added more visual feedback.
April 2015, Updates by DonBatman and Nathan.S Removed all ABMs, updated the mod to work with current versions
of Minetest, improved code and added more visual feedback.
04/25/15 added on punch functionality to all computers and computers now turn off when player is logged out,
player now must punch computer to reboot and mine coins again. MilesDyson
player now must punch computer to reboot and mine coins again. MilesDyson
04/28/15 added router that can turn on and off, computers now require a router to be within 30 node radius
in order to mine bitcoins.
in order to mine bitcoins.
04/29/15 added form spec to router to show network information..
04/30/15 made a few items into nodes to place as deco.. added isp box for router to work..
plan to add a pay system for internet. animated the isp box like the router.
plan to add a pay system for internet. animated the isp box like the router.
05/01/15 ips box now works as intended and is an owned node, only bitcoins are excepted right now
updated formspec to show isp's computer's and router's counts withing its range.. improved a few functions..
router is now an owned node
Enjoy!! :D

View File

@ -34,5 +34,9 @@ of Minetest, improved code and added more visual feedback.
player now must punch computer to reboot and mine coins again. MilesDyson
04/28/15 added router that can turn on and off, computers now require a router to be within 30 node radius
in order to mine bitcoins.
04/29/15 added form spec to router to show network information..
04/30/15 made a few items into nodes to place as deco.. added isp box for router to work..
plan to add a pay system for internet. animated the isp box like the router.
05/01/15 ips box now works as intended and is an owned item, only bitcoins are excepted right now
updated formspec to show isp's computer's and router's counts withing its range.. improved a few functions..
Enjoy!! :D

244
isp.lua
View File

@ -1,5 +1,33 @@
-- internet usage timer config
payment_bitcoin = 24000
payment_bitqu = 60000
payment_bitdi = 2400
payment_bitni = 1200
payment_bitcent = 600
function default.isp_on_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,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
function default.isp_off_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,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(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered Off...]"..
@ -9,25 +37,11 @@ function default.isp_off_formspec(pos)
return formspec
end
function default.isp_on_formspec(pos)
local 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"})
local 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"})
local 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"})
local 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"})
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,0;Powered On...]"..
"label[2,0.6;Computers:]"..
"label[2,0.8;Active: "..#active_computers.."]"..
"label[2,1;Inactive: "..#inactive_computers.."]"..
"label[4,0.6;Routers:]"..
"label[4,0.8;Active: "..#active_routers.."]"..
"label[4,1;Inactive: "..#inactive_routers.."]"..
"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
local function isp_owner(meta, player)
if player:get_player_name() ~= meta:get_string("owner") then
return false
end
return true
end
-- ISP
@ -53,37 +67,64 @@ minetest.register_node("mycoins:isp", {
node_box = {
type = "fixed",
fixed = {
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738}, -- NodeBox1
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375}, -- NodeBox2
},
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
on_punch = function(pos)
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
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()
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
timer:stop()
end,
on_construct = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
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:start(2)
end,
after_place_node = function(pos, placer)
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 timer = minetest.get_node_timer(pos)
local inv = meta:get_inventory()
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
timer:start(60)
timer:stop()
end,
on_construct = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
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 isp_owner(meta, player)
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 isp_owner(meta, player) then
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
})
@ -108,29 +149,128 @@ minetest.register_node("mycoins:isp_on", {
node_box = {
type = "fixed",
fixed = {
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738}, -- NodeBox1
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375}, -- NodeBox2
},
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
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")
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:start(5)
timer:stop()
end,
on_timer = function(pos,from_list)
local timer = minetest.get_node_timer(pos)
on_timer = function(pos)
local meta = minetest.get_meta(pos)
minetest.get_meta(pos):get_inventory():add_item("main", "mycoins:bitcent")
timer:start(5)
if ( minetest.get_player_by_name(meta:get_string("owner")) == 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:isp', param2 = node.param2})
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
else
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.isp_on_formspec(pos))
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
local payment = inv:get_stack("main", 1)
if payment:get_name()== "" 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:isp', param2 = node.param2})
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
else
if payment:get_name()=="mycoins:bitcoin" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitcoin)
else
if payment:get_name()=="mycoins:bitqu" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitqu)
else
if payment:get_name()=="mycoins:bitdi" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitdi)
else
if payment:get_name()=="mycoins:bitni" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitni)
else
if payment:get_name()=="mycoins:bitcent" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitcent)
else
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
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 (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
timer:stop()
end
end
end
end
end
end
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main") and isp_owner(meta, player)
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 isp_owner(meta, player) then
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
})

300
isp.lua~
View File

@ -1,5 +1,33 @@
-- internet usage timer config
payment_bitcoin = 24000
payment_bitqu = 60000
payment_bitdi = 2400
payment_bitni = 1200
payment_bitcent = 600
function default.isp_on_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,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
function default.isp_off_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,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(pos)
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered Off...]"..
@ -9,22 +37,16 @@ function default.isp_off_formspec(pos)
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
local function isp_owner(meta, player)
if player:get_player_name() ~= meta:get_string("owner") then
return false
end
return true
end
-- ISP
-- Alienware Computer
minetest.register_node("mycoins:isp",{
drawtype = "nodebox",
minetest.register_node("mycoins:isp", {
description = "Internet Service Provider",
tiles = {
"mycoins_isp_tp.png",
@ -33,153 +55,199 @@ minetest.register_node("mycoins:isp",{
"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",
},
paramtype = "light",
paramtype2 = "facedir",
walkable = false,
is_ground_content = true,
groups = {snappy=3},
sound = default.node_sound_wood_defaults(),
drop = "mycoins:isp",
drawtype = "nodebox",
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,
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
on_punch = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
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()
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
end,
timer:start(2)
end,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
local inv = meta:get_inventory()
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
timer:stop()
end,
on_construct = function(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider")
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 isp_owner(meta, player)
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))
if not isp_owner(meta, player) then
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))
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
})
minetest.register_node("mycoins:isp_on",{
drawtype = "nodebox",
description = "Internet Service Provider",
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
})
minetest.register_node("mycoins:isp_on", {
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",
{name="mycoins_isp_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"mycoins_isp_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:isp",
drawtype = "nodebox",
light_source = 4,
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,
{-0.153531, -0.5, -0.405738, 0.153531, -0.315951, 0.405738},
{-0.122825, -0.315951, -0.374616, 0.122825, 0.371166, 0.375},
},
},
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")
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
end,
timer:start(2)
end,
on_timer = function(pos)
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.isp_on_formspec(pos))
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
local payment = inv:get_stack("main", 1)
if payment:get_name()== "" 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:isp', param2 = node.param2})
meta:set_string("formspec", default.isp_off_formspec(pos))
meta:set_string("infotext", "Internet Service Provider (owner "..meta:get_string("owner")..")")
local inv = meta:get_inventory()
inv:set_size("main", 1*1)
timer:stop()
else
if payment:get_name()=="mycoins:bitcoin" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitcoin)
else
if payment:get_name()=="mycoins:bitqu" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitqu)
else
if payment:get_name()=="mycoins:bitdi" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitdi)
else
if payment:get_name()=="mycoins:bitni" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitni)
else
if payment:get_name()=="mycoins:bitcent" then
payment:take_item()
inv:set_stack("main",1,payment)
timer:start(payment_bitcent)
else
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
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 (owner "..meta:get_string("owner")..")")
inv:set_size("main", 1*1)
timer:stop()
end
end
end
end
end
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("main") and isp_owner(meta, player)
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))
if not isp_owner(meta, player) then
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))
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not isp_owner(meta, player) then
return 0
end
return stack:get_count()
end,
})

View File

@ -6,19 +6,18 @@ function default.router_off_formspec(pos)
end
function default.router_formspec(pos)
local 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"})
local 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"})
local 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"})
local 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"})
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[1,0;Powered On...]"..
"label[2,0.6;Computers:]"..
"label[2,0.5;Computers:]"..
"label[2,0.8;Active: "..#active_computers.."]"..
"label[2,1;Inactive: "..#inactive_computers.."]"..
"label[4,0.6;ISP:]"..
"label[4,0.8;Active: "..#active_isp.."]"..
"label[4,1;Inactive: "..#inactive_isp.."]"..
"label[4,0.5;Routers:]"..
"label[4,0.8;Active: "..#active_routers.."]"..
"label[4,1;Inactive: "..#inactive_routers.."]"..
"label[6,0.5;ISP:]"..
"label[6,0.8;Active: "..#active_isp.."]"..
"label[6,1;Inactive: "..#inactive_isp.."]"..
"button_exit[4,7;2,1;exit;Exit]"
return formspec
end
@ -30,7 +29,16 @@ function default.router_error_formspec(pos)
return formspec
end
--WIFI Router (linksys look-a-like)
function default.find_network(pos)
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
--WIFI Router
minetest.register_node("mycoins:router_on", {
description = "WIFI Router",
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
@ -58,9 +66,10 @@ minetest.register_node("mycoins:router_on", {
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_off_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end,
on_timer = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
local timer = minetest.get_node_timer(pos)
@ -68,7 +77,7 @@ minetest.register_node("mycoins:router_on", {
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
else
local timer = minetest.get_node_timer(pos)
@ -76,33 +85,39 @@ minetest.register_node("mycoins:router_on", {
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end
end,
after_place_node = function(pos)
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end,
on_construct = function(pos)
on_construct = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
return isp_owner(meta, player)
end,
})
minetest.register_node("mycoins:router", {
@ -127,13 +142,14 @@ minetest.register_node("mycoins:router", {
},
on_punch = function(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
default.find_network(pos)
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
else
local timer = minetest.get_node_timer(pos)
@ -141,43 +157,50 @@ minetest.register_node("mycoins:router", {
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end
end,
on_timer = function(pos)
default.find_network(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:router', param2 = node.param2})
meta:set_string("formspec", default.router_off_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:stop()
end,
after_place_node = function(pos)
after_place_node = function(pos, placer)
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end,
on_construct = function(pos)
on_construct = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
return isp_owner(meta, player)
end,
})
minetest.register_node("mycoins:router_error", {
@ -207,9 +230,10 @@ minetest.register_node("mycoins:router_error", {
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_off_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end,
on_timer = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
local timer = minetest.get_node_timer(pos)
@ -217,7 +241,7 @@ minetest.register_node("mycoins:router_error", {
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
else
local timer = minetest.get_node_timer(pos)
@ -225,19 +249,11 @@ minetest.register_node("mycoins:router_error", {
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end
end,
after_place_node = function(pos)
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_error_formspec(pos))
meta:set_string("infotext", "Router")
timer:start(10)
end,
on_construct = function(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
@ -245,15 +261,19 @@ minetest.register_node("mycoins:router_error", {
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
return isp_owner(meta, player)
end,
})

View File

@ -6,13 +6,18 @@ function default.router_off_formspec(pos)
end
function default.router_formspec(pos)
local 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"})
local 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"})
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
local formspec = "size[10,10]"..
"label[2,2;Powered On...]"..
"label[2,2.5;Active: "..#active_computers.."]"..
"label[2,2.8;Inactive: "..#inactive_computers.."]"..
"label[1,0;Powered On...]"..
"label[2,0.5;Computers:]"..
"label[2,0.8;Active: "..#active_computers.."]"..
"label[2,1;Inactive: "..#inactive_computers.."]"..
"label[4,0.5;Routers:]"..
"label[4,0.8;Active: "..#active_routers.."]"..
"label[4,1;Inactive: "..#inactive_routers.."]"..
"label[6,0.5;ISP:]"..
"label[6,0.8;Active: "..#active_isp.."]"..
"label[6,1;Inactive: "..#inactive_isp.."]"..
"button_exit[4,7;2,1;exit;Exit]"
return formspec
end
@ -24,7 +29,16 @@ function default.router_error_formspec(pos)
return formspec
end
--WIFI Router (linksys look-a-like)
function default.find_network(pos)
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
--WIFI Router
minetest.register_node("mycoins:router_on", {
description = "WIFI Router",
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
@ -52,9 +66,10 @@ minetest.register_node("mycoins:router_on", {
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.router_off_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end,
on_timer = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
local timer = minetest.get_node_timer(pos)
@ -62,7 +77,7 @@ minetest.register_node("mycoins:router_on", {
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
else
local timer = minetest.get_node_timer(pos)
@ -70,33 +85,39 @@ minetest.register_node("mycoins:router_on", {
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end
end,
after_place_node = function(pos)
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
local timer = minetest.get_node_timer(pos)
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
timer:start(10)
end,
on_construct = function(pos)
on_construct = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
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))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
else
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
meta:set_string("formspec", default.router_formspec(pos))
meta:set_string("infotext", "Router")
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
end
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos);
return isp_owner(meta, player)
end,
})
minetest.register_node("mycoins:router", {
@ -121,6 +142,7 @@ minetest.register_node("mycoins:router", {
},
on_punch = function(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
default.find_network(pos)
if isp == nil then
local timer = minetest.get_node_timer(pos)
local meta = minetest.get_meta(pos)
@ -140,6 +162,7 @@ minetest.register_node("mycoins:router", {
end
end,
on_timer = function(pos)
default.find_network(pos)
local timer = minetest.get_node_timer(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
@ -156,7 +179,8 @@ minetest.register_node("mycoins:router", {
meta:set_string("infotext", "Router")
timer:start(10)
end,
on_construct = function(pos)
on_construct = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
local node = minetest.get_node(pos)
@ -204,6 +228,7 @@ minetest.register_node("mycoins:router_error", {
meta:set_string("infotext", "Router")
end,
on_timer = function(pos)
default.find_network(pos)
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
if isp == nil then
local timer = minetest.get_node_timer(pos)