]> git.lizzy.rs Git - deathswap.git/commitdiff
Initial Commit
authorElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 28 Oct 2020 15:48:47 +0000 (16:48 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 28 Oct 2020 15:48:47 +0000 (16:48 +0100)
init.lua [new file with mode: 0644]

diff --git a/init.lua b/init.lua
new file mode 100644 (file)
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