essentials-cd2025/ui/ban_menu.lua
BlackImpostor 9c073d5578
0.8
2024-06-06 18:11:01 +03:00

61 lines
2.3 KiB
Lua

local S = essentials.translate
local FORMNAME = "essentials:ban_menu"
function show_ban_menu(name)
local formspec = "formspec_version[6]"
local ids = ""
for i, player in ipairs(minetest.get_connected_players()) do
ids = ids..","..player:get_player_name()
end
formspec = formspec..
"size[12.5,4.5]"..
"dropdown[4.5,0.3;6.8,1.1;player;"..ids..";1;false]"..
"field[4.5,2;6.8,1.1;reason;"..S("Reason of ban")..";]"..
"button[4.5,3.3;6.8,1.1;ban_btn;"..S("Ban the player").."]"..
"image[0.2,0.2;4.2,4.2;essentials_ban_user.png]"..
"image_button_exit[11.4,0.1;1,1;essentials_close_btn.png;close_btn;]"
minetest.show_formspec(name, FORMNAME, formspec)
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= FORMNAME then
return
end
local name = player:get_player_name()
minetest.sound_play("clicked", name)
if (fields.player == nil) or (fields.player == "") then
return
end
if minetest.get_player_by_name(fields.player) == nil then
return
end
local player_ban = minetest.get_player_by_name(fields.player)
if fields.ban_btn then
local player_banned = fields.player
local reason_ban = fields.reason
if core.is_singleplayer() then
minetest.chat_send_player(name, core.colorize("red", S("You cannot ban in single mode!")))
minetest.sound_play("error", name)
elseif not player_ban then
minetest.chat_send_player(name, core.colorize("red", S("Player not found!")))
minetest.sound_play("error", name)
elseif reason_ban == "" then
core.ban_player(fields.player)
core.chat_send_all("Banned "..player_banned..".")
for i, player in ipairs(minetest.get_connected_players()) do
minetest.sound_play("error", player:get_player_name())
end
else
core.ban_player(fields.player)
core.chat_send_all("Banned "..player_banned.." for "..reason_ban..".")
for i, player in ipairs(minetest.get_connected_players()) do
minetest.sound_play("error", player:get_player_name())
end
end
end
return
end)