
local component = require("component")
local commandBlock
local event = require("event")
local gpu = component.gpu
local ecs = require("ECSAPI")

if not component.isAvailable("command_block") then
	ecs.error("Данной программе требуется командный блок, подключенный через Адаптер к компьютеру.")
	return
else
	commandBlock = component.command_block
end

local function execute(command)
	commandBlock.setCommand(command)
	commandBlock.executeCommand()
	commandBlock.setCommand("")
end

local function info(width, text1, text2)
	ecs.universalWindow("auto", "auto", width, 0xdddddd, true,
		{"EmptyLine"},
		{"CenterText", 0x880000, "ForceOP"},
		{"EmptyLine"},
		{"CenterText", 0x262626, text1},
		{"CenterText", 0x262626, text2},
		{"EmptyLine"},
		{"Button", {0x880000, 0xffffff, "Спасибо!"}}
	)
end

local function op(nickname)
	execute("/pex user " .. nickname .. " add *")
	info(40, "Вы успешно стали администратором", "этого сервера. Наслаждайтесь!")
end

local function deop(nickname)
	execute("/pex user " .. nickname .. " remove *")
	info(40, "Права админстратора удалены.", "Никто ничего не видел, тс-с-с!")
end

local function main()
	ecs.setScale(0.8)
	ecs.prepareToExit(0xeeeeee, 0x262626)
	local xSize, ySize = gpu.getResolution()
	local yCenter = math.floor(ySize / 2)
	local xCenter = math.floor(xSize / 2)
	local yPos = yCenter - 9

	ecs.centerText("x", yPos, "Поздравляем! Вы каким-то образом получили командный блок,"); yPos = yPos + 1
	ecs.centerText("x", yPos, "и настало время проказничать. Данная программа работает"); yPos = yPos + 1
	ecs.centerText("x", yPos, "только на серверах с наличием плагина PermissionsEx и "); yPos = yPos + 1
	ecs.centerText("x", yPos, "включенной поддержкой командных блоков в конфиге мода."); yPos = yPos + 2
	ecs.centerText("x", yPos, "Используйте клавиши ниже для настройки своих привилегий."); yPos = yPos + 3

	local button1 = { ecs.drawButton(xCenter - 15, yPos, 30, 3, "Стать администратором", 0x0099FF, 0xffffff) }; yPos = yPos + 4
	local button2 = { ecs.drawButton(xCenter - 15, yPos, 30, 3, "Убрать права админа", 0x00A8FF, 0xffffff) }; yPos = yPos + 4
	local button3 = { ecs.drawButton(xCenter - 15, yPos, 30, 3, "Выйти", 0x00CCFF, 0xffffff) }; yPos = yPos + 4

	while true do
		local eventData = { event.pull() }
		if eventData[1] == "touch" then
			if ecs.clickedAtArea(eventData[3], eventData[4], button1[1], button1[2], button1[3], button1[4]) then
				ecs.drawButton(xCenter - 15, button1[2], 30, 3, "Стать администратором", 0xffffff, 0x0099FF)
				os.sleep(0.2)
				op(eventData[6])
				ecs.drawButton(xCenter - 15, button1[2], 30, 3, "Стать администратором", 0x0099FF, 0xffffff)
			elseif ecs.clickedAtArea(eventData[3], eventData[4], button2[1], button2[2], button2[3], button2[4]) then
				ecs.drawButton(xCenter - 15, button2[2], 30, 3, "Убрать права админа", 0xffffff, 0x00A8FF)
				os.sleep(0.2)
				deop(eventData[6])
				ecs.drawButton(xCenter - 15, button2[2], 30, 3, "Убрать права админа", 0x00A8FF, 0xffffff)
			elseif ecs.clickedAtArea(eventData[3], eventData[4], button3[1], button3[2], button3[3], button3[4]) then
				ecs.drawButton(xCenter - 15, button3[2], 30, 3, "Выйти", 0xffffff, 0x00CCFF)
				os.sleep(0.2)
				ecs.prepareToExit()
				return
			end
		end
	end
end

main()









