Bugfix: arenas signs weren't saved properly when overrided. ALSO beware the refactoring set_sign -> give_sign_tool
parent
af2d6a83fa
commit
91e9c8cb2b
40
api.lua
40
api.lua
|
@ -355,6 +355,43 @@ end
|
|||
|
||||
|
||||
|
||||
function arena_lib.set_sign(itemstack, user, pos)
|
||||
|
||||
local mod = itemstack:get_meta():get_string("mod")
|
||||
local arena_ID = itemstack:get_meta():get_int("arenaID")
|
||||
local arena = arena_lib.mods[mod].arenas[arena_ID]
|
||||
|
||||
-- se l'arena è abilitata annullo
|
||||
if arena.enabled then
|
||||
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", S("[!] You must disable the arena first!")))
|
||||
return end
|
||||
|
||||
-- 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(), S("Sign of arena @1 successfully removed", arena.name))
|
||||
update_storage(false, mod, arena_ID, arena)
|
||||
else
|
||||
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", S("[!] There is already a sign for this arena!")))
|
||||
end
|
||||
return end
|
||||
|
||||
-- cambio la scritta
|
||||
arena_lib.update_sign(pos, arena)
|
||||
|
||||
-- aggiungo il cartello ai cartelli dell'arena
|
||||
arena.sign = pos
|
||||
update_storage(false, mod, arena_ID, arena)
|
||||
|
||||
-- salvo il nome della mod e l'ID come metadato nel cartello
|
||||
minetest.get_meta(pos):set_string("mod", mod)
|
||||
minetest.get_meta(pos):set_int("arenaID", arena_ID)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function arena_lib.enable_arena(sender, mod, arena_ID)
|
||||
|
||||
local mod_ref = arena_lib.mods[mod]
|
||||
|
@ -424,6 +461,9 @@ function arena_lib.disable_arena(sender, mod, arena_ID)
|
|||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
--------------GESTIONE PARTITA-----------------
|
||||
----------------------------------------------
|
||||
|
|
36
items.lua
36
items.lua
|
@ -1,5 +1,7 @@
|
|||
local S = minetest.get_translator("arena_lib")
|
||||
|
||||
|
||||
|
||||
minetest.register_tool("arena_lib:immunity", {
|
||||
|
||||
description = S("You're immune!"),
|
||||
|
@ -10,8 +12,9 @@ minetest.register_tool("arena_lib:immunity", {
|
|||
|
||||
|
||||
|
||||
--[[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]]
|
||||
-- sovrascrizione "on_punch" nodo base dei cartelli per farli entrare nell'arena
|
||||
-- se sono cartelli appositi e "on_timer" per teletrasportarli in partita quando
|
||||
-- la queue finisce
|
||||
minetest.register_tool("arena_lib:create_sign", {
|
||||
|
||||
description = S("Left click on a sign to create/remove the access to the arena"),
|
||||
|
@ -30,33 +33,10 @@ minetest.register_tool("arena_lib:create_sign", {
|
|||
if not def or def.entity_info == nil then
|
||||
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", S("[!] That's not a sign!")))
|
||||
return end
|
||||
|
||||
|
||||
def.number_of_lines = 5
|
||||
|
||||
local mod = itemstack:get_meta():get_string("mod")
|
||||
local arena_ID = itemstack:get_meta():get_int("arenaID")
|
||||
local arena = arena_lib.mods[mod].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(), S("Sign of arena @1 successfully removed", arena.name))
|
||||
else
|
||||
minetest.chat_send_player(user:get_player_name(), minetest.colorize("#e6482e", S("[!] There is already a sign for this arena!")))
|
||||
end
|
||||
return end
|
||||
|
||||
-- cambio la scritta
|
||||
arena_lib.update_sign(pos, arena)
|
||||
|
||||
-- aggiungo il cartello ai cartelli dell'arena
|
||||
arena.sign = pos
|
||||
|
||||
-- salvo il nome della mod e l'ID come metadato nel cartello
|
||||
minetest.get_meta(pos):set_string("mod", mod)
|
||||
minetest.get_meta(pos):set_int("arenaID", arena_ID)
|
||||
|
||||
arena_lib.set_sign(itemstack, user, pos)
|
||||
end,
|
||||
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue