multispawn/init.lua

52 lines
1.7 KiB
Lua

-- register privs for spawn points
minetest.register_privilege("spawn1", {description = "Starting spawn.", give_to_singleplayer=false})
minetest.register_privilege("spawn2", {description = "Second spawn.", give_to_singleplayer=false})
minetest.register_privilege("spawn3", {description = "Third spawn.", give_to_singleplayer=false})
minetest.register_privilege("spawn4", {description = "Fourth spawn.", give_to_singleplayer=false})
-- function to select and move player to correct spawn
local function respawn(name)
local spawnpos
-- check minetest.conf file for correct coordinates depending on privs
if minetest.check_player_privs(name, {spawn4=true}) then
spawnpos = minetest.setting_get_pos("spawn_coordinate_4")
elseif minetest.check_player_privs(name, {spawn3=true}) then
spawnpos = minetest.setting_get_pos("spawn_coordinate_3")
elseif minetest.check_player_privs(name, {spawn2=true}) then
spawnpos = minetest.setting_get_pos("spawn_coordinate_2")
elseif minetest.check_player_privs(name, {spawn1=true}) then
spawnpos = minetest.setting_get_pos("spawn_coordinate_1")
end
-- return if no valid spawn position...
if not spawnpos then
minetest.chat_send_player(name, "No spawn point set...")
else
-- if spawn position found, teleport player
local player = minetest.get_player_by_name(name)
player:setpos(spawnpos)
minetest.chat_send_player(name, "Teleported to Current Spawn!")
end
return true
end
-- spawn command
minetest.register_chatcommand("spawn", {
description = "Teleport to current spawn point.",
privs = {},
func = function(name)
respawn(name)
end
})
-- teleports player on respawn
minetest.register_on_respawnplayer(function(player)
if respawn(player:get_player_name()) then
return true
end
end)