From f0ea30d3d6015f2ef671538db07a3139cf295df9 Mon Sep 17 00:00:00 2001 From: DonBatman Date: Fri, 1 May 2015 14:48:23 -0700 Subject: [PATCH] Added isp coin slot --- ReadMe.txt | 18 ++-- ReadMe.txt~ | 6 +- isp.lua | 244 +++++++++++++++++++++++++++++++++--------- isp.lua~ | 300 ++++++++++++++++++++++++++++++++-------------------- router.lua | 96 ++++++++++------- router.lua~ | 55 +++++++--- 6 files changed, 491 insertions(+), 228 deletions(-) diff --git a/ReadMe.txt b/ReadMe.txt index 7467f35..0666429 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -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 diff --git a/ReadMe.txt~ b/ReadMe.txt~ index 4de7e30..2b1de4c 100644 --- a/ReadMe.txt~ +++ b/ReadMe.txt~ @@ -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 diff --git a/isp.lua b/isp.lua index a7a7ce8..21d33c4 100644 --- a/isp.lua +++ b/isp.lua @@ -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, - }) \ No newline at end of file diff --git a/isp.lua~ b/isp.lua~ index ab7d93d..65f85bf 100644 --- a/isp.lua~ +++ b/isp.lua~ @@ -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, }) \ No newline at end of file diff --git a/router.lua b/router.lua index 12dc805..571c4a3 100644 --- a/router.lua +++ b/router.lua @@ -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, }) diff --git a/router.lua~ b/router.lua~ index fc8cc43..b323c43 100644 --- a/router.lua~ +++ b/router.lua~ @@ -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)