
KeylessUniversal

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



doesnt work dont waste ur time