Add vase_radar command
This commit is contained in:
parent
a10d97e603
commit
b22dc35568
@ -1,14 +1,19 @@
|
||||
local S = minetest.get_translator("sf_loot")
|
||||
local EDITOR = minetest.settings:get_bool("sf_editor", false) or minetest.settings:get_bool("creative_mode", false)
|
||||
|
||||
-- If enabled, shows vases near you
|
||||
local VASE_RADAR = false
|
||||
-- CHEAT: If enabled, shows vases near you
|
||||
local vase_radar = false
|
||||
|
||||
local VASE_RADAR_UPDATE_TIMER = 1.0
|
||||
|
||||
local vase_drop = nil
|
||||
if not EDITOR then
|
||||
vase_drop = ""
|
||||
end
|
||||
|
||||
-- Vase radar timer
|
||||
local vtimer = 0
|
||||
|
||||
minetest.register_node("sf_loot:vase", {
|
||||
description = S("Vase"),
|
||||
tiles = {
|
||||
@ -34,6 +39,7 @@ minetest.register_node("sf_loot:vase", {
|
||||
},
|
||||
groups = { editor_breakable = 1, loot_node = 1 },
|
||||
on_destruct = function(pos)
|
||||
vtimer = VASE_RADAR_UPDATE_TIMER
|
||||
if EDITOR then
|
||||
return
|
||||
end
|
||||
@ -54,40 +60,63 @@ minetest.register_node("sf_loot:vase", {
|
||||
drop = vase_drop,
|
||||
})
|
||||
|
||||
if VASE_RADAR then
|
||||
local vtimer = 0
|
||||
local waypoints = {}
|
||||
minetest.register_globalstep(function(dtime)
|
||||
vtimer = vtimer + dtime
|
||||
if vtimer < 1 then
|
||||
return
|
||||
local waypoints = {}
|
||||
minetest.register_globalstep(function(dtime)
|
||||
if not vase_radar then
|
||||
return
|
||||
end
|
||||
vtimer = vtimer + dtime
|
||||
if vtimer <= VASE_RADAR_UPDATE_TIMER then
|
||||
return
|
||||
end
|
||||
vtimer = 0
|
||||
local players = minetest.get_connected_players()
|
||||
local areasize = vector.new(30, 30, 30)
|
||||
for p=1, #players do
|
||||
local player = players[p]
|
||||
local pname = player:get_player_name()
|
||||
if not waypoints[pname] then
|
||||
waypoints[pname] = {}
|
||||
end
|
||||
vtimer = 0
|
||||
local players = minetest.get_connected_players()
|
||||
local areasize = vector.new(30, 30, 30)
|
||||
for p=1, #players do
|
||||
local player = players[p]
|
||||
local pname = player:get_player_name()
|
||||
if not waypoints[pname] then
|
||||
waypoints[pname] = {}
|
||||
end
|
||||
for w=1, #waypoints[pname] do
|
||||
player:hud_remove(waypoints[pname][w])
|
||||
end
|
||||
local ppos = vector.round(players[p]:get_pos())
|
||||
local vases = minetest.find_nodes_in_area(vector.subtract(ppos, areasize), vector.add(ppos, areasize), "sf_loot:vase")
|
||||
for v=1, #vases do
|
||||
local vnode = minetest.get_node(vases[v])
|
||||
local id = players[p]:hud_add({
|
||||
hud_elem_type = "waypoint",
|
||||
name = S("Vase (@1)", vnode.param2),
|
||||
precision = 1,
|
||||
text = S("m"),
|
||||
number = 0xFF8080,
|
||||
world_pos = vases[v],
|
||||
})
|
||||
table.insert(waypoints[pname], id)
|
||||
end
|
||||
for w=1, #waypoints[pname] do
|
||||
player:hud_remove(waypoints[pname][w])
|
||||
end
|
||||
end)
|
||||
end
|
||||
local ppos = vector.round(players[p]:get_pos())
|
||||
local vases = minetest.find_nodes_in_area(vector.subtract(ppos, areasize), vector.add(ppos, areasize), "sf_loot:vase")
|
||||
for v=1, #vases do
|
||||
local vnode = minetest.get_node(vases[v])
|
||||
local id = players[p]:hud_add({
|
||||
hud_elem_type = "waypoint",
|
||||
name = S("Vase (@1)", vnode.param2),
|
||||
precision = 1,
|
||||
text = S("m"),
|
||||
number = 0xFF8080,
|
||||
world_pos = vases[v],
|
||||
})
|
||||
table.insert(waypoints[pname], id)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_chatcommand("vase_radar", {
|
||||
description = S("Toggles the vase radar which shows vases near you"),
|
||||
privs = { server = true },
|
||||
func = function(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player or not player:is_player() then
|
||||
return false, S("No player.")
|
||||
end
|
||||
vase_radar = not vase_radar
|
||||
if vase_radar then
|
||||
vtimer = VASE_RADAR_UPDATE_TIMER
|
||||
return true, S("Vase radar enabled.")
|
||||
else
|
||||
if waypoints[name] then
|
||||
for w=1, #waypoints[name] do
|
||||
player:hud_remove(waypoints[name][w])
|
||||
end
|
||||
end
|
||||
return false, S("Vase radar disabled.")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user