diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-10-28 16:48:47 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-10-28 16:48:47 +0100 |
commit | eba06fe1ad8be9fab56e26f71b0e7a48bb41f901 (patch) | |
tree | 1705977d49da210411fc62065ee655236b763d65 | |
download | deathswap-eba06fe1ad8be9fab56e26f71b0e7a48bb41f901.tar.xz |
Initial Commit
-rw-r--r-- | init.lua | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..16a18e6 --- /dev/null +++ b/init.lua @@ -0,0 +1,48 @@ +deathswap = {} +deathswap.players = {} + +minetest.register_on_prejoinplayer(function() + if #deathswap.players == 2 then + return false, "Deathswap is full!" + end +end) + +minetest.register_on_joinplayer(function(player) + deathswap.players[#deathswap.players + 1] = player + if #deathswap.players == 2 then + deathswap.start_swap() + end +end) + +minetest.register_on_leaveplayer(function(player) + if player == deathswap.players[1] then + table.remove(deathswap.players, 1) + elseif player == deathswap.players[2] then + table.remove(deathswap.players, 2) + end +end) + +minetest.register_on_dieplayer(function(player) + minetest.kick_player(player:get_player_name(), "You died :-)") +end) + +function deathswap.swap(seconds) + if #deathswap.players < 2 then + return + end + if seconds == 0 then + minetest.chat_send_all(minetest.colorize("#FF7300", "Swapping")) + local pos1 = deathswap.players[1]:get_pos() + local pos2 = deathswap.players[2]:get_pos() + deathswap.players[1]:set_pos(pos2) + deathswap.players[2]:set_pos(pos1) + deathswap.start_swap() + else + minetest.chat_send_all(minetest.colorize("#FF7300", "Swapping in " .. seconds .. " seconds")) + minetest.after(1, deathswap.swap, seconds - 1) + end +end + +function deathswap.start_swap() + minetest.after(5 * 60, deathswap.swap, 10) +end |