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)