Advertisement
Guest User

K.lua

a guest
Feb 23rd, 2020
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 31.11 KB | None | 0 0
  1. --|============================|
  2. --|     Бот для глобал чата.   |
  3. --|       Автор: SkyDrive_     |
  4. --|Modded by: Tekyera, krovyaka|
  5. --|Проект McSkill, cерв TM, HTC|
  6. --|         22.12.2016         |
  7. --|    Последнее обновление:   |
  8. --|         01.05.2017         |
  9. --|        Version: 3.01       |
  10. --|============================|
  11. local component = require("component")
  12. local term = require("term")
  13. local event = require("event")
  14. local unicode=require("unicode")
  15. local computer = require("computer")
  16. local fs = require("filesystem")
  17. local shell = require("shell")
  18. if not fs.exists("/lib/sky.lua") then
  19.     shell.execute("wget https://www.dropbox.com/s/29fhy9l54v1yclo/sky.lua?dl=1 /lib/sky.lua")
  20. end
  21. local sky = require("sky")
  22. local g = component.gpu
  23. local c = component.chat_box
  24. event.shouldInterrupt = function () return false end
  25. --------------------Настройки--------------------
  26. local ODMENS = {"SkyDrive_"} --Люди на серве, которые могут писать от имени бота, обновлять его и т.д.
  27. local VAIP = "29.11.2019" --Дата последнего вайпа
  28. local COLOR1 = "§a" --Рамка
  29. local COLOR2 = "§b" --Цвет кнопок
  30. local COLOR_CMD = 0xffff00 --цвет консоли
  31. local MUTE_DIF = 10 --Разница в голосах, чтоб замутить игрока
  32. local BOT_NAME = "§7❽ §8[§4Малышка§8] §8Kelira" --Преффикс и имя бота
  33. local FLOOD = 30 --Интервал в сек. через который даётся мут за флуд
  34. -------------------------------------------------
  35. local MAT = {"пидор", "пидар", "ебырь", "ебаный", "нихуя", "нахуя", "ебнутый", "ёбну", "ебись", "пидр", "хуй", "хуя", "хуи", "нахуй",
  36. "похуй", "хуевый", "хуесос", "хуеглот", "отъебись", "мудак", "мудила", "мудень", "долбаеб", "долбоеб", "хуета", "ебать", "ебал", "ебу",
  37. "ебло", "уебан", "уебок", "уебки", "ахуеть", "ахуительно", "заебись", "заебал", "ебет", "ебля", "нехуя", "ебанат", "уебище", "уёбище", "выебать",
  38. "кончеглот", "выебу", "хуйня", "мудозвон", "выблядок", "еблище", "впиздячил", "жидоеб", "выблядовал", "еблан", "мразь", "blyat", "blyad", "ebal",
  39. "cyka", "сука", "suka", "pidor", "pidar", "hui", "huesos", "ueban", "ебанный", "хуево", "залупа", "гандон", "гондон", "xyi", "xui", "наебал",
  40. "наебывают", "наёбывают", "ахуе", "ahue", "loh", "su4ka", "пизд", "пезд", "бляд", "блят"
  41. }
  42.  
  43. --Слова которые проверяются только в их исходном виде.
  44. local COMPOSITE = {"бля", "хули", "педик", "suka"}
  45.  
  46. local WORDS = {"солнышко", "зайка", "пупсик", "котик", "сладкий", "милый", "медвежонок", "ангелочек", "малыш", "кисик",
  47. "любимый", "родной", "мой герой", "котенок"}
  48.  
  49. local OFF = {"убрать", "выключить", "отключить", "вырубить", "офф", "очистить", "снять"}
  50. local SELL = {"сетку", "полосы", "полосочки", "zone", "зону", "выделение", "линии"}
  51. local HELLO = {"привет", "прив", "ку", "q", "qq", "здаров", "здарова", "добрый день", "добрый вечер", "доброе утро",
  52. "здравствуйте", "здрасьте", "дратути", "хай"}
  53. local BYE = {"бб", "bb", "пока", "досвидания", "досвиданья", "досвидули","спокойной"}
  54.  
  55. local RULES = { --Правила проекта
  56. {"1.1", "Любой человек, зарегистрировавшийся на проекте, тем самым соглашается со всеми правилами, перечисленными ниже. Незнание правил не освобождает Вас от ответственности."},
  57. {"1.2", "Вы сами несете ответственность за безопасность своего аккаунта и обязуетесь соблюдать все надлежащие меры по обеспечению его безопасности. Взлом аккаунта не является оправданием, если игрок обвиняется в нарушении правил."},
  58. {"1.3", "Сервис бесплатен и предоставляется как есть без каких-либо гарантий правильной работы. Администрация оставляет за собой право не возвращать вещи, потерянные в результате бага, отката, смерти игрока, нестабильной работы сервера и т.п."},
  59. {"1.4", "При блокировке аккаунта, все игровые ценности, предметы в инвентаре, территория, содержимое сундуков и прочее не подлежат передаче другим игрокам или возврату."},
  60. {"1.5", "Администрация имеет право наказать игрока по причине, не указанной в настоящих правилах."},
  61. {"1.6", "Любые игровые ценности игрока могут быть изъяты и удалены в следующих случаях:" .. string.char(10) .. " - игрок не входил в игру более 30 дней" .. string.char(10) .. " - игровые ценности были получены нечестным путем или в результате ошибки в работе сервера"},
  62. {"1.7", "Запрещена реклама и упоминание сторонних проектов в любом её виде.", "Наказание: Перманентный бан."},
  63. {"1.8", "Запрещено использовать следующие ники:" .. string.char(10) .. " - содержащие оскорбления или нецензурные выражения" .. string.char(10) .. " - содержащие фразы Admin, Server, Mod, Help, OP и т.п." .. string.char(10) .. " - схожие с никами администрации", "Наказание: Перманентный бан."},
  64. {"1.9", "Запрещено устанавливать следующие скины и плащи:" .. string.char(10) .. " - содержащие надписи с оскорблениями или нецензурными выражениями" .. string.char(10) .. " - носящие порнографический характер" .. string.char(10) .. " - имеющие отношение к нацизму", "Наказание: Бан на 1 час. При рецидиве – Бан от 1 до 7 дней."},
  65. {"1.10", "Запрещено лжесвидетельствовать против игроков, подставлять их, подделывать доказательства, шантажировать доказательствами нарушения игрока.", "Наказание: Бан на 7 дней. При рецидиве – Бан от 7 до 30 дней."},
  66. {"1.11", "Жалобы на нарушения должны быть поданы не позднее 48 часов с момента фиксации."},
  67. {"1.12", "Запрещено покупать или продавать игровые ресурсы, игровой аккаунт, предоставлять прочие услуги за реальные деньги или в обмен на другие ценности, не связанные с проектом; передавать аккаунт третьим лицам.", "Наказание: Перманентный бан."},
  68. {"1.13", "Модератор имеет право выдать наказание по дополнительным правилам, которые указаны в описании каждого сервера. Важно! На каждом сервере свои дополнительные правила. Они также являются частью основных правил."},
  69. {"1.14", "Если у игрока имеется уже забаненный аккаунт, то модерация в праве банить последующие аккаунты игрока, на максимально полученный срок."},
  70. {"1.15", "Средства, потраченные на донат, являются пожертвованием, идут на развитие проекта и не могут быть возвращены ни при каких обстоятельствах."},
  71. {"1.16", "В случае необходимости игрок может быть временно забанен модерацией, на время разрешения инцидента с нарушением правил. "},
  72. {"2.1", "Регулировка отношений внутри региона происходит самими игроками (если вы добавляете игрока в регион, он имеет полное право забрать все ваши ресурсы)."},
  73. {"2.2", "Другой игрок не обязан возвращать вам потерянные в PvP или же случайно выброшенные вещи."},
  74. {"2.3", "Запрещено:" .. string.char(10) .. " - использовать или обсуждать изменения файлов клиента, ошибки (баги) в работе сервера и любые сторонние программы, дающие дополнительные преимущества в игре или вредящие игровому процессу и серверу" .. string.char(10) .. " - использовать, распространять, хранить предметы, добытые нечестным путем", "Наказание: Бан от 7 до 360 дней."},
  75. {"2.4", "Запрещено:" .. string.char(10) .. "– вводить в заблуждение игроков с целью получения собственной выгоды" .. string.char(10) .. "– вводить в заблуждение представителей администрации.", "Наказание: бан от 7 до 180 дней" .. string.char(10) .. "– выдавать себя за должностное лицо проекта/сервера, если вы таковым не являетесь.", "Наказание: бан от 3 до 7 дней. При рецидиве – бан от 7 до 30 дней"},
  76. {"2.5", "Запрещено продавать блоки напечатанные на 3D принтере схожие с приборами и прочими механизмами, без указания того, что это 3D модель.", "Наказание: Бан от 1 до 7 дней."},
  77. {"2.6", "Запрещено убивать игроков, заманивая к себе обманом, рекламой, запросом на телепортацию.", "Наказание: Бан от 1 до 3 дней, изъятие выбитых ресурсов. При рецидиве – Бан от 3 до 10 дней. "},
  78. {"2.7", "Запрещено совершать любые действия, направленные на дестабилизацию экономики сервера.", "Наказание: Бан от 1 до 7 дней. При рецидиве – Бан от 7 до 30 дней."},
  79. {"2.8", "Запрещено нарушать правила официальных (созданных или одобренных администрацией) ивентов или мешать их проведению.", "Наказание: Указывается в правилах ивента. Срок наказания не должен превышать 24 часов."},
  80. {"2.9", "Запрещены оскорбления и нецензурные выражения в названиях предметов, варпов, животных.", "Наказание: Бан на 1 день и удаление предмета, варпа, животного. При рецидиве – Бан от 1 до 7 дней."},
  81. {"2.10", "Запрещено наносить вред чужим постройкам, в том числе:" .. string.char(10) .. " - приносить вред чужим постройкам с помощью поршней" .. string.char(10) .. " - убивать мирных животных в загонах/выталкивать животных из загонов" .. string.char(10) .. " - намеренно блокировать доступ к чужим сооружениям (выстраивая глухие стены, вырывая окопы, разливая жидкости)" .. string.char(10) .. " - уничтожать чужие посевы", "Наказание: Бан от 1 до 7 дней. При рецидиве – Бан от 7 до 30 дней."},
  82. {"2.11", "Запрещено создание/размещение объектов:" .. string.char(10) .. " - имеющего форму чего-либо непристойного" .. string.char(10) .. " - содержащих в себе оскорбления или нецензурные выражения" .. string.char(10) .. " - представляющих из себя нацистские символы", "Наказание: Бан от 1 до 7 дней и снос постройки. При рецидиве – Бан от 7 до 30 дней."},
  83. {"2.12", "Запрещено намеренно портить внешний вид карты.", "Наказание: Предупреждение. При рецидиве — Бан на 1 день."},
  84. {"2.13", "Запрещено обходить анти-афк систему любыми способами. Не действует на сервера с низким онлайном (меньше половины от максимального количества игроков)", "Наказание: Бан на 1 день. При рецидиве – Бан от 1 до 7 дней."},
  85. {"3.0", "Приватные чаты(клан чаты/личные сообщения) не модерируется, если вам кто–то мешает используйте команду: «/ignore ник». "},
  86. {"3.1", "Запрещено:" .. string.char(10) .. " - отправлять одинаковые сообщения с разницей по времени менее 60 секунд" .. string.char(10) .. " - осуществлять рекламу чего-либо с разницей по времени менее 5 минут" .. string.char(10) .. " - отправлять сообщения не имеющие смысловой нагрузки" .. string.char(10) .. " – провоцировать флуд" .. string.char(10) .. " - использовать капс в сообщениях (кроме аббревиатур)", "Наказание: Мут от 30 минут до 3 часов. При рецидиве – Мут от 3 часов до 3 дней."},
  87. {"3.2", "Запрещено:" .. string.char(10) .. " - оскорблять игроков и их родственников" .. string.char(10) .. " - оскорблять представителей администрации, сервер или проект в целом (Мут от 1 до 24 часов)" .. string.char(10) .. " – употреблять мат (в том числе завуалированный), нецензурную лексику в любом виде" .. string.char(10) .. " - создавать конфликты путем отправки в чат провокационных сообщений" .. string.char(10) .. " - разжигать межнациональную рознь" .. string.char(10) .. " - подстрекать третьих лиц на нарушение правил" .. string.char(10) .. " - отправлять сообщения сексуального характера" .. string.char(10) .. " - угрожать расправой в реальной жизни", "Наказание: Мут от 1 до 6 часов. При рецидиве – Мут от 6 до 3 дней"},
  88. {"3.3", "Запрещены любые виды попрошайничества, в том числе:" .. string.char(10) .. " - просить модерацию сменить время суток или погодные условия" .. string.char(10) .. " - просить модерацию выровнять территорию" .. string.char(10) .. " - просьбы снять наказание с игрока", "Наказание: Мут от 30 минут до 2 часов. При рецидиве – Мут от 2 до 8 часов."},
  89. {"3.4", "Запрещена публичная критика, оспаривание или обсуждение действий администрации проекта. Для этого существует специальный раздел форума, где можно подать жалобу.", "Наказание: Мут от 30 минут до 3 часов. При рецидиве – Мут от 3 до 24 часов."},
  90. {"3.5", "Запрещено пускать ложные сведения о вайпе, обо всех вайпах всегда пишут в новостях на сайте и на форуме.", "Наказание: Мут от 30 минут до 3 часов. При рецидиве – Мут от 3 до 24 часов."},
  91. {"4.1", "Донатный модератор имеет право игнорировать нарушения других игроков."},
  92. {"4.2", "При выдаче наказания (kick, mute, ban) модератор обязан указать пункт правил или причину, по который игрок получил наказание. Также модератор обязан иметь необходимые доказательства нарушения игроков и предоставить их в случае необходимости в соответствующей теме на форуме."},
  93. {"4.3", "Модератор обязан/имеет право выбирать степень наказание в зависимости от тяжести нарушения, в первую очередь основываясь на здравом смысле и общественных нормах."},
  94. {"5.1", "Запрещено злоупотреблять привелегиями."},
  95. {"5.2", "Запрещено наказывать членов администрации и менять/снимать наказание другим игрокам, которых наказывал не он. Для изменения/снятия наказания с игрока - обращаться к главному модератору или администратору."},
  96. }
  97.  
  98. local glob, loc = {}, {"Инициализация...", "Программа успешно запущена..."}
  99. local flood = {}
  100. local flood_cmd = {}
  101. g.setResolution(160, 40)
  102. term.clear()
  103. c.setName("§6G§7")
  104. BOT_NAME = BOT_NAME .. COLOR1 .. ": "
  105.  
  106. function CheckAdmins(nick)
  107.     for i = 1, #ODMENS do
  108.         if ODMENS[i] == nick then
  109.             return true
  110.         end
  111.     end
  112.     return false
  113. end
  114.  
  115. function Questions(msg, nick) --Общение с ботом
  116.     local up = computer.uptime()
  117.     local BD = {
  118.     {120, {"всем"},HELLO, "Привет, " .. WORDS[math.random(1, #WORDS)] .. " :*"},
  119.     {120, {"всем"},BYE, "Всего хорошего, " .. WORDS[math.random(1, #WORDS)] .. " :*"},
  120.     {120, {"как", "чем", "почему"}, {"приватить"}, "Команды для привата: " .. COLOR2 .. "/warp world §8➢ " .. COLOR2 .. "/rtp §8➢ " .. COLOR1 .. "вместо топорика: " .. COLOR2 .. "/zone §8➢ " .. COLOR2 .. "/rg claim <name>"},
  121.     {120, {"как",},OFF,{"пвп","pvp"}, "Отключить пвп вы можете через команду §8➢ " .. COLOR2 .. "/buyflag" .. COLOR1 .. ". Цена: " .. COLOR2 .. "100 эм. " .. COLOR1 .. ":*"},
  122.     {120, {"когда", "давно"},{"был"},{"вайп"}, "Вайп был: " .. COLOR2 .. VAIP .. COLOR1 .. ", а вот когда будет - неизвестно :*"},
  123.     {120, {"как", "где"},{"выход", "выйти", "покинуть"},{"спавн"}, "Чтобы выйти со спавна, напиши" .. COLOR2 .. " /warp world " .. COLOR1 .. ":*"},
  124.     {120, {"как"},{"сменить","включ","переключ","менять","поменять"},{"бур", "гравитул"}, "Сменить режим инструмента можно, используя сочетание клавиш " .. COLOR2 .. "ПКМ + I"},
  125.     {120, {"как"},{"ночн"},{"зрение"}, "Включить ночное зрение на квантовом или нано-шлеме можно сочетанием клавиш " .. COLOR2 .. "Alt + I"},
  126.     {120, {"как"},{"летать","полет","полёт","лететь"}, "Вкл/откл полёт на гравитационном жилете или улучшенном наножилете можно клавишей " .. COLOR2 .. "R" .. COLOR1 .. ". На квантовом нагруднике это делается сочетанием клавиш " .. COLOR2 .. "Ctrl + I"},
  127.     {120, {"как"},{"планирова","левитировать","левитац"}, "Режим планирования или левитации на гравитационном жилете или улучшенном наножилете включается/отключается сочетанием клавиш " .. COLOR2 .. "Пробел + I"},
  128.     {120, {"как"},OFF,SELL, "Чтобы убрать сетку, пропиши §8➢ " .. COLOR2 .. "//sel"},
  129.     {120, {"как", "где"},{"открыть", "забрать", "получить", "брать", "взять"}, {"кейс"}, "По дефолту: " .. COLOR2 .. "F6" .. COLOR1 ..". Если не работает, нужно изменить в настройках управления, в самом низу :*"},
  130.     }
  131.  
  132.     local n = 0
  133.     for i = 1, #BD do
  134.         for j = 2, #BD[i]-1 do
  135.             for k = 1, #BD[i][j] do
  136.                 if string.find(msg, BD[i][j][k]) ~= nil then
  137.                     n = n + 1
  138.                     break
  139.                 end        
  140.             end
  141.             if n < j-1 then
  142.                 break
  143.             end
  144.         end
  145.         if n == #BD[i]-2 then
  146.             if not sky.checkMute(nick) then
  147.                 local j = 1
  148.                 while flood_cmd[j] ~= nil do
  149.                     if up - flood_cmd[j][2] > BD[flood_cmd[j][1]][1] then
  150.                         table.remove(flood_cmd, j)
  151.                     elseif flood_cmd[j][1] == i then
  152.                         return false
  153.                     else
  154.                         j = j + 1
  155.                     end
  156.                 end            
  157.                 c.say(BOT_NAME .. BD[i][#BD[i]])
  158.                 table.insert(flood_cmd, {i, up})
  159.                 return true                
  160.             end
  161.         else
  162.             n = 0
  163.         end
  164.     end
  165.     return false
  166. end
  167.  
  168. function Commands(msg, msg2, nick) --Команды
  169.     if msg == "-help" then
  170.         Help(nick)
  171.     elseif msg == "-votesun" then
  172.        
  173.     elseif msg == "-voteday" then
  174.    
  175.     elseif msg == "-votemute" then
  176.    
  177.     elseif string.sub(msg, 1,4) == "-inf" then
  178.         Inf(msg, nick)
  179.     elseif string.sub(msg, 1,5) == "-seen" then
  180.  
  181.     elseif msg == "-server" then
  182.    
  183.     elseif msg == "-botupdate" then
  184.         if CheckAdmins(nick) then
  185.             Update(nick)
  186.         end
  187.         return false
  188.     elseif string.sub(msg2, 1,2) == "==" then
  189.         if CheckAdmins(nick) then
  190.             Say(msg2, nick)
  191.         end
  192.         return false
  193.     else
  194.         return false
  195.     end
  196.     return true
  197. end
  198.  
  199. function Mats(msg, nick) --Мут за мат в глобал чат
  200.  
  201.     if checkMats(msg) then
  202.         if not sky.checkMute(nick) then
  203.             sky.com("tempmute " .. nick .. " 2 hour 3.2_from_kelira_with_love")
  204.             c.say(BOT_NAME .. "Не ругайся, " .. WORDS[math.random(1, #WORDS)] .. " :*")
  205.             return true
  206.         end
  207.     end
  208.        
  209.     return false
  210. end
  211.  
  212. function checkMats(msg)
  213.  
  214.     for i = 1, #MAT do
  215.         if (string.find(msg, MAT[i]) ~= nil) then
  216.             local t1 = " " .. string.match(msg, MAT[i])
  217.             local t2 = "!" .. string.match(msg, MAT[i])
  218.             if string.find(msg, t1) ~= nil or string.find(msg, t2) ~= nil then
  219.                 return true
  220.             end
  221.         end
  222.     end
  223.    
  224.     for i = 1, #COMPOSITE do   
  225.         if (string.find(msg, COMPOSITE[i]) ~= nil) then    
  226.             local t1 = " " .. string.match(msg, COMPOSITE[i]) .. " "
  227.             local t2 = "!" .. string.match(msg, COMPOSITE[i]) .. " "
  228.             local t3 = " " .. string.match(msg, COMPOSITE[i])
  229.             local t4 = "!" .. string.match(msg, COMPOSITE[i])
  230.             if string.find(msg, t1) ~= nil or string.find(msg, t2) ~= nil or
  231.                 string.sub(msg, unicode.len(msg) - unicode.len(t3)+1) == t3 or msg == t4 then
  232.                 return true
  233.             end
  234.         end
  235.     end
  236.    
  237.     return false
  238. end
  239.  
  240. function Flood(msg, nick) --3 Одинаковых сообщения с интервалом меньше, чем FLOOD, мут на час
  241.     local up = computer.uptime()
  242.     local i = 1
  243.     while flood[i] ~= nil do
  244.         if up - flood[i][3] > FLOOD then
  245.             table.remove(flood, i)
  246.         elseif msg == flood[i][1] and nick == flood[i][2] then
  247.             if flood[i][4] >= 2 then
  248.                 if not sky.checkMute(nick) then
  249.                     sky.com("tempmute " .. nick .. " 2 hour 3.1_from_kelira_with_love")
  250.                     c.say(BOT_NAME .. "Не флуди, " .. WORDS[math.random(1, #WORDS)] .. " :*")
  251.                     table.remove(flood, i)
  252.                     return true
  253.                 end
  254.                 return false
  255.             else
  256.                 flood[i][3] = up
  257.                 flood[i][4] = flood[i][4] + 1
  258.                 return false
  259.             end        
  260.         else
  261.             i = i + 1
  262.         end
  263.     end
  264.     table.insert(flood, {msg, nick, up, 1})
  265.     return false
  266. end
  267.  
  268. function Caps(msg, nick) --Мут за КАПС - Сообщение полностью капсом более 20 символов
  269.     if unicode.upper(msg) == msg and unicode.len(msg) >= 20 then
  270.         if string.find(msg,"1")==nil and string.find(msg,"2")==nil and string.find(msg,"3")==nil and string.find(msg,"4")==nil and string.find(msg,"5")==nil and string.find(msg,"6")==nil and string.find(msg,"7")==nil and string.find(msg,"8")==nil and string.find(msg,"9")==nil and string.find(msg,"0")==nil then
  271.             if not sky.checkMute(nick) then
  272.                 sky.com("tempmute " .. nick .. " 30 min 3.1_from_kelira_with_love")
  273.                 c.say(BOT_NAME .. "Не капси, " .. WORDS[math.random(1, #WORDS)] .. " :*")
  274.                 return true
  275.             end
  276.         end
  277.     end
  278.     return false
  279. end
  280.  
  281. function Help(nick) --Команда -help (Список доступных команд)
  282.     sky.com("w " .. nick .. " " .. BOT_NAME .. string.char(10) ..
  283.     "§8------------------------------------------------" .. string.char(10) ..
  284.     COLOR1 .. "Все команды вводятся в §4локал " .. COLOR1 .. "чат." .. string.char(10) ..
  285.     COLOR2 .. "-voteday §8➢ " .. COLOR1 .. "Начать голосование для смены времени суток на " .. COLOR2 .. "6:00 " .. COLOR1 .. "утра." .. string.char(10) ..
  286.     COLOR2 .. "-votesun §8➢ " .. COLOR1 .. "Начать голосование для отключения дождя." .. string.char(10) ..
  287.     COLOR2 .. "-votemute §8➢ " .. COLOR1 .. "Голосование, чтоб замутить игрока на 2 часа. Разница должна быть в +" .. MUTE_DIF .. " голосов, иначе вы получите мут на 10 мин." .. string.char(10) ..
  288.     COLOR2 .. "-mods §8➢ " .. COLOR1 .. "Модераторы в сети." .. string.char(10) ..
  289.     COLOR2 .. "-inf §8➢ " .. COLOR1 .. "Узнать информацию о нужном п.п." .. string.char(10) ..
  290.     COLOR2 .. "-seen §8➢ " .. COLOR1 .. "Получить онлайн/оффлайн время выбранного игрока." .. string.char(10) ..
  291.     COLOR2 .. "-server §8➢ " .. COLOR1 .. "Получить краткую информацию о работе сервера." .. string.char(10) ..
  292.     "§8------------------------------------------------")
  293. end
  294.  
  295. function Inf(msg, nick) --Инфа о правилах
  296.     if msg == "-inf" then
  297.         sky.com("w " .. nick .. " " .. COLOR1 .. " Введите пункт правил. Пример: " .. COLOR2 .. "-inf 3.1")
  298.     else
  299.         for i = 1, #RULES do
  300.             if string.sub(msg, 6, unicode.len(msg)) == RULES[i][1] then
  301.                 sky.com("w " .. nick .. " " .. COLOR1 .. RULES[i][2])
  302.                 if RULES[i][3] ~= nil then
  303.                     sky.com("w " .. nick .. " " .. COLOR2 .. RULES[i][3])
  304.                 end
  305.                 return true
  306.             end
  307.         end
  308.         sky.com("w " .. nick .. " " .. COLOR1 .. " Пункт правил введён неверно")
  309.     end
  310.     return false
  311. end
  312.  
  313. function Update(nick)
  314.     sky.com("w " .. nick .. " " .. COLOR1 .. "Обновление...")
  315.     os.execute("del bot.lua")
  316.     os.execute("wget -q https://www.dropbox.com/s/5z7nl7ca5zmbmtk/Kelira.lua?dl=1 bot.lua")
  317.     os.sleep(3)
  318.     os.execute("bot.lua")
  319.     os.exit()
  320. end
  321.  
  322. function Say(msg, nick)
  323.     if msg == "==dela" then
  324.         c.say(BOT_NAME .. \\_(ツ)_/¯")
  325.     else
  326.         while string.find(msg, "love") ~= nil do
  327.             msg = string.gsub(msg,"love","§4❤§b")
  328.         end
  329.         c.say(BOT_NAME .. unicode.sub(msg,3, unicode.len(msg)))
  330.     end
  331. end
  332.  
  333. function Message(msg, nick)
  334.     msg2 = msg
  335.     msg = unicode.lower(msg)
  336.     if string.sub(msg, 1,1) == "!" then
  337.         local questions = Questions(msg, nick)
  338.         local mats = Mats(msg, nick)
  339.         local caps = Caps(msg2, nick)
  340.         local floods = Flood(msg, nick)
  341.         if questions or mats or floods or caps then    
  342.             if #glob == 38 then
  343.                 table.remove(glob, 1)
  344.             end
  345.             table.insert(glob, nick .. ":" .. msg2)
  346.             Draw()
  347.         end
  348.     else
  349.         local commands = Commands(msg, msg2, nick)
  350.         if commands then
  351.             if #loc == 38 then
  352.                 table.remove(loc, 1)
  353.             end
  354.             table.insert(loc, nick .. ":" .. msg2)
  355.             Draw()
  356.         end
  357.     end
  358. end
  359.  
  360. function Draw()
  361.     term.clear()
  362.     g.setForeground(COLOR_CMD)
  363.     g.set(1,1,"||=================[ Локал чат ]=================||============================================[ Глобальный чат ]=============================================||")
  364.     g.set(1,40,"||===[ Консоль ]=================================||==================================================================[ Автор: SkyDrive_ - Проект: McSkill ]===||")
  365.     g.fill(1,1,2,40,"|")
  366.     g.fill(50,1,2,40,"|")
  367.     g.fill(159,1,2,40,"|")
  368.     g.setForeground(0xffffff)
  369.     g.setForeground(0xffffff)
  370.     for i = 1, #loc do
  371.         g.set(4,i+1,"[ ]" .. loc[i])
  372.         g.setForeground(0x00ff00)
  373.         g.set(5,i+1, "L")
  374.         g.setForeground(0xffffff)
  375.     end
  376.     for i = 1, #glob do
  377.         g.set(53,i+1,"[ ]" .. glob[i])
  378.         g.setForeground(0xff9900)
  379.         g.set(54,i+1, "G")
  380.         g.setForeground(0xffffff)
  381.     end
  382. end
  383.  
  384. for i = 1, #ODMENS do
  385.     sky.com("w " .. ODMENS[i] .. " &aУспешно обновлено :)")
  386. end
  387. Draw()
  388.  
  389. while true do
  390.     local _, _, nick, msg = event.pull("chat_message")
  391.     if msg ~= nil and nick ~= nil then
  392.         Message(msg, nick)
  393.     end
  394. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement