minetest-quake/init.lua

61 lines
2.2 KiB
Lua

-- load other scripts
dofile(minetest.get_modpath("quake") .. "/chatcmdbuilder.lua")
dofile(minetest.get_modpath("quake") .. "/commands.lua")
dofile(minetest.get_modpath("quake") .. "/playermanager.lua")
dofile(minetest.get_modpath("quake") .. "/privs.lua")
dofile(minetest.get_modpath("quake") .. "/weapons.lua")
--[[sovrascrizione "on_punch" nodo base dei cartelli per farli entrare
nell'arena se sono cartelli appositi e "on_timer" per teletrasportali in partita quando la queue finisce]]
minetest.register_node("quake:create_sign", {
description = "Left click on a sign to create an entrance or to remove it",
tiles = {"trickerytown.png"},
groups = {oddly_breakable_by_hand = "2"},
on_use = function(itemstack, user, pointed_thing)
local pos = minetest.get_pointed_thing_position(pointed_thing)
if pos == nil then return end -- nel caso sia aria, sennò crasha
local node = minetest.get_node(pos)
local def = minetest.registered_items[node.name]
--controllo se è un cartello
if def and def.entity_info then
def.number_of_lines = 5
local arena_ID = itemstack:get_meta():get_int("arenaID")
local arena = quake.arenas[arena_ID]
-- controllo se c'è già un cartello assegnato a quell'arena. Se è lo stesso lo rimuovo, sennò annullo
if next(arena.sign) ~= nil then
if minetest.serialize(pos) == minetest.serialize(arena.sign) then
minetest.set_node(pos, {name = "air"})
arena.sign = {}
minetest.chat_send_player(user:get_player_name(), "Cartello dell'arena " .. arena.name .. " rimosso con successo")
else
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", "[!] Esiste già un cartello per quest'arena!"))
end
return end
-- cambio la scritta
quake.update_sign(pos, arena)
-- aggiungo il cartello ai cartelli dell'arena
arena.sign = pos
-- salvo l'ID come metadato nel cartello
minetest.get_meta(pos):set_int("arenaID", arena_ID)
--TODO: rimuovere item
else
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", "[!] L'oggetto non è un cartello!"))
end
end,
})