arena_lib/src/editor/tools_players.lua

178 lines
5.5 KiB
Lua
Executable File

local S = minetest.get_translator("arena_lib")
local function change_players_number() end
local players_tools = {
"", -- arena_lib:players_min
"", -- arena_lib:players_max
"arena_lib:players_change",
"",
"", -- arena_lib:players_teams_on/off
"",
"",
"",
"arena_lib:editor_return",
"arena_lib:editor_quit",
}
minetest.register_node("arena_lib:players_min", {
description = S("Players required: "),
inventory_image = "arenalib_tool_players_min.png",
wield_image = "arenalib_tool_players_min.png",
groups = {not_in_creative_inventory = 1, oddly_breakable_by_hand = "2"},
on_place = function() end,
on_drop = function() end,
on_use = function(itemstack, user, pointed_thing)
local mod = user:get_meta():get_string("arena_lib_editor.mod")
local arena_name = user:get_meta():get_string("arena_lib_editor.arena")
local players_amount = user:get_meta():get_int("arena_lib_editor.players_number")
if not arena_lib.change_players_amount(user:get_player_name(), mod, arena_name, players_amount, nil, true) then return end
-- aggiorno lo stack se il cambio è andato a buon fine
minetest.after(0, function()
user:set_wielded_item("arena_lib:players_min " .. players_amount)
end)
end
})
minetest.register_node("arena_lib:players_max", {
description = S("Players supported: "),
inventory_image = "arenalib_tool_players_max.png",
wield_image = "arenalib_tool_players_max.png",
groups = {not_in_creative_inventory = 1, oddly_breakable_by_hand = "2"},
on_place = function() end,
on_drop = function() end,
on_use = function(itemstack, user, pointed_thing)
local mod = user:get_meta():get_string("arena_lib_editor.mod")
local arena_name = user:get_meta():get_string("arena_lib_editor.arena")
local players_amount = user:get_meta():get_int("arena_lib_editor.players_number")
if not arena_lib.change_players_amount(user:get_player_name(), mod, arena_name, nil, players_amount, true) then return end
-- aggiorno lo stack se il cambio è andato a buon fine
minetest.after(0, function()
user:set_wielded_item("arena_lib:players_max " .. players_amount)
end)
end
})
minetest.register_tool("arena_lib:players_change", {
description = S("Change the current number"),
inventory_image = "arenalib_tool_players_change.png",
groups = {not_in_creative_inventory = 1, oddly_breakable_by_hand = "2"},
on_place = function() end,
on_drop = function() end,
on_use = function(itemstack, user, pointed_thing)
change_players_number(user, true)
end,
on_secondary_use = function(itemstack, placer, pointed_thing)
change_players_number(placer, false)
end
})
minetest.register_tool("arena_lib:players_teams_on", {
description = S("Teams: on (click to toggle off)"),
inventory_image = "arenalib_tool_players_teams_on.png",
groups = {not_in_creative_inventory = 1, oddly_breakable_by_hand = "2"},
on_place = function() end,
on_drop = function() end,
on_use = function(itemstack, user, pointed_thing)
local mod = user:get_meta():get_string("arena_lib_editor.mod")
local arena_name = user:get_meta():get_string("arena_lib_editor.arena")
arena_lib.toggle_teams_per_arena(user:get_player_name(), mod, arena_name, 0, true)
minetest.after(0, function()
user:get_inventory():set_stack("main", 5, "arena_lib:players_teams_off")
end)
end
})
minetest.register_tool("arena_lib:players_teams_off", {
description = S("Teams: off (click to toggle on)"),
inventory_image = "arenalib_tool_players_teams_off.png",
groups = {not_in_creative_inventory = 1, oddly_breakable_by_hand = "2"},
on_place = function() end,
on_drop = function() end,
on_use = function(itemstack, user, pointed_thing)
local mod = user:get_meta():get_string("arena_lib_editor.mod")
local arena_name = user:get_meta():get_string("arena_lib_editor.arena")
arena_lib.toggle_teams_per_arena(user:get_player_name(), mod, arena_name, 1, true)
minetest.after(0, function()
user:get_inventory():set_stack("main", 5, "arena_lib:players_teams_on")
end)
end
})
function arena_lib.give_players_tools(inv, mod, arena)
inv:set_list("main", players_tools)
inv:set_stack("main", 1, "arena_lib:players_min " .. arena.min_players)
inv:set_stack("main", 2, "arena_lib:players_max " .. arena.max_players)
local mod_ref = arena_lib.mods[mod]
-- se non ha le squadre, non do l'oggetto per attivarle/disattivarle
if #mod_ref.teams == 1 then return end
if arena.teams_enabled then
inv:set_stack("main", 5, "arena_lib:players_teams_on")
else
inv:set_stack("main", 5, "arena_lib:players_teams_off")
end
end
----------------------------------------------
---------------FUNZIONI LOCALI----------------
----------------------------------------------
function change_players_number(player, decrease)
local players_number = player:get_meta():get_int("arena_lib_editor.players_number")
if not decrease then
players_number = players_number +1
else
if players_number > 1 then
players_number = players_number -1
else return end
end
player:get_meta():set_int("arena_lib_editor.players_number", players_number)
arena_lib.HUD_send_msg("hotbar", player:get_player_name(), S("Players | num to set: @1 (left/right click slot #3 to change)", players_number))
end