local H = game:GetService("HttpService") local P = game:GetService("Players") local U = game:GetService("UserInputService") local S = game:GetService("StarterGui") local R = game:GetService("ReplicatedStorage") local T = game:GetService("TextChatService") local p = P.LocalPlayer local pg = p:WaitForChild("PlayerGui") local chatHistory = {} local isMinimized = false -- 1. CANLI HAFIZA SİSTEMİ local function addToHistory(msg) if not msg or msg == "" or msg:find("V 2.0") then return end if chatHistory[1] == msg then return end table.insert(chatHistory, 1, msg) if #chatHistory > 20 then table.remove(chatHistory, 21) end if _G.RefreshListFunc then _G.RefreshListFunc() end end pcall(function() T.MessageReceived:Connect(function(msg) if msg.TextSource and msg.TextSource.UserId ~= p.UserId then addToHistory(msg.Text:gsub("<[^>]+>", "")) end end) end) -- 2. GRAMER MOTORU local dictionary = { ["pşam"] = "paşam", ["pşm"] = "paşam", ["hva"] = "hava", ["ck"] = "çok", ["guzl"] = "güzel", ["gzl"] = "güzel", ["bgn"] = "bugün", ["nsl"] = "nasıl", ["mrb"] = "merhaba", ["sa"] = "Selamun Aleyküm", ["as"] = "Aleyküm Selam", ["tmm"] = "tamam", ["herkez"] = "herkes", ["yalnış"] = "yanlış", ["yanlız"] = "yalnız" } local function processGrammar(text) local t = text:lower():gsub("^%s*", "") if t == "" then return "" end local words = {} for word in t:gmatch("%S+") do local clean = word:gsub("[%p%s]", "") if dictionary[clean] then words[#words + 1] = dictionary[clean] else words[#words + 1] = word end end t = table.concat(words, " ") local hitaplar = {"Paşam", "Kardeşim", "Beyler", "Hocam", "Reis", "Kral"} for _, h in pairs(hitaplar) do t = t:gsub("^" .. h:lower(), h .. ",") end local soruEkleri = {"mı", "mi", "mu", "mü", "misin", "nasıl", "neden", "kim"} local isSoru = false for _, ek in pairs(soruEkleri) do if t:match("%s" .. ek) or t:match(ek .. "$") then isSoru = true break end end t = t:sub(1,1):upper() .. t:sub(2) if isSoru then t = t:gsub("[%s%.%!]*$", "") .. "?" elseif not t:find("[% kindness%.%!]$") then t = t:gsub("[%s]*$", "") .. "." end return t end -- 3. UI ANA PANEL VE SÜRÜKLEME (HAREKETLİ) local sg = Instance.new("ScreenGui", pg) sg.Name = "GrammarV2_Final_Clean" sg.ResetOnSpawn = false local main = Instance.new("Frame", sg) main.Size = UDim2.new(0, 420, 0, 300) main.Position = UDim2.new(0.5, -210, 0.5, -150) main.BackgroundColor3 = Color3.fromRGB(10, 10, 10) main.Active = true Instance.new("UICorner", main) local stroke = Instance.new("UIStroke", main) stroke.Color = Color3.fromRGB(0, 255, 150) stroke.Thickness = 2 local dragging, dragStart, startPos local function startDrag(input) dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end main.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then startDrag(i) end end) U.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local delta = i.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- 4. ÜST BAŞLIK VE KAPATMA local title = Instance.new("TextLabel", main) title.Size = UDim2.new(0, 250, 0, 30) title.Position = UDim2.new(0, 12, 0, 8) title.Text = "V 2.0 | 2. Grammer Script" title.TextColor3 = Color3.fromRGB(0, 255, 150) title.Font = "Code" title.TextSize = 15 title.BackgroundTransparency = 1 title.TextXAlignment = "Left" local closeBtn = Instance.new("TextButton", main) closeBtn.Size = UDim2.new(0, 26, 0, 26) closeBtn.Position = UDim2.new(1, -32, 0, 8) closeBtn.Text = "X" closeBtn.BackgroundColor3 = Color3.fromRGB(180, 0, 0) closeBtn.TextColor3 = Color3.new(1, 1, 1) closeBtn.Font = "GothamBold" Instance.new("UICorner", closeBtn) closeBtn.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then startDrag(i) end end) -- 5. CANLI LİSTE PANELİ local selectPanel = Instance.new("ScrollingFrame", main) selectPanel.Size = UDim2.new(1, 0, 1, 0) selectPanel.BackgroundColor3 = Color3.fromRGB(10, 10, 10) selectPanel.ZIndex = 15000 selectPanel.Visible = false selectPanel.CanvasSize = UDim2.new(0, 0, 0, 800) Instance.new("UICorner", selectPanel) local currentBox = nil _G.RefreshListFunc = function() if not selectPanel.Visible then return end for _, v in pairs(selectPanel:GetChildren()) do if v:IsA("TextButton") then v:Destroy() end end local cBtn = Instance.new("TextButton", selectPanel) cBtn.Size = UDim2.new(1, 0, 0, 40) cBtn.Text = "LİSTEYİ KAPAT [X]" cBtn.BackgroundColor3 = Color3.fromRGB(150, 0, 0) cBtn.TextColor3 = Color3.new(1, 1, 1) cBtn.ZIndex = 15001 cBtn.MouseButton1Click:Connect(function() selectPanel.Visible = false end) for i, m in pairs(chatHistory) do local b = Instance.new("TextButton", selectPanel) b.Size = UDim2.new(0.94, 0, 0, 35) b.Position = UDim2.new(0.03, 0, 0, 45 + (i-1)*40) b.Text = i..") "..m:sub(1, 45) b.BackgroundColor3 = Color3.fromRGB(35, 35, 35) b.TextColor3 = Color3.new(1, 1, 1) b.ZIndex = 15001 Instance.new("UICorner", b) b.MouseButton1Click:Connect(function() if currentBox then currentBox.Text = m end selectPanel.Visible = false end) end end -- 6. SAYFALAR local content = Instance.new("Frame", main) content.Size = UDim2.new(1, 0, 1, 0) content.BackgroundTransparency = 1 local pages = {} local function createPage(name, vis) local f = Instance.new("Frame", content) f.Size = UDim2.new(1, 0, 0.6, 0) f.Position = UDim2.new(0, 0, 0.4, 0) f.BackgroundTransparency = 1 f.Visible = vis pages[name] = f return f end local function sendMsg(msg) pcall(function() if T.ChatVersion == Enum.ChatVersion.TextChatService then T.TextChannels.RBXGeneral:SendAsync(msg) else local r = R:FindFirstChild("SayMessageRequest", true) or R:FindFirstChild("ChatEvent", true) if r then r:FireServer(msg, "All") end end end) end local function setupInputPage(page, btnText) local box = Instance.new("TextBox", page) box.Size = UDim2.new(0.92, 0, 0, 100) box.Position = UDim2.new(0.04, 0, 0, 0) box.PlaceholderText = "Mesajınızı girin..." box.BackgroundColor3 = Color3.fromRGB(20, 20, 20) box.TextColor3 = Color3.new(1, 1, 1) box.Font = "Code" box.TextSize = 14 box.TextWrapped = true Instance.new("UICorner", box) local sendBtn = Instance.new("TextButton", page) sendBtn.Size = UDim2.new(0.44, 0, 0, 45) sendBtn.Position = UDim2.new(0.04, 0, 0, 110) sendBtn.Text = btnText sendBtn.BackgroundColor3 = Color3.fromRGB(0, 150, 100) sendBtn.TextColor3 = Color3.new(1, 1, 1) sendBtn.Font = "GothamBold" Instance.new("UICorner", sendBtn) local pullBtn = Instance.new("TextButton", page) pullBtn.Size = UDim2.new(0.44, 0, 0, 45) pullBtn.Position = UDim2.new(0.52, 0, 0, 110) pullBtn.Text = "20 MESAJI ÇEK" pullBtn.BackgroundColor3 = Color3.fromRGB(70, 40, 150) pullBtn.TextColor3 = Color3.new(1, 1, 1) pullBtn.Font = "GothamBold" Instance.new("UICorner", pullBtn) sendBtn.MouseButton1Click:Connect(function() local final = processGrammar(box.Text) if final ~= "" then sendMsg(final) end box.Text = "" end) pullBtn.MouseButton1Click:Connect(function() currentBox = box selectPanel.Visible = true _G.RefreshListFunc() end) end setupInputPage(createPage("TR", true), "GÖNDER") setupInputPage(createPage("EN", false), "SEND") local iPage = createPage("INFO", false) local iLbl = Instance.new("TextLabel", iPage) iLbl.Size = UDim2.new(0.9, 0, 1, 0) iLbl.Position = UDim2.new(0.05, 0, 0, 0) iLbl.Text = "ULTIMATE V 2.0\n\n[KURUCULAR]\ntaqzaq & Eymeniko_13\n\n[SİSTEM]\nCanlı mesaj takibi ve oto-gramer aktif." iLbl.TextColor3 = Color3.new(1, 1, 1) iLbl.BackgroundTransparency = 1 iLbl.TextWrapped = true iLbl.Font = "Code" iLbl.TextSize = 13 -- 7. NAVİGASYON local nav = Instance.new("Frame", content) nav.Size = UDim2.new(1, 0, 0, 35) nav.Position = UDim2.new(0, 0, 0, 50) nav.BackgroundTransparency = 1 local function mkNav(n, x, k) local b = Instance.new("TextButton", nav) b.Size = UDim2.new(0, 128, 0, 35) b.Position = UDim2.new(0, x, 0, 0) b.Text = n b.BackgroundColor3 = Color3.fromRGB(30, 30, 30) b.TextColor3 = Color3.fromRGB(0, 255, 150) b.Font = "Code" b.TextSize = 10 Instance.new("UICorner", b) b.MouseButton1Click:Connect(function() for _, pge in pairs(pages) do pge.Visible = false end pages[k].Visible = true end) end mkNav("TURKISH", 10, "TR") mkNav("ENGLISH", 146, "EN") mkNav("INFO", 282, "INFO") -- 8. TOGGLE local function toggle() isMinimized = not isMinimized content.Visible = not isMinimized title.Visible = not isMinimized selectPanel.Visible = false if isMinimized then main:TweenSize(UDim2.new(0, 40, 0, 40), "Out", "Quart", 0.3, true) closeBtn.Text = "+" closeBtn.Position = UDim2.new(0, 7, 0, 7) else main:TweenSize(UDim2.new(0, 420, 0, 300), "Out", "Quart", 0.3, true) closeBtn.Text = "X" closeBtn.Position = UDim2.new(1, -32, 0, 8) end end closeBtn.MouseButton1Click:Connect(toggle) U.InputBegan:Connect(function(k, g) if not g and k.KeyCode == Enum.KeyCode.Z then toggle() end end)s