added inventory search
parent
0d52908723
commit
0571f20afd
|
@ -1,4 +1,7 @@
|
|||
--general options
|
||||
--inventory search options
|
||||
drug_wars.INV_SEARCH_MAX_DISTANCE = 5
|
||||
|
||||
--addiction options
|
||||
drug_wars.ADDICTION_TICK = 30
|
||||
drug_wars.ADDICTION_REDUCTION = 0.1
|
||||
drug_wars.ADDICTION_REDUCTION_THRESHOLD = 0.05
|
||||
|
|
1
init.lua
1
init.lua
|
@ -10,6 +10,7 @@ drug_wars.addictions = {}
|
|||
dofile(drug_wars.path.."/config.lua")
|
||||
dofile(drug_wars.path.."/helpers.lua")
|
||||
dofile(drug_wars.path.."/globalupdates.lua")
|
||||
dofile(drug_wars.path.."/invsearch.lua")
|
||||
dofile(drug_wars.path.."/melee.lua")
|
||||
dofile(drug_wars.path.."/pipes.lua")
|
||||
dofile(drug_wars.path.."/cannabis.lua")
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
drug_wars.current_searchers = {}
|
||||
|
||||
minetest.create_detached_inventory("searchinv_main", {
|
||||
allow_move = function() return 0 end,
|
||||
allow_put = function() return 0 end,
|
||||
allow_take = function() return 0 end
|
||||
})
|
||||
|
||||
minetest.create_detached_inventory("searchinv_craft", {
|
||||
allow_move = function() return 0 end,
|
||||
allow_put = function() return 0 end,
|
||||
allow_take = function() return 0 end
|
||||
})
|
||||
|
||||
function drug_wars.is_searchable(player, searcher)
|
||||
local player_pos = player:get_pos()
|
||||
local searcher_pos = searcher:get_pos()
|
||||
|
||||
local x_diff = (player_pos.x - searcher_pos.x)
|
||||
local y_diff = (player_pos.y - searcher_pos.y)
|
||||
local z_diff = (player_pos.z - searcher_pos.z)
|
||||
|
||||
return (x_diff * x_diff) + (y_diff * y_diff) + (z_diff * z_diff) < drug_wars.INV_SEARCH_MAX_DISTANCE
|
||||
end
|
||||
|
||||
minetest.register_chatcommand("inv_search", {
|
||||
params = "<playername>",
|
||||
description = "Request <playername> to show all items in its inventory",
|
||||
func = function(searchername, playername)
|
||||
local searcher = minetest.get_player_by_name(searchername)
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
|
||||
if searcher ~= nil then
|
||||
if player ~= nil then
|
||||
if drug_wars.is_searchable(player, searcher) then
|
||||
minetest.chat_send_player(playername, searchername .. " asked you to search your inventory (accept with /inv_search_accept)")
|
||||
drug_wars.current_searchers[playername] = searchername
|
||||
else
|
||||
minetest.chat_send_player(searchername, "inv_search: Player is too far")
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(searchername, "inv_search: Invalid player name")
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("inv_search_accept", {
|
||||
description = "Shows your inventory to your current searcher",
|
||||
func = function(playername)
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
local searchername = drug_wars.current_searchers[playername]
|
||||
|
||||
if searchername ~= nil then
|
||||
local searcher = minetest.get_player_by_name(searchername)
|
||||
if player ~= nil then
|
||||
if searcher ~= nil then
|
||||
if drug_wars.is_searchable(player, searcher) then
|
||||
local player_maininv = minetest.get_inventory({type="detached", name="searchinv_main"})
|
||||
player_maininv:set_list(playername, player:get_inventory():get_list("main"))
|
||||
|
||||
local player_craftinv = minetest.get_inventory({type="detached", name="searchinv_craft"})
|
||||
player_craftinv:set_list(playername, player:get_inventory():get_list("craft"))
|
||||
|
||||
local search_formspec =
|
||||
"size[8, 9]" ..
|
||||
"list[detached:searchinv_craft;"..playername..";2.5,0.5;3,3;]" ..
|
||||
"list[detached:searchinv_main;"..playername..";0,5;8,4;]"
|
||||
|
||||
minetest.show_formspec(searchername, "drug_wars:inv_search", search_formspec)
|
||||
--minetest.show_formspec(playername, "drug_wars:inv_search", search_formspec)
|
||||
drug_wars.current_searchers[playername] = nil
|
||||
else
|
||||
minetest.chat_send_player(playername, "inv_show: Searcher is too far")
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(playername, "inv_show: Invalid searcher")
|
||||
end
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(playername, "inv_show: Nobody asked to search your inventory")
|
||||
end
|
||||
end
|
||||
})
|
Loading…
Reference in New Issue