other players can see settings but not edit them
parent
f6859f6381
commit
53d7efbc96
35
enviro.lua
35
enviro.lua
|
@ -12,6 +12,8 @@ enviro.skyboxes = {
|
|||
};
|
||||
|
||||
local space_start = 1100;
|
||||
local exclusion_height = 6666; -- above all players without privs die and get teleported to spawn
|
||||
|
||||
local ENABLE_SPACE_EFFECTS = false -- enable damage outside protected areas
|
||||
|
||||
local enviro_update_form = function (pos)
|
||||
|
@ -113,7 +115,7 @@ minetest.register_node("basic_machines:enviro", {
|
|||
|
||||
local players = minetest.get_connected_players();
|
||||
for _,player in pairs(players) do
|
||||
local pos1 = player:getpos();
|
||||
local pos1 = player:get_pos();
|
||||
local dist = math.sqrt((pos1.x-pos.x)^2 + (pos1.y-pos.y)^2 + (pos1.z-pos.z)^2 );
|
||||
if dist<=r then
|
||||
|
||||
|
@ -231,7 +233,7 @@ end
|
|||
enviro_adjust_physics = function(player) -- adjust players physics/skybox 1 second after various events
|
||||
minetest.after(1, function()
|
||||
if player then
|
||||
local pos = player:getpos(); if not pos then return end
|
||||
local pos = player:get_pos(); if not pos then return end
|
||||
if pos.y > space_start then -- is player in space or not?
|
||||
player:set_physics_override({speed=1,jump=0.5,gravity=0.1}) -- value set for extreme test space spawn
|
||||
local skybox = enviro.skyboxes["space"];
|
||||
|
@ -264,6 +266,9 @@ end
|
|||
|
||||
local stimer = 0
|
||||
local enviro_space = {};
|
||||
local exclusion_zone = {};
|
||||
local moderator = {};
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
stimer = stimer + dtime;
|
||||
if stimer >= 5 then
|
||||
|
@ -271,8 +276,23 @@ minetest.register_globalstep(function(dtime)
|
|||
local players = minetest.get_connected_players();
|
||||
for _,player in pairs(players) do
|
||||
local name = player:get_player_name();
|
||||
local pos = player:getpos();
|
||||
local inspace=0; if pos.y>space_start then inspace = 1 end
|
||||
local pos = player:get_pos();
|
||||
local inspace=0;
|
||||
if pos.y>space_start then
|
||||
inspace = 1
|
||||
if pos.y > exclusion_height then
|
||||
local exclude = exclusion_zone[name];
|
||||
if exclude == nil then
|
||||
exclusion_zone[name] = not minetest.get_player_privs(name).include;
|
||||
exclude = exclusion_zone[name]
|
||||
end
|
||||
if exclude then
|
||||
minetest.chat_send_all("exclusion zone alert: " .. name .. " " .. pos.x .. " " .. pos.y .. " " .. pos.z )
|
||||
minetest.log("exclusion zone alert: " .. name .. " " .. pos.x .. " " .. pos.y .. " " .. pos.z )
|
||||
player:set_pos({x=0,y=-100,z=0})
|
||||
end
|
||||
end
|
||||
end
|
||||
local inspace0=enviro_space[name];
|
||||
if inspace~=inspace0 then -- only adjust player enviroment ONLY if change occured ( earth->space or space->earth !)
|
||||
enviro_space[name] = inspace;
|
||||
|
@ -286,7 +306,7 @@ minetest.register_globalstep(function(dtime)
|
|||
local hp = player:get_hp();
|
||||
|
||||
if hp>0 then
|
||||
minetest.chat_send_player(name,"WARNING: you entered DEADLY RADIATION ZONE");
|
||||
minetest.chat_send_player(name,"WARNING: you entered DEADLY RADIATION ZONE.");
|
||||
local privs = minetest.get_player_privs(name)
|
||||
if not privs.kick then player:set_hp(hp-15) end
|
||||
end
|
||||
|
@ -364,7 +384,7 @@ minetest.register_on_punchplayer( -- bring gravity closer to normal with each pu
|
|||
function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
|
||||
|
||||
if player:get_physics_override() == nil then return end
|
||||
local pos = player:getpos(); if pos.y>= space_start then return end
|
||||
local pos = player:get_pos(); if pos.y>= space_start then return end
|
||||
|
||||
local gravity = player:get_physics_override().gravity;
|
||||
if gravity<1 then
|
||||
|
@ -375,6 +395,9 @@ minetest.register_on_punchplayer( -- bring gravity closer to normal with each pu
|
|||
|
||||
)
|
||||
|
||||
minetest.register_privilege("include", {
|
||||
description = "allow player to move in exclusion zone",
|
||||
})
|
||||
|
||||
|
||||
-- RECIPE: extremely expensive
|
||||
|
|
Binary file not shown.
14
mover.lua
14
mover.lua
|
@ -13,12 +13,13 @@ basic_machines.max_range = 10 -- machines normal range of operation
|
|||
basic_machines.machines_operations = 10 -- 1 coal will provide 10 mover basic operations ( moving dirt 1 block distance)
|
||||
basic_machines.machines_TTL = 16 -- time to live for signals, how many hops before signal dissipates
|
||||
|
||||
basic_machines.version = "09/26/2019a";
|
||||
basic_machines.version = "03/02/2021a";
|
||||
basic_machines.clockgen = 1; -- if 0 all background continuously running activity (clockgen/keypad) repeating is disabled
|
||||
|
||||
-- how hard it is to move blocks, default factor 1, note fuel cost is this multiplied by distance and divided by machine_operations..
|
||||
basic_machines.hardness = {
|
||||
["default:stone"]=4,["default:tree"]=2,["default:jungletree"]=2,["default:pine_tree"]=2,["default:aspen_tree"]=2,["default:acacia_tree"]=2,
|
||||
["default:stone"]=3,["default:tree"]=1,["default:jungletree"]=1,["default:pine_tree"]=1,["default:aspen_tree"]=1,["default:acacia_tree"]=1, ["default:bush_leaves"] = 0.1,["default:leaves"] = 0.1, ["default:jungleleaves"] = 0.1,
|
||||
["gloopblocks:pumice_cooled"]=2,["default:cloud"] = 999999,
|
||||
["default:lava_source"]=5950,["default:water_source"]=5950,["default:obsidian"]=20,["bedrock2:bedrock"]=999999};
|
||||
--move machines for free
|
||||
basic_machines.hardness["basic_machines:mover"]=0.;
|
||||
|
@ -319,8 +320,8 @@ minetest.register_node("basic_machines:mover", {
|
|||
|
||||
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
||||
local privs = minetest.get_player_privs(player:get_player_name());
|
||||
local cant_build = minetest.is_protected(pos,player:get_player_name());
|
||||
if not privs.privs and cant_build then return end -- only ppl sharing protection can setup
|
||||
--local cant_build = minetest.is_protected(pos,player:get_player_name());
|
||||
--if not privs.privs and cant_build then return end -- only ppl sharing protection can setup
|
||||
|
||||
local form = get_mover_form(pos,player)
|
||||
minetest.show_formspec(player:get_player_name(), "basic_machines:mover_"..minetest.pos_to_string(pos), form)
|
||||
|
@ -2158,7 +2159,10 @@ minetest.register_on_player_receive_fields(function(player,formname,fields)
|
|||
local name = player:get_player_name(); if name==nil then return end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local privs = minetest.get_player_privs(name);
|
||||
if (minetest.is_protected(pos,name) and not privs.privs) or not fields then return end -- only builder can interact
|
||||
if not fields then return end
|
||||
local can_edit = (not minetest.is_protected(pos,name)) or privs.privs
|
||||
|
||||
if not can_edit and not fields.tabs then return end
|
||||
|
||||
|
||||
if fields.help == "help" then
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
grinder: creates dust_0, must be mixed with extractor chemical to get dust_33
|
|
@ -32,7 +32,7 @@ end
|
|||
minetest.register_on_chat_message(function(name, message)
|
||||
local player = minetest.get_player_by_name(name);
|
||||
if not player then return end
|
||||
local pos = player:getpos();
|
||||
local pos = player:get_pos();
|
||||
local r = 20;local p = {x=round(pos.x/r+0.5)*r,y=round(pos.y/r+0.5)*r+1,z=round(pos.z/r+0.5)*r}
|
||||
--minetest.chat_send_all(minetest.pos_to_string(p))
|
||||
if minetest.get_node(p).name == "basic_machines:distributor" then -- attempt to activate distributor at special grid location: coordinates of the form 20*i
|
||||
|
|
|
@ -25,8 +25,8 @@ local battery_update_meta = function(pos)
|
|||
"image[1.5,0.5;0.5,0.5;basic_machine_generator.png]"..
|
||||
"image[1.5,1;0.5,0.5;power_cell.png]"..
|
||||
|
||||
"label[2,0.5;Power: 10]"..
|
||||
"label[2,1;Capacity: 30]"..
|
||||
"label[2,0.5;Power: " .. maxpower .. "]"..
|
||||
"label[2,1;Capacity: " .. capacity .. "]"..
|
||||
|
||||
"button_exit[4.1,7.4;2,0.5;OK;close]"..
|
||||
"listring["..list_name..";fuel]"..
|
||||
|
|
Loading…
Reference in New Issue