2021-02-09 20:25:19 -08:00
|
|
|
function lobby.press_button(pos, node, clicker)
|
|
|
|
local name = clicker:get_player_name()
|
2022-02-05 19:00:09 -08:00
|
|
|
local player_attributes = clicker:get_meta()
|
|
|
|
local voting = player_attributes:get_string('voting')
|
2021-02-09 20:25:19 -08:00
|
|
|
local map_id = lobby.game[name]
|
|
|
|
if voting == 'false' then
|
|
|
|
if map_id ~= 'lobby' and not string.match(map_id, '_ghost') then
|
|
|
|
local game_data = lobby.savedata.data[map_id]
|
|
|
|
local game_pos = game_data['level_pos']
|
|
|
|
local survivors = lobby.players_on_level(map_id)
|
|
|
|
lobby.votes[map_id] = 0
|
|
|
|
for _, player in pairs(minetest.get_connected_players()) do
|
|
|
|
local rname = player:get_player_name()
|
|
|
|
if lobby.game[rname] == map_id then
|
|
|
|
lobby.voted[rname] = false
|
|
|
|
player:set_physics_override({speed=0})
|
2022-02-05 19:00:09 -08:00
|
|
|
player_attributes:get_string('voting', 'true')
|
2021-02-09 20:25:19 -08:00
|
|
|
minetest.chat_send_player(rname, minetest.colorize('#FF0000', name..' called an emergency meeting!'))
|
|
|
|
minetest.show_formspec(rname, 'lobby:voting', lobby.voting_formspec(survivors))
|
|
|
|
player:setpos({x=game_pos.x+(math.random(-3,3)),y=game_pos.y,z=game_pos.z+(math.random(-3,3))})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
minetest.chat_send_player(name, 'Sorry, you can\'t do that now.')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
minetest.register_node('lobby:emergency_button', {
|
|
|
|
description = 'Emergency Button',
|
|
|
|
drawtype = 'mesh',
|
|
|
|
mesh = 'lobby_button.obj',
|
|
|
|
tiles = {'lobby_button_frame.png', 'lobby_button_button.png'},
|
2021-03-19 20:27:47 -07:00
|
|
|
use_texture_alpha = 'clip',
|
2021-02-09 20:25:19 -08:00
|
|
|
groups = {breakable=1},
|
|
|
|
paramtype = 'light',
|
|
|
|
paramtype2 = 'facedir',
|
|
|
|
selection_box = {
|
|
|
|
type = 'fixed',
|
|
|
|
fixed = {-.5, -.5, -.5, .5, -.3, .5},
|
|
|
|
},
|
|
|
|
collision_box = {
|
|
|
|
type = 'fixed',
|
|
|
|
fixed = {-.5, -.5, -.5, .5, -.3, .5},
|
|
|
|
},
|
|
|
|
on_place = minetest.rotate_and_place,
|
|
|
|
on_rightclick = lobby.press_button,
|
|
|
|
on_punch = lobby.press_button,
|
|
|
|
})
|