make sia members much more secure so you can have secret agents
parent
53a3d24dfb
commit
a937770b46
10
api.lua
10
api.lua
|
@ -52,6 +52,7 @@ sia_chest.formspec = function(pos,page)
|
|||
.."button[13,6.5;2,0.5;delete;Delete]"
|
||||
.."list[current_name;"..page..";0,1;15,5;]"
|
||||
.."list[current_player;main;0,7;8,4;]"
|
||||
.."listring[]"
|
||||
end
|
||||
|
||||
sia_chest.get_pages = function(meta)
|
||||
|
@ -141,6 +142,9 @@ sia_chest.can_dig = function(pos,player)
|
|||
return false
|
||||
end
|
||||
end
|
||||
if sia.is_member(player:get_player_name())==false then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
|
@ -179,10 +183,10 @@ end
|
|||
|
||||
sia_chest.has_locked_chest_privilege = function(meta, player)
|
||||
local name = player:get_player_name()
|
||||
if minetest.check_player_privs(player, "SIA_member") then
|
||||
return false
|
||||
if sia.is_member(player:get_player_name()) then
|
||||
return true
|
||||
end
|
||||
return true
|
||||
return false
|
||||
end
|
||||
|
||||
sia_chest.on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
|
|
75
init.lua
75
init.lua
|
@ -1,6 +1,69 @@
|
|||
local sia = {}
|
||||
sia = {}
|
||||
screwdriver = screwdriver or {}
|
||||
|
||||
minetest.register_privilege("SIA_admin", {
|
||||
description = "Is a member of the Server Intelegence Agency",
|
||||
give_to_singleplayer = false
|
||||
})
|
||||
|
||||
local mod_storage = minetest.get_mod_storage()
|
||||
|
||||
function sia.is_member(name)
|
||||
local str = mod_storage:get_string("SIA_members")
|
||||
for x in string.gmatch(str, '([^,]+)') do
|
||||
if x==name then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
minetest.register_chatcommand("listmembers", {
|
||||
description = "Lists the Sia members",
|
||||
privs = {SIA_admin = true},
|
||||
func = function(name, param)
|
||||
local str = mod_storage:get_string("SIA_members")
|
||||
for x in string.gmatch(str, '([^,]+)') do
|
||||
minetest.chat_send_player(name,x)
|
||||
end
|
||||
end
|
||||
})
|
||||
minetest.register_chatcommand("addmember", {
|
||||
description = "",
|
||||
param = "<player>",
|
||||
privs = {SIA_admin = true},
|
||||
func = function(name, param)
|
||||
if mod_storage:get_string("SIA_members")=="" then
|
||||
mod_storage:set_string("SIA_members",param)
|
||||
else
|
||||
if not sia.is_member(param) then
|
||||
mod_storage:set_string("SIA_members",mod_storage:get_string("SIA_members")..","..param)
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("removemember", {
|
||||
description = "",
|
||||
param = "<player>",
|
||||
privs = {SIA_admin = true},
|
||||
func = function(name, param)
|
||||
local str = mod_storage:get_string("SIA_members")
|
||||
local nstr = ""
|
||||
for x in string.gmatch(str, '([^,]+)') do
|
||||
if x==param then
|
||||
else
|
||||
if nstr == "" then
|
||||
nstr = nstr..x
|
||||
else
|
||||
nstr = nstr..","..x
|
||||
end
|
||||
end
|
||||
end
|
||||
mod_storage:set_string("SIA_members",nstr)
|
||||
end
|
||||
})
|
||||
|
||||
local cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -8/16, -8/16, 6/16, 3/16, 8/16 }
|
||||
|
@ -8,10 +71,6 @@ local cbox = {
|
|||
|
||||
dofile(minetest.get_modpath("sia").."/api.lua")
|
||||
|
||||
minetest.register_privilege("SIA_member", {
|
||||
description = "Is a member of the Server Intelegence Agency",
|
||||
give_to_singleplayer = false
|
||||
})
|
||||
|
||||
minetest.register_alias("SIA_Mailbox","sia:mailbox")
|
||||
|
||||
|
@ -41,9 +100,7 @@ minetest.register_node("sia:mailbox", {
|
|||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local player = clicker:get_player_name()
|
||||
if minetest.check_player_privs(player, "SIA_member") or
|
||||
minetest.check_player_privs(player, "protection_bypass") and
|
||||
clicker:get_player_control().aux1 then
|
||||
if sia.is_member(player) then
|
||||
minetest.show_formspec(
|
||||
clicker:get_player_name(),
|
||||
"default:chest_locked",
|
||||
|
@ -60,7 +117,7 @@ minetest.register_node("sia:mailbox", {
|
|||
local meta = minetest.get_meta(pos);
|
||||
local name = player and player:get_player_name()
|
||||
local inv = meta:get_inventory()
|
||||
return minetest.check_player_privs(player, "SIA_member") and inv:is_empty("main")
|
||||
return sia.is_member(player:get_player_name()) and inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
|
Loading…
Reference in New Issue