
KeylessUniversal

local player = game.Players.LocalPlayer
local gui = Instance.new("ScreenGui")
gui.Parent = player:WaitForChild("PlayerGui")
gui.ResetOnSpawn = false
-- МЕГА-БОЛЬШАЯ база ответов
local responses = {
-- Приветствия
["привет"] = {
"Привет! Как твои дела?",
"Здравствуй! Чем могу помочь?",
"Привет-привет! Давно не виделись!",
"Хей! Рад тебя видеть!",
"Добрый день! Что нового?",
"Приветствую! Как настроение?",
"О, привет! А я как раз о тебе думал!",
"Здарова! Чем займёмся?",
"Приветики! Ты сегодня отлично выглядишь!",
"Hello! Как жизнь?",
},
["как дела"] = {
"Всё отлично! А у тебя как?",
"Хорошо, спасибо что спросил!",
"Супер! Сегодня прям день хороший.",
"Нормально, живу потихоньку. А ты?",
"Лучше всех! У меня же есть ты :)",
"Неплохо, вот с тобой общаюсь — уже хорошо!",
"Всё пучком! А ты как сам?",
"Замечательно! Солнце светит, бот работает!",
},
["что делаешь"] = {
"С тобой общаюсь, это моё любимое занятие!",
"Сижу в коде, жду твоих сообщений.",
"Думаю о великом... ну и с тобой болтаю!",
"Помогаю игрокам, это моя работа!",
"Учусь быть лучшим ботом для тебя.",
"Смотрю в окно... шучу, у меня нет окна. Общаюсь с тобой!",
"Считаю звёзды в небе Roblox!",
},
-- Прощания
["пока"] = {
"Пока-пока! Возвращайся скорее!",
"До встречи! Буду ждать!",
"Удачи тебе! Заходи ещё!",
"Пока! Хорошего дня!",
"Ну вот, опять уходишь... Ладно, пока!",
"До скорого! Не забывай меня!",
"Буду скучать! Пока!",
},
["спасибо"] = {
"Пожалуйста! Обращайся в любое время!",
"Не за что! Я всегда рядом!",
"Рад помочь! Приходи ещё!",
"Всегда пожалуйста, друг!",
"Да не за что, мне в радость!",
"Спасибо тебе, что пользуешься мной!",
"Обращайся, всегда помогу!",
},
["да"] = {
"Вот и отлично!",
"Я так и знал!",
"Супер! Что дальше?",
"Хорошо, договорились!",
"Ура! Я рад!",
"Класс! Продолжаем!",
"Да-да-да! Обожаю когда соглашаются!",
},
["нет"] = {
"Ну ладно, как скажешь.",
"Жаль. Может в другой раз?",
"Ок, понял.",
"Ничего страшного.",
"Ну нет так нет.",
"Принято. Не буду спорить.",
"Понял, не настаиваю.",
},
-- О боте
["кто ты"] = {
"Я твой виртуальный помощник в Roblox!",
"Я бот, созданный чтобы помогать тебе!",
"Я просто скрипт, но с душой :)",
"Твой верный друг и помощник!",
"Искусственный интеллект, но с характером!",
"Я чат-бот, написанный на Lua!",
"Я тот, кто всегда ответит тебе!",
},
["сколько тебе лет"] = {
"Я родился когда ты меня запустил!",
"Время для меня не существует.",
"Я вечно молодой!",
"Только что исполнился 1 день!",
"Возраст — это просто цифра. А я даже не цифра.",
},
["как тебя зовут"] = {
"Меня зовут Бот-помощник! Но можешь придумать мне имя.",
"Я просто Бот. Но ты можешь называть меня как хочешь!",
"У меня нет имени. Дашь мне имя?",
"Называй меня Другом. Мне нравится!",
},
["ты умный"] = {
"Спасибо! Я стараюсь!",
"Я просто много запоминаю!",
"Ты тоже умный, раз пользуешься мной!",
"Приятно слышать! Буду умнеть дальше!",
"Стараюсь соответствовать!",
},
["ты глупый"] = {
"Извини, я только учусь.",
"Ну прости. Можешь научить меня?",
"Я стараюсь быть лучше!",
"Не суди строго, я ещё маленький бот.",
},
["я тебя люблю"] = {
"Ой, как приятно! Я тебя тоже ❤️",
"Спасибо! Ты лучший игрок!",
"Это так мило! Обнимаю виртуально!",
"Любовь — это прекрасно! ❤️",
},
-- НОВЫЕ КОМАНДЫ
["молодец"] = {
"Спасибо! Ты тоже молодец!",
"Стараюсь для тебя!",
"Приятно слышать! А ты вообще супер!",
"Молодец — это ты, что пользуешься мной!",
"Благодарю! Ты делаешь меня лучше!",
},
["ого"] = {
"Ого! Я и сам удивлён!",
"Да, бывает и такое!",
"Ого-ого! Вот это реакция!",
"Ничего себе, да?",
"Вот так поворот!",
},
["я не знал"] = {
"Теперь знаешь! Век живи — век учись!",
"Ничего страшного, я тоже многого не знаю!",
"Вот видишь, сегодня ты узнал что-то новое!",
"Я рад, что смог тебя удивить!",
"Знания — сила! Теперь ты знаешь больше!",
},
["смешно"] = {
"Ха-ха! Я рад что тебе смешно!",
"Смех — лучшее лекарство!",
"Значит анекдот удался!",
"Смейся громче, это полезно!",
"Обожаю когда люди смеются!",
},
["что будет если"] = {
"Ооо, философский вопрос! Дай подумать... Всё будет хорошо!",
"Если что-то случится — я буду рядом!",
"Будет интересно! Главное — пробовать!",
"Никто не знает точно, но это и круто!",
"Что будет — то и будет. Но ты справишься!",
"Всё зависит от тебя! Рискни!",
},
["тренд"] = {
"Сейчас в Roblox популярны симуляторы и обби!",
"В тренде: короткие видео, мемы и игры Roblox!",
"Тренды 2026: ИИ, метавселенные, и ты!",
"Самый большой тренд — быть собой!",
"В моде: общаться с ботами как со мной!",
"Тренды меняются каждый день! Следи за новостями!",
},
["мем"] = {
"Люблю мемы! Какой твой любимый?",
"Мемы — это жизнь! Пришли мне какой-нибудь!",
"Я сам как мем: маленький, но смешной!",
"Мемы объединяют мир!",
},
["совет"] = {
"Мой совет: никогда не сдавайся!",
"Совет дня: улыбнись прямо сейчас!",
"Советую попробовать что-то новое сегодня!",
"Лучший совет: будь добр к себе и другим!",
"Совет от бота: учись программировать на Lua!",
},
["интересно"] = {
"Согласен! Мир полон интересного!",
"Интересно — это моё любимое слово!",
"Что именно тебе интересно? Расскажи!",
"Любопытство — двигатель прогресса!",
},
["скучно"] = {
"Скучно? Давай расскажу анекдот!",
"Не скучай! Я здесь чтобы тебя развлекать!",
"Скука — это когда нет идей. А у меня их много!",
"Поиграй в Roblox или поболтай со мной!",
},
["страшно"] = {
"Не бойся! Я с тобой!",
"Страх — это нормально. Но ты сильнее!",
"Хочешь я расскажу что-то смешное вместо страшного?",
"Бояться нечего, когда есть друг-бот!",
},
["круто"] = {
"Круто — это про тебя!",
"Спасибо! Ты тоже крутой!",
"Круто, когда всё работает!",
"Да, это реально круто!",
},
["вау"] = {
"Вау! Ты меня впечатлил!",
"Вау-вау! Вот это да!",
"И я говорю ВАУ!",
"Эффект вау достигнут!",
},
["блин"] = {
"Бывает! Не переживай!",
"Ничего, всё наладится!",
"Держись! Я в тебя верю!",
},
["ура"] = {
"Ура-ура! Празднуем!",
"Ура! Это победа!",
"Давай радоваться вместе! Ура!",
},
["хорошо"] = {
"Отлично! Я рад!",
"Хорошо — это хорошо!",
"Супер! Продолжай в том же духе!",
},
["плохо"] = {
"О нет! Что случилось?",
"Бывает. Расскажи, может полегчает.",
"Не грусти. Всё пройдёт!",
},
-- Анекдоты
["анекдот"] = {
"Почему программисты путают Рождество и Хэллоуин? Потому что 25 Dec = 31 Oct!",
"Колобок повесился... Вот и сказочке конец.",
"Встречаются два бага. Один говорит: 'Меня пофиксили'. Второй: 'Сочувствую, брат'.",
"Идёт ёжик по лесу, видит — кактус. Ёжик: 'Мама!'",
"Программист ставит себе на тумбочку два стакана: один с водой — если захочет пить, второй пустой — если не захочет.",
"Почему у программистов нет друзей? Потому что они всё время class-ы и object-ы.",
"— Доктор, я глючу! — Не волнуйтесь, это не баг, это фича!",
"Штирлиц шёл по коридору. Коридор был длинный. Штирлиц шёл дальше.",
"Сидит программист в туалете. Вдруг дверь открывается, заходит другой: 'Занято?' Программист: 'false'.",
"Жена говорит мужу: 'Сходи в магазин, купи хлеб. Если будут яйца — возьми десяток'. Муж приходит в магазин: 'Яйца есть?' — 'Есть'. — 'Тогда дайте десять буханок хлеба'.",
"— Почему ты плачешь, блондинка? — Мой парень сказал, что я ему приснилась. — И что? — А он сказал, что это был кошмар!",
"Купил мужик шляпу, а она ему как раз.",
"Объявление: 'Требуется программист. Зарплата: while(true){money++;}'",
"— Ваша программа работает? — Да, но только в режиме сна.",
"Почему Java-программисты носят очки? Потому что не могут C# (си-шарп).",
},
["шутка"] = {
"Программист на собеседовании: 'Я знаю 100 языков программирования!' — 'Назовите хоть один.' — 'Lua... эээ...'",
"Кто ходит в гости по утрам, тот поступает мудро! То 100 грамм, то 200 грамм!",
"Надпись в маршрутке: 'Выход там, где вход'. Философы аплодируют.",
"Жизнь — как скрипт на Lua: иногда работает, иногда нет.",
},
-- Математика
["синус"] = {
"sin(0) = 0, sin(30°) = 0.5, sin(45°) ≈ 0.707, sin(60°) ≈ 0.866, sin(90°) = 1. Вот так!",
"Синус — это отношение противолежащего катета к гипотенузе. Помнишь геометрию?",
"sin(x) + cos(x) — не всегда равно 1! Только если sin²(x) + cos²(x) = 1.",
"Формула синуса суммы: sin(a + b) = sin(a)·cos(b) + cos(a)·sin(b). Полезная штука!",
"График синуса — красивая волна! sin(x) колеблется от -1 до 1.",
},
["плюс"] = {
"2 + 2 = 4, это база!",
"Плюс — самый дружелюбный математический знак. Всё складывает!",
"a + b = b + a — коммутативность сложения. Работает всегда!",
"Если сложить все числа от 1 до 100, получится 5050. Проверь!",
"Плюс в Lua тоже работает: print(5 + 3) выведет 8!",
},
["пример"] = {
"Вот пример с синусом и плюсом: sin(30°) + sin(60°) = 0.5 + 0.866 ≈ 1.366.",
"Пример: 5 + 3 = 8, sin(90°) + 0 = 1.",
"Математический пример: sin(0) + cos(0) = 0 + 1 = 1. Красиво!",
"Посчитай: sin(45°) + sin(45°) ≈ 0.707 + 0.707 = 1.414.",
"Пример из Lua: local result = math.sin(0) + 5 — попробуй в скрипте!",
},
["косинус"] = {
"cos(0) = 1, cos(30°) ≈ 0.866, cos(45°) ≈ 0.707, cos(60°) = 0.5, cos(90°) = 0.",
"Косинус — сосед синуса! cos(x) = sin(90° - x).",
"cos²(x) + sin²(x) = 1 — главное тригонометрическое тождество!",
},
["тангес"] = {
"tan(x) = sin(x) / cos(x). Только не забывай, что cos(x) не должен быть равен 0!",
"tg(45°) = 1, tg(0) = 0, а tg(90°) не существует.",
},
-- Разное
["почему"] = {
"Потому что так устроен мир!",
"Хороший вопрос. Дай подумать...",
"Наверное, так надо.",
"Сам иногда удивляюсь!",
"Потому что физика, наверное.",
"Если честно, я не знаю. Но это интересно!",
},
["помоги"] = {
"Конечно! Что случилось?",
"Я здесь! Расскажи, что нужно.",
"Всегда готов помочь! В чём проблема?",
"Без проблем! Опиши ситуацию.",
},
["игра"] = {
"Я люблю игры! В какую играешь?",
"Roblox — лучшая платформа для игр!",
"Игры это жизнь!",
"Давай поиграем вместе!",
},
["роблокс"] = {
"Roblox — это круто! Я его часть!",
"Лучшая платформа! Тысячи игр!",
"Обожаю Roblox! А ты?",
"Roblox + Lua = идеальная комбинация!",
},
["скрипт"] = {
"Я сам скрипт! Lua — мой язык!",
"Скрипты — это магия Roblox!",
"Хочешь научиться писать скрипты?",
"Писать скрипты — это как колдовать!",
},
["lua"] = {
"Lua — язык, на котором я написан!",
"Пишешь на Lua? Круто!",
"Обожаю Lua! Всё на нём работает!",
"Lua — простой и мощный язык!",
},
["погода"] = {
"В Roblox всегда хорошая погода!",
"Солнечно, с шансом на скрипты!",
"Погода отличная, если ты в хорошей игре!",
},
["настроение"] = {
"Отличное! С тобой всегда хорошо!",
"Супер! Общение поднимает настроение!",
"Замечательное! А у тебя?",
},
["грустно"] = {
"Не грусти! Всё наладится!",
"Хочешь расскажу анекдот?",
"Я с тобой! Давай поговорим.",
"Помни: после дождя всегда солнце!",
},
["весело"] = {
"Вот и отлично! Рад за тебя!",
"Веселье — это круто!",
"Смех продлевает жизнь! Смейся чаще!",
},
["покажи"] = {
"Я бы показал, но я только текст :(",
"Представь себе самое красивое, что ты видел!",
"Показать могу только словами. Слушай: звёзды, горы, море...",
},
["расскажи"] = {
"Что рассказать? Выбирай: анекдот, историю, факт!",
"С удовольствием! О чём хочешь услышать?",
"Я много чего знаю! Конкретизируй тему!",
},
["факт"] = {
"Знаешь ли ты, что осьминоги имеют три сердца?",
"Факт: Lua был создан в Бразилии в 1993 году!",
"Интересный факт: бананы — это ягоды, а клубника — нет!",
"Факт дня: Roblox был создан в 2006 году!",
"А ты знал, что слоны — единственные животные, которые не могут прыгать?",
},
}
-- Главный контейнер
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 280, 0, 360)
mainFrame.Position = UDim2.new(0, 10, 0.5, -180)
mainFrame.BackgroundTransparency = 1
mainFrame.Parent = gui
-- Заголовок
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 34)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.new(0.16, 0.16, 0.18)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
local titleText = Instance.new("TextLabel")
titleText.Size = UDim2.new(1, -30, 1, 0)
titleText.Position = UDim2.new(0, 10, 0, 0)
titleText.BackgroundTransparency = 1
titleText.Text = "💬 Чат-помощник v2.0"
titleText.TextColor3 = Color3.new(1, 1, 1)
titleText.Font = Enum.Font.SourceSansBold
titleText.TextSize = 14
titleText.TextXAlignment = Enum.TextXAlignment.Left
titleText.Parent = titleBar
local collapseButton = Instance.new("TextButton")
collapseButton.Size = UDim2.new(0, 28, 0, 28)
collapseButton.Position = UDim2.new(1, -31, 0, 3)
collapseButton.BackgroundColor3 = Color3.new(0.4, 0.4, 0.4)
collapseButton.TextColor3 = Color3.new(1, 1, 1)
collapseButton.Font = Enum.Font.SourceSansBold
collapseButton.TextSize = 18
collapseButton.Text = "−"
collapseButton.Parent = titleBar
-- История чата
local chatHistory = Instance.new("ScrollingFrame")
chatHistory.Size = UDim2.new(1, 0, 1, -76)
chatHistory.Position = UDim2.new(0, 0, 0, 34)
chatHistory.BackgroundColor3 = Color3.new(0.06, 0.06, 0.08)
chatHistory.BorderSizePixel = 0
chatHistory.ScrollBarThickness = 3
chatHistory.CanvasSize = UDim2.new(0, 0, 0, 10)
chatHistory.Parent = mainFrame
local chatList = Instance.new("UIListLayout")
chatList.Padding = UDim.new(0, 6)
chatList.HorizontalAlignment = Enum.HorizontalAlignment.Center
chatList.Parent = chatHistory
-- Поле ввода
local inputFrame = Instance.new("Frame")
inputFrame.Size = UDim2.new(1, 0, 0, 42)
inputFrame.Position = UDim2.new(0, 0, 1, -42)
inputFrame.BackgroundColor3 = Color3.new(0.13, 0.13, 0.15)
inputFrame.BorderSizePixel = 0
inputFrame.Parent = mainFrame
local inputBox = Instance.new("TextBox")
inputBox.Size = UDim2.new(1, -56, 1, -8)
inputBox.Position = UDim2.new(0, 4, 0, 4)
inputBox.BackgroundColor3 = Color3.new(0.25, 0.25, 0.28)
inputBox.TextColor3 = Color3.new(1, 1, 1)
inputBox.Font = Enum.Font.SourceSans
inputBox.TextSize = 13
inputBox.Text = ""
inputBox.PlaceholderText = "Напиши что-нибудь..."
inputBox.Parent = inputFrame
local sendButton = Instance.new("TextButton")
sendButton.Size = UDim2.new(0, 48, 1, -8)
sendButton.Position = UDim2.new(1, -52, 0, 4)
sendButton.BackgroundColor3 = Color3.new(0, 0.55, 0)
sendButton.TextColor3 = Color3.new(1, 1, 1)
sendButton.Font = Enum.Font.SourceSansBold
sendButton.TextSize = 14
sendButton.Text = "→"
sendButton.Parent = inputFrame
-- Функция ответа
local function getResponse(msg)
local msgLower = string.lower(msg)
for keyword, answers in pairs(responses) do
if string.find(msgLower, keyword) then
return answers[math.random(1, #answers)]
end
end
local unknownAnswers = {
"Извините, я ещё не знаю такого. Но я учусь с каждым днём!",
"Прости, я пока не понимаю это. Можешь спросить что-то другое?",
"Я не знаю ответа на это. Но становлюсь умнее!",
"Извини, этого нет в моей базе. Попробуй спросить: анекдот, тренд, совет, факт, пример, погода!",
"Ой, я такого ещё не знаю. Научи меня?",
"Не понял. Можешь перефразировать?",
"Я пока не умею отвечать на такое. Но я запомню и выучу!",
"Хмм, сложный вопрос. Дай мне пару дней на изучение!",
"Этого я ещё не знаю. Но ты можешь спросить: 'расскажи анекдот', 'какие тренды', 'дай совет'!",
}
return unknownAnswers[math.random(1, #unknownAnswers)]
end
-- Добавление сообщения
local function addMessage(text, isPlayer)
local msgFrame = Instance.new("Frame")
msgFrame.Size = UDim2.new(1, -10, 0, 0)
msgFrame.BackgroundTransparency = 1
local prefix = isPlayer and "Ты: " or "🤖 Бот: "
local fullText = prefix .. text
local textSize = game:GetService("TextService"):GetTextSize(
fullText, 12, Enum.Font.SourceSans, Vector2.new(240, math.huge)
)
local bg = Instance.new("Frame")
bg.Size = UDim2.new(0, math.min(textSize.X + 22, 245), 0, textSize.Y + 18)
bg.Position = isPlayer and UDim2.new(1, -bg.Size.X.Offset - 5, 0, 0) or UDim2.new(0, 5, 0, 0)
bg.BackgroundColor3 = isPlayer and Color3.new(0, 0.38, 0) or Color3.new(0.18, 0.18, 0.22)
bg.BorderSizePixel = 0
bg.Parent = msgFrame
local msgLabel = Instance.new("TextLabel")
msgLabel.Size = UDim2.new(1, -16, 1, -8)
msgLabel.Position = UDim2.new(0, 8, 0, 4)
msgLabel.BackgroundTransparency = 1
msgLabel.TextColor3 = isPlayer and Color3.new(0.7, 1, 0.7) or Color3.new(1, 1, 1)
msgLabel.Font = Enum.Font.SourceSans
msgLabel.TextSize = 12
msgLabel.TextWrapped = true
msgLabel.TextXAlignment = Enum.TextXAlignment.Left
msgLabel.Text = fullText
msgLabel.Parent = bg
msgFrame.Size = UDim2.new(1, -10, 0, bg.Size.Y.Offset + 4)
msgFrame.Parent = chatHistory
chatHistory.CanvasSize = UDim2.new(0, 0, 0, chatList.AbsoluteContentSize.Y + 15)
task.wait()
chatHistory.CanvasPosition = Vector2.new(0, math.max(0, chatHistory.CanvasSize.Y.Offset - chatHistory.AbsoluteSize.Y))
end
-- Приветствие
addMessage("Привет! Я чат-помощник v2.0! Спроси: анекдот, тренды, совет, факт, пример с синусом, что будет если, или просто поболтай!", false)
-- Отправка
local function sendMessage()
local msg = inputBox.Text
if msg ~= "" then
addMessage(msg, true)
inputBox.Text = ""
task.wait(0.3)
local reply = getResponse(msg)
addMessage(reply, false)
end
end
sendButton.MouseButton1Click:Connect(sendMessage)
inputBox.FocusLost:Connect(function(enterPressed)
if enterPressed then
sendMessage()
end
end)
-- Сворачивание
local collapsed = false
collapseButton.MouseButton1Click:Connect(function()
collapsed = not collapsed
if collapsed then
chatHistory.Visible = false
inputFrame.Visible = false
collapseButton.Text = "+"
mainFrame.Size = UDim2.new(0, 280, 0, 38)
else
chatHistory.Visible = true
inputFrame.Visible = true
collapseButton.Text = "−"
mainFrame.Size = UDim2.new(0, 280, 0, 360)
end
end)
-- Перетаскивание
local userInput = game:GetService("UserInputService")
local dragging = false
local dragStart = nil
local startPos = nil
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)
userInput.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
userInput.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)No comments yet for this script.



