Bugfix: Si hacías dos runas de "sethome", la segunda sobreescribía los datos de
"sethome"; pero al romper la primera, ésta borraba los datos de "sethome": - Se ha implementado un sistema de token. Cada runa posee un identificador único que inscribe en el registro de homes. De esta manera, al destruirse la runa sólo elimina el warp si su token coincide con el registrado. -- Yawinmaster
parent
9f3ad200a1
commit
a48f009192
|
@ -20,7 +20,8 @@ local loadHomes = function ()
|
|||
x = tonumber(paramlist[2]),
|
||||
y = tonumber(paramlist[3]),
|
||||
z = tonumber(paramlist[4]),
|
||||
}
|
||||
},
|
||||
token = paramlist[5],
|
||||
}
|
||||
table.insert(magic.playerHomes, w)
|
||||
end
|
||||
|
@ -34,7 +35,7 @@ local saveHomes = function()
|
|||
return
|
||||
end
|
||||
for i = 1,table.getn(magic.playerHomes) do
|
||||
local s = magic.playerHomes[i].player .. " " .. magic.playerHomes[i].homepos.x .. " " .. magic.playerHomes[i].homepos.y .. " " .. magic.playerHomes[i].homepos.z .. "\n"
|
||||
local s = magic.playerHomes[i].player .. " " .. magic.playerHomes[i].homepos.x .. " " .. magic.playerHomes[i].homepos.y .. " " .. magic.playerHomes[i].homepos.z .. " " .. magic.playerHomes[i].token .. "\n"
|
||||
fh:write(s)
|
||||
end
|
||||
fh:close()
|
||||
|
@ -136,6 +137,8 @@ magic.register_recipe("home_warp",
|
|||
|
||||
local arrID = checkHome(player:get_player_name())
|
||||
|
||||
local token = node.under.x .. node.under.y .. node.under.z
|
||||
|
||||
if arrID == -1 then
|
||||
arrID = #magic.playerHomes + 1
|
||||
end
|
||||
|
@ -143,6 +146,7 @@ magic.register_recipe("home_warp",
|
|||
magic.playerHomes[arrID] = {}
|
||||
magic.playerHomes[arrID].player = player:get_player_name()
|
||||
magic.playerHomes[arrID].homepos = {x = node.under.x, y = node.under.y + 1, z = node.under.z}
|
||||
magic.playerHomes[arrID].token = token
|
||||
|
||||
saveHomes()
|
||||
|
||||
|
@ -152,7 +156,8 @@ magic.register_recipe("home_warp",
|
|||
minetest.set_node({x = posx + i, y = posy, z = posz + j}, {name="magic:magicalobsidian"})
|
||||
|
||||
local meta = minetest.get_meta({x = posx + i, y = posy, z = posz + j})
|
||||
meta:set_string("referido",player:get_player_name())
|
||||
meta:set_string("magic_referido",player:get_player_name())
|
||||
meta:set_string("magic_token",token)
|
||||
end
|
||||
j = j + 1
|
||||
end
|
||||
|
@ -193,14 +198,16 @@ minetest.register_node("magic:magicalobsidian", {
|
|||
local meta = minetest.env:get_meta(pos)
|
||||
meta:from_table(oldmetadata)
|
||||
|
||||
local s = meta:get_string("referido")
|
||||
local s = meta:get_string("magic_referido")
|
||||
|
||||
local home = checkHome(s)
|
||||
if home ~= -1 then
|
||||
table.remove(magic.playerHomes,home)
|
||||
saveHomes()
|
||||
return
|
||||
if magic.playerHomes[home].token == meta:get_string("magic_token") then
|
||||
table.remove(magic.playerHomes,home)
|
||||
saveHomes()
|
||||
end
|
||||
end
|
||||
return
|
||||
end,
|
||||
|
||||
drop = "default:obsidian",
|
||||
|
|
Loading…
Reference in New Issue