Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Подключаем компоненты
- local component = require("component")
- local event = require("event")
- local term = require("term")
- local os = require("os")
- -- Проверяем наличие компонента chat_box
- if not component.isAvailable("chat_box") then
- print("Чат-бокс не найден. Убедитесь, что он установлен и подключен.")
- return
- end
- -- Проверяем наличие компонента redstone
- if not component.isAvailable("redstone") then
- print("Redstone-компонент не найден. Убедитесь, что он подключен.")
- return
- end
- local chat_box = component.chat_box
- local redstone = component.redstone
- -- Настройки
- local VOTE_DURATION = 60 -- Время голосования в секундах
- local VOTE_PREFIX = "~" -- Префикс для голосования
- -- Таблицы для хранения данных
- local votes = {
- disable_rain = {}, -- Голоса за отключение дождя
- enable_day = {} -- Голоса за включение дня
- }
- -- Функция для обработки сообщений в чате
- local function handle_chat_message(player, message)
- -- Проверяем, начинается ли сообщение с префикса голосования
- if message:sub(1, 1) == VOTE_PREFIX then
- local vote_option = message:sub(2):lower() -- Убираем префикс и приводим к нижнему регистру
- -- Проверяем, голосовал ли игрок уже
- if votes.disable_rain[player] or votes.enable_day[player] then
- print(player .. " уже проголосовал.")
- return
- end
- -- Записываем голос
- if vote_option == "да" then
- votes.disable_rain[player] = true
- print(player .. " проголосовал за отключение дождя.")
- elseif vote_option == "нет" then
- votes.enable_day[player] = true
- print(player .. " проголосовал за включение дня.")
- else
- print(player .. " использовал неверный вариант голосования.")
- end
- end
- end
- -- Функция для подведения итогов
- local function count_votes()
- local disable_rain_count = 0
- local enable_day_count = 0
- -- Подсчитываем голоса
- for _ in pairs(votes.disable_rain) do
- disable_rain_count = disable_rain_count + 1
- end
- for _ in pairs(votes.enable_day) do
- enable_day_count = enable_day_count + 1
- end
- -- Определяем победивший вариант
- if disable_rain_count > enable_day_count then
- redstone.setOutput(0, 15) -- Активируем командный блок для отключения дождя
- print("Голосование завершено! Дождь отключен.")
- else
- redstone.setOutput(1, 15) -- Активируем командный блок для включения дня
- print("Голосование завершено! День включен.")
- end
- -- Очищаем голоса для следующего раунда
- votes.disable_rain = {}
- votes.enable_day = {}
- end
- -- Основной цикл программы
- local function main()
- print("Система голосования запущена!")
- print("Игроки могут голосовать, написав в чат ~да или ~нет.")
- local start_time = os.time() -- Время начала голосования
- while true do
- local current_time = os.time()
- local elapsed_time = current_time - start_time
- -- Проверяем, истекло ли время голосования
- if elapsed_time >= VOTE_DURATION then
- count_votes() -- Подводим итоги
- start_time = os.time() -- Сбрасываем таймер
- end
- -- Ожидаем новые сообщения из чата
- local event_data = {event.pull("chat_message")}
- if event_data[1] == "chat_message" then
- local player = event_data[2] -- Игрок
- local message = event_data[3] -- Сообщение
- handle_chat_message(player, message)
- end
- end
- end
- -- Запуск программы
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement