Epic/mods/spawn/commands.lua

96 lines
3.1 KiB
Lua

local breath_value = {}
local function has_interact(player)
local name = player:get_player_name()
return not minetest.check_player_privs(name, { interact = true })
end
minetest.register_chatcommand('spawn', {
description = 'Teleport to spawn',
privs = {home=true},
func = function (name)
local player = minetest.get_player_by_name(name)
player:set_pos({x=1473, y=2486, z=2970})
default.player_attached[player] = false
default.player_set_animation(player, "stand", 30)
armor:set_player_armor(player)
end,
})
minetest.register_chatcommand('interact', {
description = 'Gives player interact',
privs = {home=true},
func = function(name, params)
if params == 'inverted-octopus' then
local privs = minetest.get_player_privs(name)
privs.interact = true
minetest.set_player_privs(name, privs)
minetest.chat_send_player(name, 'Enjoy your stay on the Epic server!')
else
minetest.chat_send_player(name, 'Check your spelling and try again.')
end
end,
})
minetest.register_chatcommand('rules', {
description = 'Shows player rules',
func = function(name, other_player)
if other_player ~= '' then
if not minetest.get_player_by_name(other_player) then
minetest.chat_send_player(name, 'No player with that name.')
else
local n00b = minetest.get_player_by_name(other_player)
if has_interact(n00b) then
minetest.show_formspec(other_player, 'rules', spawn_rules_formspec)
end
end
else
minetest.show_formspec(name, 'rules', spawn_rules_formspec)
end
end,
})
minetest.register_chatcommand('news', {
description = 'Shows player news',
func = function(name)
minetest.show_formspec(name, 'news', spawn_news_formspec)
end,
})
minetest.register_on_joinplayer(function(player)
player:set_properties({breath_max = 40})
player:set_breath(40)
if has_interact(player) then
local player_name = player:get_player_name()
minetest.chat_send_player(player_name, 'Read the rules for information on how to get interact.')
minetest.show_formspec(player_name, 'rules', spawn_rules_formspec)
sounds.random_player()
else
local player_name = player:get_player_name()
local info_count = tonumber(spawn.storage:get_string(player_name..'_info_count')) or 15
if info_count < 15 then
local new_count = (info_count + 1)
spawn.storage:set_string(player_name..'_info_count', new_count)
minetest.show_formspec(player_name, '_info_message', spawn_info_formspec)
end
end
end)
local function drown(player, air)
local new_breath = (air-4)
breath_value[player] = new_breath
player:set_breath(new_breath)
end
minetest.register_playerevent(function(player, event)
local air = player:get_breath()
local old_air = breath_value[player] or 40
if event == "breath_changed" then
if old_air > air then --Drowning
drown(player, air)
else --Filling lungs with air
breath_value[player] = air
end
end
end)