Advertisement
Bronza_180

test 2

Feb 26th, 2025 (edited)
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.55 KB | None | 0 0
  1. -- Подключаем компоненты
  2. local component = require("component")
  3. local event = require("event")
  4. local term = require("term")
  5. local os = require("os")
  6.  
  7. -- Проверяем наличие компонента chat_box
  8. if not component.isAvailable("chat_box") then
  9.   print("Чат-бокс не найден. Убедитесь, что он установлен и подключен.")
  10.   return
  11. end
  12.  
  13. -- Проверяем наличие компонента redstone
  14. if not component.isAvailable("redstone") then
  15.   print("Redstone-компонент не найден. Убедитесь, что он подключен.")
  16.   return
  17. end
  18.  
  19. local chat_box = component.chat_box
  20. local redstone = component.redstone
  21.  
  22. -- Настройки
  23. local VOTE_DURATION = 60 -- Время голосования в секундах
  24. local VOTE_PREFIX = "~" -- Префикс для голосования
  25.  
  26. -- Таблицы для хранения данных
  27. local votes = {
  28.     disable_rain = {}, -- Голоса за отключение дождя
  29.     enable_day = {}    -- Голоса за включение дня
  30. }
  31.  
  32. -- Функция для обработки сообщений в чате
  33. local function handle_chat_message(player, message)
  34.     -- Проверяем, начинается ли сообщение с префикса голосования
  35.     if message:sub(1, 1) == VOTE_PREFIX then
  36.         local vote_option = message:sub(2):lower() -- Убираем префикс и приводим к нижнему регистру
  37.  
  38.         -- Проверяем, голосовал ли игрок уже
  39.         if votes.disable_rain[player] or votes.enable_day[player] then
  40.             print(player .. " уже проголосовал.")
  41.             return
  42.         end
  43.  
  44.         -- Записываем голос
  45.         if vote_option == "да" then
  46.             votes.disable_rain[player] = true
  47.             print(player .. " проголосовал за отключение дождя.")
  48.         elseif vote_option == "нет" then
  49.             votes.enable_day[player] = true
  50.             print(player .. " проголосовал за включение дня.")
  51.         else
  52.             print(player .. " использовал неверный вариант голосования.")
  53.         end
  54.     end
  55. end
  56.  
  57. -- Функция для подведения итогов
  58. local function count_votes()
  59.     local disable_rain_count = 0
  60.     local enable_day_count = 0
  61.  
  62.     -- Подсчитываем голоса
  63.     for _ in pairs(votes.disable_rain) do
  64.         disable_rain_count = disable_rain_count + 1
  65.     end
  66.     for _ in pairs(votes.enable_day) do
  67.         enable_day_count = enable_day_count + 1
  68.     end
  69.  
  70.     -- Определяем победивший вариант
  71.     if disable_rain_count > enable_day_count then
  72.         redstone.setOutput(0, 15) -- Активируем командный блок для отключения дождя
  73.         print("Голосование завершено! Дождь отключен.")
  74.     else
  75.         redstone.setOutput(1, 15) -- Активируем командный блок для включения дня
  76.         print("Голосование завершено! День включен.")
  77.     end
  78.  
  79.     -- Очищаем голоса для следующего раунда
  80.     votes.disable_rain = {}
  81.     votes.enable_day = {}
  82. end
  83.  
  84. -- Основной цикл программы
  85. local function main()
  86.     print("Система голосования запущена!")
  87.     print("Игроки могут голосовать, написав в чат ~да или ~нет.")
  88.  
  89.     local start_time = os.time() -- Время начала голосования
  90.  
  91.     while true do
  92.         local current_time = os.time()
  93.         local elapsed_time = current_time - start_time
  94.  
  95.         -- Проверяем, истекло ли время голосования
  96.         if elapsed_time >= VOTE_DURATION then
  97.             count_votes() -- Подводим итоги
  98.             start_time = os.time() -- Сбрасываем таймер
  99.         end
  100.  
  101.         -- Ожидаем новые сообщения из чата
  102.         local event_data = {event.pull("chat_message")}
  103.         if event_data[1] == "chat_message" then
  104.             local player = event_data[2] -- Игрок
  105.             local message = event_data[3] -- Сообщение
  106.             handle_chat_message(player, message)
  107.         end
  108.     end
  109. end
  110.  
  111. -- Запуск программы
  112. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement