Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --|============================|
- --| Бот для глобал чата. |
- --| Автор: SkyDrive_ |
- --| Проект McSkill, cервер HTC |
- --| 22.12.2016 |
- --| Последнее обновление |
- --| 21.03.2017 |
- --|Modded by: Tekyera, krovyaka|
- --| Version: 2.22 |
- --|============================|
- local component = require("component")
- local term = require("term")
- local event = require("event")
- local unicode=require("unicode")
- local serial = require("serialization")
- local computer = require("computer")
- local kro = require("kro")
- local g = component.gpu
- local d = component.debug
- local c = component.chat_box
- computer.removeUser("Tekyera")
- local mutes = {}
- local WORLD = 0 --Номер строительного мира (в котором строятся игроки)
- local BOT_NAME = "❻ §8[§9Малышка§8] §3Kelira§f: " --Преффикс и имя бота
- local VAIP = "26.11.2016" --Дата последнего вайпа
- local TIMER_DAY = 3600 --Кд на смену времени суток в секундах
- local TIMER_SUN = 3600 --Кд на смену дождя в секундах
- local TIMER_MUTE = 7200 --Кд на votemute в секундах
- local MUTE_TIMER = 10 --Время, на которое не реагирует бот, после выдачи мута
- local HELLO_TIMER = 120 --Кд на приветствие
- local BYE_TIMER = 120 --Кд на прощание
- local MUTE_DIF = 10 --Разница в голосах, чтоб замутить игрока
- local COLOR1 = "§b" --Цвет основного текста
- local COLOR2 = "§a" --Цвет выделенных слов
- local COLOR_CMD = 0xffff00 --Цвет консоли
- --Список модеров. Над указать цвет, либо поставить 2 любых символа перед ником
- local MODS = {{"&8[&4ТехАдмин&8] - ","&8lLuffy"}, {"&8[&9TrueMod&8] - ","&3SkyDrive_"}, {"&8[&9Дизайнер&8] - ","&3Tekyera"}, {"&8[&3StMod&8] - ","&bAlexander"},{"&8[&4Mod&8] - ","&6Triksis"}, {"&8[&4Mod&8] - ","&6Martinez"}, {"&8[&4Mod&8] - ","&6ogrezem"},
- {"&8[&dСтроитель&8] - ","&5krovyaka"}, {"&8[&2Helper&8] - ","&2AlmKing"}, {"&8[&2Helper&8] - ","&2DJ_SonyBlaze"}, {"&8[&aСтажер&8] - ","&aFoboz"}, {"&8[&dСтроитель&8] - ","&dDark_Time"}, {"&8[&aСтажер&8] - ","&aDen4ik_1222"}, {"&8[&aСтажер&8] - ","&aTialas555"},}
- local MODSLIST = "lLuffySkyDrive_TekyeraAlexanderTriksisDark_TimekrovyakaogrezemDJ_SonyBlazeAlmKing"
- --Слова, за которые бот даёт мут
- local MAT = {"бля", "сука", "пидор", "пидар", "чмо ", "ёбырь", "ёбаный", "нихуя", "ёбнутый", "ебись","пидр", "педик", "хуй", "хуя", "хуи", "нахуй", "похуй", "хули ", "хуёвый", "хуесос", "хуеглот", "отъебись","мудак", "мудила", "мудень", "долбаёб", "долбоёб", "хуета", "пизд","ебать", "ебал", "ебу", "ебло", "уебан", "уёбок", "уёбки", "ахуеть","ахуительно", "заебись", "заебал", "ебет", "курва", "ебацца", "нехуя", "ебацо", "ибаца", "ибацца", "ебанат", "уебище","уёбище","выебать", "блядина", "кончеглот", "выебу", "хуйня", "мудозвон", "выблядок", "еблище", "впиздячил","жидоёб", "Выблядовал", "мразь","4mo","blyat","blyad","ebal","cyka","suka","pidor","pidar","hui","huesos","ueban","ебанный","хуёво","-мать", "залуп", "гандон", "гондон", "xyi", "xui", "наебал", "наебывают", "наёбывают",
- }
- local SUIC = {"f57", "#f57", "f58", "#f58", "явигре", "#явигре", "я_в_игре", "тихимдом", "#тихийдом", "тихий_дом", "#4:20", "#4.20", "морекитов",
- "#морекитов", "синийкит", "синий_кит", "#синийкит", "#синий_кит",
- }
- local WORDS = {"солнышко", "зайка", "пупсик", "котик", "сладкий", "милый", "медвежонок", "ангелочек", "одуванчик", "малыш", "кисик", "любимый", "родной", "симпотяжка", "львеночек", "тигреночек", "пушистик", "мой герой", "персик", "пончик", "котенок"}
- local MASS = {"как", "чем", "почему"}
- local MASS2 = {"приватить", "заприватить"}
- local MASS3 = {"отключить", "выключить","убрать", "оффнуть", "вырубить", "офф"}
- local MASS4 = {"пвп", "pvp"}
- local MASS5 = {"убрать", "выключить", "отключить", "вырубить", "оффнуть", "очистить", "снять"}
- local MASS6 = {"сетку", "полосы", "полосочки", "zone", "зону", "выделение", "линии"}
- local MASS7 = {"привет", "прив", "ку", "q", "qq", "здаров", "здарова", "добрый день", "добрый вечер", "доброе утро",
- "здравствуйте", "здрасьте", "дратути", "хай"}
- local MASS8 = {"бб", "bb", "пока", "досвидания", "досвиданья", "досвидули","спокойной"}
- local timer_sun, timer_day, timer_mute, yes, no = 0, 0, 0, 1, 0
- local hello_timer, bye_timer = 0, 0
- local vsun, vday, vmute = false, false, false
- local vnick = {}
- local lastmsg={}
- local mute = {}
- local mute_nick, muted_nick
- local glob, loc = {}, {"Инициализация...", "Программа успешно запущена..."}
- g.setResolution(160, 40)
- term.clear()
- c.setName("§6G§7")
- local RULES = { --Правила проекта
- {"1.1", "Любой человек, зарегестрировавшийся на проекте, тем самым соглашается со всеми правилами, перечисленными ниже."},
- {"1.2", "Незнание правил не освобождает вас от ответственности."},
- {"1.3", "Администрация имеет право менять правила в любой момент без уведомления игрока."},
- {"1.4", "Запрещено представляться сотрудником администрации, использовать мат/оскорбления в нике, использовать неприличные ники, ники связанные с нацизмом, ники Администрации, ники похожие на них, ники, состоящие только из спец.символов, а так же использовать в имени игрового персонажа приставки (Admin, Server, Mod, Help, OP и т.п.).", "Наказание: Бан навсегда."},
- {"1.5", "Администратор, вправе наказать игрока по причине, не указанной в настоящих правилах."},
- {"1.6", "Средства, потраченные на донат, не возвращаются вам ни при каких обстоятельствах."},
- {"1.7", "Сервис бесплатен и предоставляется «как есть» без каких-либо гарантий правильной работы. Администрация не возвращает вещи, потерянные в результате бага, отката, смерти игрока, нестабильной работы сервера и т.п."},
- {"1.8", "Запрещено изменять игровой клиент, а также использовать/распространять/обсуждать дюпы, программы, скрипты, макросы, автокликеры, упрощающие поиск ресурсов, и дающие преимущество в игре, вредящие игровому процессу. Использование багов (ошибок, дырок) плагинов, сервера, игры - также является нечестной игрой и приравнивается к читам.", "Наказание: Пожизненный бан."},
- {"1.9", "Попытки оправдания своих действий путем толкования правил в вашу пользу могут привести к бану. Будьте честными."},
- {"1.10", "Запрещено намеренно дестабилизировать работу, создавать лаги/сломанные чанки, вызывать падения сервера.", "Наказание: Бан навсегда."},
- {"1.11", "Запрещено подставлять/лжесвидетельствовать против игроков или подделывать улики/доказательства. Шантажировать игроков/модераторов с целью собственной выгоды, угрожая опубликовать его(её) нарушение. Жалобы на нарушения должны быть поданы сразу при обнаружении нарушения или не поданы вовсе.", "Наказание: Тюрьма от 2-х до 7-и дней. При рецидиве – Бан на 30 дней."},
- {"1.12", "Запрещается покупка/продажа игровых ресурсов, покупка/продажа игрового аккаунта и прочих услуг за реальные деньги, обмен на другие игровые ценности, которы не связанны с проэктом McSkill, а также передача игрового аккаунта третьим лицам.", "Наказание: Пожизненный бан."},
- {"1.13", "Запрещено использовать неофициальные (скачанные не с нашего сайта) лаунчеры для запуска игры.", "Наказание: Пожизненный бан."},
- {"1.14", "1.14. Запрещено использовать /fly, /god против враждебных NPC. ", "Наказание: бан на 1 день. При рецидиве - Бан на 7 дней."},
- {"2.1", "Главное правило строительства – сначала привать, потом строй! Любая незаприваченная постройка переходит во владения игрока заприватевшего её."},
- {"2.2", "Запрещено создавать ничтожно малые приваты. Минимальный приват - 16х16х16 блоков (1 чанк).", "Наказание: Удаление привата. За рецедив - Бан на 30 дней."},
- {"2.3", "Запрещено разрушать, переделывать постройки, не принадлежащие вам (кроме случая если вы добавлены в приват или постройка не запривачена),так же блокировать доступ к чужим приватам, выстраивая стены, вырывая ямы, разливая любые жидкости и иными способами.", "Наказание: Бан на 7 дней. За рецидив – Бан на 30 дней."},
- {"2.4", "Запрещены постройки, не имеющие смысл (столбы, глубокие и узкие ямы и т.п.).", "Наказание: Снос постройки. Если постройка вредит игроку - бан на 1 день. За рецедив - бан от 2 до 7 дней."},
- {"2.5", "Запрещены неприличные постройки, представляющие из себя нецензурные выражения, имеющие форму чего-либо непристойного, нацистские символы, пропаганду нацизма, национализма, наркотических веществ и т.д и т.п.", "Наказание: Бан на 1-7 дней и снос постройки. При рецидиве – Бан на 14 дней."},
- {"2.6", "Запрещаются постройки, имеющие рекламу других проектов и их названия, а также реклама на табличках, в названии приватов/варпов, в названиях игровых предметов, кличках животных и т.д.", "Наказание: Бан навсегда и удаление постройки/таблички/варпа/привата."},
- {"2.7", "Соблюдайте законы физики. Постройки, не соблюдающие законы физики (дома в воздухе) наказуемы. Исключения: Самолет, висящий в небе или воздушный шар и т.п.", "Наказание: Предупреждение. Если недочёты не исправлены – снос постройки и бан на 2 дня."},
- {"2.8", "Постройка и использование АФК машин запрещено.", "Наказание: Бан на 2 дня. За рецидив - Бан на 14 дней."},
- {"2.9", "Запрещено стоить некрасивые постойки вблизи спавна (коробки и тп.), безпричинно разрушать рельеф.", "Наказание: Удаление постройки, востановленние теретории."},
- {"2.10", "2.10. Запрещено любым способом обходить ограничения на чанк. ", "Наказание: Убийство всех животных на территории и снос механизмов. За рецидив - бан на 7 дней."},
- {"3.1", "Запрещается ставить точку дома/варпа на чужой территории без разрешения её владельца.", "Наказание: Ваша точка /sethome переносится на спавн, а вы получаете 1 день бана."},
- {"3.2", "Запрещается ставить неприличные скины и плащи: Адам, Ева, Гитлер, обнажённых людей и т.п.", "Наказание: Бан на 1 день, чтобы сменить скин/плащ. За рецидив – Бан на 14 дней."},
- {"3.3", "Запрещается заманивать игроков в ловушки любым способом рекламы, запросом на телепортацию, обманом и т.д.", "Наказание: Бан на 7 дней. За рецидив – Бан на 30 дней."},
- {"3.4", "Запрещается убивать чужих мирных животных, намеренно выталкивать их за пределы привата, присваивать себе, если они находятся на территории чужого привата.", "Наказание: Бан на 7 дней. При рецидиве – Бан на 14 дней."},
- {"3.5", "Запрещено мешать проведению ивентов, а также нарушать установленные правила ивента.", "Наказание: Бан на 12 часов."},
- {"3.6", "Запрещено оскорблять других игроков путём употребления не цензурных выражений в названиях предметов, варпов, приватов, табличек, надписей на скинах и плащах, животных. Употреблять чужой ник в названии предмета/животного и т.д.", "Наказание: Бан на 1 день и удаление вещи/привата и т.д. За рецидив – Бан на 14 дней."},
- {"3.7", "Другой игрок не обязан возвращать вам потерянные вами вещи, если он получил их убив вас в ПВП поединке или же вы случайно выбросили вещь."},
- {"3.8", "Запрещено обманывать игроков, для получения собственной выгоды.", "Наказание: Бан на 7 дней. За рецидив – Бан на 30 дней."},
- {"3.9", "При блокировке аккаунта какого либо игрока, все игровые ценности, предметы в инвентаре, территория, содержимое сундуков и прочее не подлежат передаче другим игрокам или возврату."},
- {"3.10", "В случае если игрок не входил в игру более 30 дней, любые его игровые ценности могут быть изъяты и удалены."},
- {"3.11", "Если вы добровольно добавили игрока в свой регион и Вас обокрали, удалили с привата и т.д - это полностью Ваши проблемы."},
- {"3.12", "Запрещены любого вида действия, направленные на нарушение экономики сервера.", "Наказание: Бан на 1 день. За рецидив – Бан на 14 дней."},
- {"3.13", "Запрещено продавать солнечные панели, квантовые генераторы, любые приборы, напечатанные на 3D принтере, без указания того, что это 3D модель.", "Наказание: бан от 1 до 7 дней."},
- {"3.14", "Запрещено использование голосового чата во время проведения ивента.", "Наказание: Предупреждение. За рецидив - бан от 15 мин. до 2-ух часов."},
- {"3.15", "Запрещено любыми способами выталкивать игроков из зоны без пвп (в зону с пвп), с любой целью (убить, забрать вещи, заманить в ловушку и прочее).", "Наказание: Бан на 7 дней. За рецидив – Бан на 30 дней."},
- {"4.1", "Запрещен флуд. Флуд - сообщения, не имеющие смысловой нагрузки, флуд в ЛС, флуд командами, а также повторяющиеся три и более раз подряд сообщения, злоупотребления большим количеством символов приравниваются к флуду..", "Наказание: Мут от 30 минут до 10 часов. За рецидив – мут на 1 день. Флуд командами - от 1-го до 24 часов бана."},
- {"4.2", "Запрещается оскорблять других игроков/модераторов/администраторов, а также оскорбления в адрес сервера/проекта и т.д.", "Наказание: Мут от 30 мин до 24 часов. За рецидив – бан от 1-го до 7 дней."},
- {"4.3", "Запрещается употреблять ругательства, нецензурные слова, мат в любом виде, в том числе завуалированный, а также эвфемизмы, мат на другом языке и т.д и т.п.", "Наказание: Мут от 30 мин до 8 часов. За рецидив – бан от 1-го до 7 дней."},
- {"4.4", "Запрещен капс в сообщениях за исключением аббревиатур и названий приборов в игре. Капсом является сообщение состоящее целиком (или одно из слов сообщения) из ЗАГЛАВНЫХ букв или большого их количества.", "Наказание: Мут от 15 минут до 2-х часов. За рецидив – мут от 2-х до 12 часов."},
- {"4.5", "Запрещается пропаганда нацизма, расизма, наркотиков и алкоголизма.", "Наказание: Мут от 1 часа до 3 дней. За рецидив – Бан на 30 дней."},
- {"4.6", "Запрещается сообщения сексуального характера (действия сексуального характера), угрозы расправой в реальной жизни, угрозы баном/мутом.киком и т.д. (кроме предупреждений от модераторов/администраторов проекта).", "Наказание: Мут от 1 часа до 1 дня. За рецидив – Бан от 1 дня."},
- {"4.7", "Запрещены сообщения содержащие рекламу или скрытую рекламу других проектов, сайтов и т.д.", "Наказание: Пожизненный мут или бан."},
- {"4.8", "Рекламу одного и того же магазина, варпа, товара, услуг можно давать раз в 5 минут. Частые сообщения с рекламой приравниваются к флуду.", "Наказание: Мут от 30 минут до 10 часов. За рецидив – мут на 1 день. Флуд командами - от 1-го до 24 часов бана."},
- {"4.9", "Запрещено выпрашивать ресурсы, абилки, подарки, премиумы, креатив и т.д. Просить сменить погоду или время суток.", "Наказание: Мут от 30 минут до 10 часов. За рецидив – мут на 1 день. Флуд командами - от 1-го до 24 часов бана."},
- {"4.10", "Запрещено создание конфликтов, путем отправки в чат провокационных сообщений.", "Наказание: Мут от 1 часа до 3-х дней. За рецидив – Бан 1-го до 7 дней."},
- {"4.11", "Публичная критика/оспаривание/обсуждение действий администрации проекта запрещена. Для этого существует специальный раздел форума, где можно подать жалобу.", "Наказание: Мут от 6 до 24 часов. За рецидив – бан на 7 дней."},
- {"4.12", "Запрещено пускать ложные сведения о вайпе, обо всех вайпах всегда пишут в новостях на сайте и на форуме.", "Наказание: Мут от 6 до 24 часов. За рецидив бан на 30 дней.."},
- {"4.13", "Запрещено оскорбление родителей других игроков, неприличные намёки и т.д.", "Наказание: Бан на 3 дня. За рецидив - Бан на 30 дней."},
- {"4.14", "Запрещено флудить командами бота Kelira.", "Наказание: мут на 2 часа. За рецидив - бан от 1 до 3 дней."},
- {"4.15", "4.15 Запрещена пропаганда суицида, сообщения, подразумевающие его, в том числе завуалированные, намеки и т.д.", "Наказание: мут на 2 дня. За рецидив - мут навсегда."},
- }
- function addMute(user,sec)
- mutes[user] = os.time() + (100*sec)
- end
- function checkMute(user)
- if mutes[user] ~= nil then
- if os.time() < mutes[user] then
- return true
- else return false end
- else return false
- end
- end
- function com_block(com)
- component.opencb.execute(com)
- end
- function caps(msg,nick) --Мут за капс
- if unicode.upper(msg2)==msg2 and unicode.len(msg2)>=12
- then
- 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
- tmute(nick,3)
- end
- end
- end
- function flood(msg, nick)
- if lastmsg[nick] == nil or msg ~= lastmsg[nick].msgp then
- lastmsg[nick] = {
- msgp = msg,
- date = computer.uptime(),
- kol = 1
- }
- elseif lastmsg[nick].date <= computer.uptime() - 12 then
- lastmsg[nick] = {
- msgp = msg,
- date = computer.uptime(),
- kol = 1
- }
- else
- lastmsg[nick].kol = lastmsg[nick].kol + 1
- end
- if lastmsg[nick].kol > 2 then
- tmute(nick, 2)
- lastmsg[nick] = {
- msgp = msg,
- date = computer.uptime(),
- kol = 1
- }
- elseif lastmsg[nick].kol > 1 and (string.find(msg, "куплю") ~= nil or string.find(msg, "продам") ~= nil or string.find(msg, "warp") ~= nil) then
- tmute(nick, 5)
- lastmsg[nick] = {
- msgp = msg,
- date = computer.uptime(),
- kol = 1
- }
- end
- end
- function suics(msg, nick) --Мут за китов в глобал чат
- for i = 1, #SUIC do
- if string.find(msg, SUIC[i]) ~= nil then
- t1 = " " .. string.match(msg, SUIC[i])
- t2 = "!" .. string.match(msg, SUIC[i])
- if string.find(msg, t1) ~= nil or string.find(msg, t2) ~= nil then
- if #mute ~= 0 then
- for j = 1, #mute do
- if nick == mute[j][1] then
- return false
- end
- end
- end
- tmute(nick,4)
- return true
- end
- end
- end
- return false
- end
- function mats(msg, nick) --Мут за мат в глобал чат
- for i = 1, #MAT do
- if string.find(msg, MAT[i]) ~= nil then
- t1 = " " .. string.match(msg, MAT[i])
- t2 = "!" .. string.match(msg, MAT[i])
- if string.find(msg, t1) ~= nil or string.find(msg, t2) ~= nil then
- if #mute ~= 0 then
- for j = 1, #mute do
- if nick == mute[j][1] then
- return false
- end
- end
- end
- tmute(nick,1)
- return true
- end
- end
- end
- return false
- end
- function hello(msg) --Приветствие
- if string.find(msg, "!всем") ~= nil or string.find(msg, "!vsem") ~= nil or string.find(msg, " всем") ~= nil or string.find(msg, " vsem") ~= nil then
- for i = 1, #MASS7 do
- if string.find(msg, MASS7[i]) ~= nil and hello_timer == 0 then
- hello_timer = HELLO_TIMER
- c.say(BOT_NAME .. COLOR1 .. "Привет, " .. WORDS[math.random(1, #WORDS)] .. " :*")
- return true
- end
- end
- end
- return false
- end
- function bye(msg) --Прощание
- if string.find(msg, "!всем") ~= nil or string.find(msg, "!vsem") or string.find(msg, " всем") ~= nil or string.find(msg, " vsem") ~= nil then
- for i = 1, #MASS8 do
- if string.find(msg, MASS8[i]) ~= nil and bye_timer == 0 then
- bye_timer = BYE_TIMER
- c.say(BOT_NAME .. COLOR1 .. "Всего хорошего, " .. WORDS[math.random(1, #WORDS)] .. " :*")
- return true
- end
- end
- end
- return false
- end
- function privat(msg) --Ответ на вопрос: Как приватить
- for i = 1, #MASS do
- if string.find(msg, MASS[i]) ~= nil then
- for i = 1, #MASS2 do
- if string.find(msg, MASS2[i]) ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Команды для привата: " .. COLOR2 .. "/warp world §8➢ " .. COLOR2 .. "/rtp §8➢ " .. COLOR1 .. "вместо топорика: " .. COLOR2 .. "/zone §8➢ " .. COLOR2 .. "/rg claim <name>")
- return true
- end
- end
- end
- end
- return false
- end
- local mutepp = {
- {time = "2 hour", pp = "4.3", word = "ругайся",sec = 7200},
- {time = "40 min", pp = "4.1", word = "флуди",sec = 2400},
- {time = "warn", pp = "4.4", word = "капси",sec = 0},
- {time = "2 day", pp = "4.15", word = "говори так",sec = 172800},
- {time = "40 min", pp = "4.8", word = "рекламируй так часто",sec = 2400},
- }
- function tmute(nick,reason)
- if string.find(MODSLIST,nick)~=nil then
- if nick~="Tekyera" then
- c.say(BOT_NAME .. COLOR1 .. "Ты же модератор, " .. nick .. ". Веди себя приличнее и не ".. mutepp[reason].word .. "! :*")
- end
- else
- if mutepp[reason].time == "warn" then
- com_block("warn " .. nick .. " " .. mutepp[reason].pp .. "_from_kelira_with_love")
- c.say(BOT_NAME .. COLOR1 .. "Не " .. mutepp[reason].word .. ", " .. WORDS[math.random(1, #WORDS)] .. " :*")
- else
- com_block("tempmute " .. nick .. " " .. mutepp[reason].time .. " " .. mutepp[reason].pp .. "_from_kelira_with_love")
- c.say(BOT_NAME .. COLOR1 .. "Не " .. mutepp[reason].word .. ", " .. WORDS[math.random(1, #WORDS)] .. " :*")
- table.insert(mute, {nick, MUTE_TIMER})
- addMute(nick,mutepp[reason].sec)
- end
- end
- end
- function pvp(msg) --Ответ на вопрос: Как оффнуть пвп
- if string.find(msg, "как") ~= nil then
- for i = 1, #MASS3 do
- if string.find(msg, MASS3[i]) ~= nil then
- for i = 1, #MASS4 do
- if string.find(msg, MASS4[i]) ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Отключить пвп вы можете через команду §8➢ " .. COLOR2 .. "/buyflag" .. COLOR1 .. ". Цена: " .. COLOR2 .. "100 " .. COLOR1 .. "эм.")
- return true
- end
- end
- end
- end
- end
- return false
- end
- function vaip(msg) --Ответ на вопрос: Когда был вайп
- if string.find(msg, "когда") ~= nil or string.find(msg, "давно") ~= nil then
- if string.find(msg, "вайп") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Вайп был: " .. COLOR2 .. VAIP .. COLOR1 .. ", а вот когда будет - неизвестно.")
- return true
- end
- end
- return false
- end
- function spawn(msg) --Ответ на вопрос: Как выйти со спавна
- if string.find(msg, "как") ~= nil or string.find(msg, "где") ~= nil then
- if string.find(msg, "выйти") ~= nil or string.find(msg, "покинуть") ~= nil or string.find(msg, "выход") ~= nil then
- if string.find(msg, "спавн") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Чтобы выйти со спавна, напиши" .. COLOR2 .. " /warp world " .. COLOR1 .. ":*")
- return true
- end
- end
- return false
- end
- end
- function rebura(msg)
- if string.find(msg, "как") ~= nil then
- if string.find(msg, "сменит") ~= nil or string.find(msg, "включ") ~= nil or string.find(msg, "переключ") ~= nil then
- if string.find(msg, "бур") ~= nil or string.find(msg, "гравиту") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Сменить режим инструмента можно, используя сочетание клавиш " .. COLOR2 .. "ПКМ + I")
- return true
- end
- end
- end
- return false
- end --Ответ на вопрос: Как сменить режим бура
- function zrenie(msg)
- if string.find(msg, "ночн") ~= nil then
- if string.find(msg, "как") ~= nil then
- if string.find(msg, "зрение") ~= nil or string.find(msg, "вид") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Включить ночное зрение на квантовом или нано-шлеме можно сочетанием клавиш " .. COLOR2 .. "Alt + I")
- return true
- end
- end
- end
- return false
- end --Ответ на вопрос: Как включить ночное зрение
- function skull(msg)
- if string.find(msg, "череп") ~= nil then
- if string.find(msg, "как") ~= nil or string.find(msg, "где") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Черепа можно получать на ивентах. Например, побеждая на " .. COLOR2 .. "/warp spleef" .. COLOR1 .. " или " .. COLOR2 .. "/warp king" .. COLOR1 .. ". Об их начале заранее сообщают модераторы!")
- return true
- end
- end
- return false
- end --Ответ на вопрос: Как получить череп
- function kost(msg)
- if string.find(msg, "костолом") ~= nil then
- if string.find(msg, "где") ~= nil or string.find(msg, "найти") ~= nil or string.find(msg, "попасть") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Портал к боссу " .. COLOR2 .. "Костолом" .. COLOR1 .. " находится на спавне в разделе " .. COLOR2 .. "Ивенты")
- return true
- end
- end
- return false
- end --Ответ на вопрос: Где костолом
- function polet(msg)
- if string.find(msg, "как") ~= nil then
- if string.find(msg, "летать") ~= nil or string.find(msg, "полёт") ~= nil or string.find(msg, "лететь") ~= nil or string.find(msg, "полет") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Вкл/откл полёт на гравитационном жилете или улучшенном наножилете можно клавишей " .. COLOR2 .. "F" .. COLOR1 .. ". На квантовом нагруднике это делается сочетанием клавиш " .. COLOR2 .. "Ctrl + I" )
- return true
- end
- end
- return false
- end
- --Ответ на вопрос: Как летать
- function planir(msg)
- if string.find(msg, "как") ~= nil then
- if string.find(msg, "планировани") ~= nil or string.find(msg, "планировать") ~= nil or string.find(msg, "левитировать") ~= nil or string.find(msg, "левитац") ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Режим планирования или левитации на гравитационном жилете или улучшенном наножилете включается/отключается сочетанием клавиш " .. COLOR2 .. "Пробел + I")
- return true
- end
- end
- return false
- end
- --Ответ на вопрос: Как планировать
- function sel(msg) --Ответ на вопрос: Как убрать сетку
- if string.find(msg, "как") ~= nil then
- for i = 1, #MASS5 do
- if string.find(msg, MASS5[i]) ~= nil then
- for i = 1, #MASS6 do
- if string.find(msg, MASS6[i]) ~= nil then
- c.say(BOT_NAME .. COLOR1 .. "Чтобы убрать сетку, пропиши §8➢ " .. COLOR2 .. "//sel")
- return true
- end
- end
- end
- end
- end
- return false
- end
- function help(msg, nick) --Команда -help (Список доступных команд)
- if msg == "-help" then
- com_block("w " .. nick .. " " .. COLOR1 .. "Все команды вводятся в " .. COLOR2 .. "локал " .. COLOR1 .. "чат.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-voteday §8➢ " .. COLOR1 .. "Начать голосование для смены времени суток на " .. COLOR2 .. "6:00 " .. COLOR1 .. "утра.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-votesun §8➢ " .. COLOR1 .. "Начать голосование для отключения дождя.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-votemute §8➢ " .. COLOR1 .. "Голосование, чтобы замутить игрока на 2 часа. Разница должна быть в +" .. MUTE_DIF .. " голосов, иначе вы получите мут на 10 мин.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-mods §8➢ " .. COLOR1 .. "Модераторы в сети.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-inf §8➢ " .. COLOR1 .. "Узнать информацию о нужном п.п.")
- com_block("w " .. nick .. " " .. COLOR2 .. "-seen §8➢ " .. COLOR1 .. "Получить онлайн/оффлайн время выбранного игрока.")
- return true
- end
- return false
- end
- function mods(msg, nick) --Команда -mods (Список Администрации на сервере)
- if msg == "-mods" then
- for i = 1, #MODS do
- if computer.addUser(string.sub(MODS[i][2],3,unicode.len(MODS[i][2]))) ~= nil then
- com_block("w " .. nick .. " &aOnline &8➢ " .. MODS[i][1] .. MODS[i][2])
- computer.removeUser(string.sub(MODS[i][2],3,unicode.len(MODS[i][2])))
- end
- end
- return true
- end
- return false
- end
- function inf(msg, nick)
- if msg == "-inf" then
- com_block("w " .. nick .. " " .. COLOR1 .. " Введите пункт правил. Пример: " .. COLOR2 .. "-inf 4.1")
- elseif string.find(msg, "-inf") ~= nil then
- for i = 1, #RULES do
- if string.sub(msg, 6, unicode.len(msg)) == RULES[i][1] then
- com_block("w " .. nick .. " " .. COLOR1 .. RULES[i][2])
- if RULES[i][3] ~= nil then
- com_block("w " .. nick .. " " .. COLOR2 .. RULES[i][3])
- end
- return true
- end
- end
- com_block("w " .. nick .. " " .. COLOR1 .. " Пункт правил введён неверно")
- end
- return false
- end
- function voteday(msg, nick) --Голосование на день
- if msg == "-voteday" then
- if d.getWorld(WORLD).getTime()%24000 > 14000 then
- if timer_day == 0 and vsun == false and vmute == false then
- c.say(BOT_NAME .. COLOR1 .. "Игрок §8➢ " .. COLOR2 .. nick .. COLOR1 .. " начал голосование за смену времени суток на " .. COLOR2 .. "6:00 " .. COLOR1 .. "утра.")
- c.say(BOT_NAME .. COLOR1 .. "Введите §8➢ " .. COLOR2 .. "-yes " .. COLOR1 .. "или " .. COLOR2 .. "-no " .. COLOR1 .. "в " .. COLOR2 .. "локал " .. COLOR1 .. "чат. На голосование 1 мин.")
- timer_day = TIMER_DAY
- table.insert(vnick, nick)
- vday = true
- return true
- elseif (vsun) or (vmute) then
- com_block("w " .. nick .. " " .. COLOR1 .. " Идёт другое голосование")
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Голосование будет доступно через §8➢ " .. COLOR2 .. timer_day .. COLOR1 .. " сек.")
- end
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Голосование доступно только ночью")
- end
- end
- return false
- end
- function votesun(msg, nick) --Голосование на дождь
- if msg == "-votesun" then
- if d.getWorld(WORLD).isRaining() == true then
- if timer_sun == 0 and vday == false and vmute == false then
- c.say(BOT_NAME .. COLOR1 .. "Игрок §8➢ " .. COLOR2 .. nick .. COLOR1 .. " начал голосование за отключение дождя.")
- c.say(BOT_NAME .. COLOR1 .. "Введите §8➢ " .. COLOR2 .. "-yes " .. COLOR1 .. "или " .. COLOR2 .. "-no " .. COLOR1 .. "в " .. COLOR2 .. "локал " .. COLOR1 .. "чат. На голосование 1 мин.")
- timer_sun = TIMER_SUN
- table.insert(vnick, nick)
- vsun = true
- return true
- elseif (vday) or (vmute) then
- com_block("w " .. nick .. " " .. COLOR1 .. " Идёт другое голосование")
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Голосование будет доступно через §8➢ " .. COLOR2 .. timer_sun .. COLOR1 .. " сек.")
- end
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " В данный момент солнечная погода")
- end
- end
- return false
- end
- function votemute(msg, nick) --Голосование на мут
- if string.find(msg, "-votemute") ~= nil then
- if computer.addUser(string.sub(msg,11,unicode.len(msg))) ~= nil then
- computer.removeUser(string.sub(msg,11,unicode.len(msg)))
- if string.find(nick,string.sub(msg,11,unicode.len(msg)))==nil then
- if string.find(MODSLIST,string.sub(msg,11,unicode.len(msg)))==nil then
- if timer_mute == 0 and vday == false and vsun == false then
- c.say(BOT_NAME .. COLOR1 .. "Игрок §8➢ " .. COLOR2 .. nick .. COLOR1 .. " хочет замутить на 2 часа игрока §8➢ " .. COLOR2 .. string.sub(msg,11,unicode.len(msg)))
- c.say(BOT_NAME .. COLOR1 .. "Введите §8➢ " .. COLOR2 .. "-yes " .. COLOR1 .. "или " .. COLOR2 .. "-no " .. COLOR1 .. "в " .. COLOR2 .. "локал " .. COLOR1 .. "чат. Разница должна быть в" .. COLOR2 .. " +" .. MUTE_DIF .. COLOR1 .. " голосов. У вас 1 мин.")
- timer_mute = TIMER_MUTE
- mute_nick = nick
- muted_nick = string.sub(msg,11,unicode.len(msg))
- table.insert(vnick, nick)
- vmute = true
- return true
- elseif (vday) or (vsun) then
- com_block("w " .. nick .. " " .. COLOR1 .. " Идёт другое голосование!")
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Голосование будет доступно через §8➢ " .. COLOR2 .. timer_mute .. COLOR1 .. " сек.")
- end
- else com_block("w " .. nick .. " " .. COLOR1 .. " Ты не можешь голосовать против модератора!") end
- else com_block("w " .. nick .. " " .. COLOR1 .. " Ты не можешь голосовать против самого себя!") end
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Игрок не найден")
- end
- end
- return false
- end
- function vote(msg, nick)
- if msg == "-yes" or msg == "-no" then
- if (vday) or (vsun) or (vmute) then
- for i = 1, #vnick do
- if vnick[i] == nick then
- com_block("w " .. nick .. " " .. COLOR1 .. " Вы уже голосовали")
- return
- end
- end
- table.insert(vnick, nick)
- if msg == "-yes" then
- yes = yes + 1
- elseif msg == "-no" then
- no = no + 1
- end
- com_block("w " .. nick .. " " .. COLOR1 .. " Ваш голос засчитан")
- else
- com_block("w " .. nick .. " " .. COLOR1 .. " Нет активных голосований")
- end
- end
- end
- function draw()
- term.clear()
- g.setForeground(COLOR_CMD)
- g.set(1,1,"||================== Локал чат ==================||============================================= Глобальный чат ==============================================||")
- g.set(1,40,"||=== Консоль ===================================||==================================================================== Автор: SkyDrive_ - Проект: McSkill ===||")
- g.fill(1,1,2,40,"|")
- g.fill(50,1,2,40,"|")
- g.fill(159,1,2,40,"|")
- g.setForeground(0xffffff)
- for i = 1, #loc do
- g.set(4,i+1,"[ ]" .. loc[i])
- g.setForeground(0x00ff00)
- g.set(5,i+1, "L")
- g.setForeground(0xffffff)
- end
- for i = 1, #glob do
- g.set(53,i+1,"[ ]" .. glob[i])
- g.setForeground(0xff9900)
- g.set(54,i+1, "G")
- g.setForeground(0xffffff)
- end
- end
- function message(msg, nick)
- msg2 = msg
- msg = unicode.lower(msg)
- if string.sub(msg, 1,1) == "!" and checkMute(nick)==false then
- local flood = flood(msg, nick)
- local caps = caps(msg, nick)
- local mats = mats(msg, nick)
- local suics = suics(msg, nick)
- local privat = privat(msg)
- local pvp = pvp(msg)
- local sel = sel(msg)
- local vaip = vaip(msg)
- local rebura = rebura(msg)
- local zrenie = zrenie(msg)
- local polet = polet(msg)
- local planir = planir(msg)
- local hello = hello(msg)
- local bye = bye(msg)
- local kost = kost(msg)
- local skull = skull(msg)
- local spawn = spawn(msg)
- if (flood) or (caps) or (mats) or (suics) or (privat) or (pvp) or (sel) or (vaip) or (hello) or (bye) or (rebura) or (zrenie) or (polet) or (planir) or (skull) or (kost) or (spawn) then
- if #glob == 38 then
- table.remove(glob, 1)
- end
- table.insert(glob, nick .. ":" .. msg2)
- draw()
- end
- else
- local help = help(msg, nick)
- local votesun = votesun(msg, nick)
- local voteday = voteday(msg, nick)
- local votemute = votemute(msg2, nick)
- local user_say = user_say(msg2, nick)
- local mods = mods(msg, nick)
- local inf = inf(msg, nick)
- local spamon = spamon(msg, nick)
- local seen = seen(msg, nick)
- vote(msg, nick)
- if (voteday) or (votesun) or (votemute) or (help) or (mods) or (inf) or (seen) then
- if #loc == 38 then
- table.remove(loc, 1)
- end
- table.insert(loc, nick .. ":" .. msg2)
- draw()
- end
- end
- end
- function timer()
- if timer_sun > 0 then
- if timer_sun == TIMER_SUN - 60 then
- c.say(BOT_NAME .. COLOR1 .. "Голосование окончено за: " .. COLOR2 .. yes .. COLOR1 .. ", против: " .. COLOR2 .. no .. COLOR1 .. ".")
- if yes >= no then
- c.say(BOT_NAME .. COLOR1 .. "Дождь выключен")
- d.getWorld(WORLD).setRaining(false)
- else
- c.say(BOT_NAME .. COLOR1 .. "Дождь не выключен")
- end
- vnick = {}
- vsun = false
- yes, no = 1, 0
- end
- timer_sun = timer_sun - 1
- end
- if timer_day > 0 then
- if timer_day == TIMER_DAY - 60 then
- c.say(BOT_NAME .. COLOR1 .. "Голосование окончено за: " .. COLOR2 .. yes .. COLOR1 .. ", против: " .. COLOR2 .. no .. COLOR1 .. ".")
- if yes >= no then
- c.say(BOT_NAME .. COLOR1 .. "Время суток установлено на " .. COLOR2 .. "6:00 " .. COLOR1 .. "утра.")
- d.getWorld(WORLD).setTime(0)
- else
- c.say(BOT_NAME .. COLOR1 .. "Время суток не изменено")
- end
- vnick = {}
- vday = false
- yes, no = 1, 0
- end
- timer_day = timer_day - 1
- end
- if timer_mute > 0 then
- if timer_mute == TIMER_MUTE - 60 then
- c.say(BOT_NAME .. COLOR1 .. "Голосование окончено за: " .. COLOR2 .. yes .. COLOR1 .. ", против: " .. COLOR2 .. no .. COLOR1 .. ".")
- if (yes - no) >= MUTE_DIF then
- com_block("tempmute " .. muted_nick .. " 2 hour votemute_from_kelira_with_love")
- c.say(BOT_NAME .. COLOR1 .. "Прости " .. WORDS[math.random(1, #WORDS)] .. ", но их слишком много :(")
- else
- com_block("tempmute " .. mute_nick .. " 10 min votemute_from_kelira_with_love")
- c.say(BOT_NAME .. COLOR1 .. "Прости " .. WORDS[math.random(1, #WORDS)] .. ", но тебя не поддержали :(")
- end
- mute_nick = ""
- muted_nick = ""
- vnick = {}
- vmute = false
- yes, no = 1, 0
- end
- timer_mute = timer_mute - 1
- end
- if hello_timer > 0 then
- hello_timer = hello_timer - 1
- end
- if bye_timer > 0 then
- bye_timer = bye_timer - 1
- end
- if #mute ~= 0 then
- for i = 1, #mute do
- if mute[i][2] > 0 then
- mute[i][2] = mute[i][2] - 1
- else
- table.remove(mute, i)
- break
- end
- end
- end
- end
- function user_say(msg, nick)
- if string.find(msg, "==") ~= nil and (nick == "SkyDrive_" or nick == "lLuffy" or nick == "Tekyera" or nick == "Alexander" or nick == "krovyaka") then
- c.say(BOT_NAME .. COLOR1 .. unicode.sub(msg,3, unicode.len(msg)))
- end
- end
- function spamon(msg,nick)
- if string.find(msg,"-spam")==1 and (nick == "SkyDrive_" or nick == "lLuffy" or nick == "Tekyera" or nick == "Alexander" or nick == "krovyaka") then
- for i=1,5 do
- c.say(BOT_NAME .. COLOR1 .. unicode.sub(msg,7, unicode.len(msg)))
- end
- end
- end
- function seen(msg,nick)
- if string.find(msg,"-seen")==1 then
- kro.exec("w " .. nick .. " " .. kro.getOffline(unicode.sub(msg,7, unicode.len(msg))))
- end
- end
- draw()
- while true do
- local _, _, nick, msg = event.pull(1, "chat_message")
- if msg ~= nil and nick ~= nil then
- message(msg, nick)
- end
- timer()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement