
Keyless

-- [ SAMBUNG KATA GUI - VERSI FINAL STABLE ]
-- Database dari: kanzXhub (628+ kata authentic)
-- Support: X, LY, CY, GY, ISME, EH, E, PT, FT, LT, IT, OT, KT, RT, DT
local VirtualInputManager = game:GetService("VirtualInputManager")
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local guiParent = pcall(function() return CoreGui.Name end) and CoreGui or Players.LocalPlayer:WaitForChild("PlayerGui")
if guiParent:FindFirstChild("qiellHub") then
guiParent.qiellHub:Destroy()
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "qiellHub"
ScreenGui.Parent = guiParent
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
-- [ TOGGLE BUTTON ]
local ToggleButton = Instance.new("Frame")
ToggleButton.Name = "ToggleButton"
ToggleButton.Size = UDim2.new(0, 90, 0, 90)
ToggleButton.Position = UDim2.new(1, -110, 1, -110)
ToggleButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.BorderSizePixel = 0
ToggleButton.ZIndex = 10
ToggleButton.Parent = ScreenGui
local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(0, 12)
ToggleCorner.Parent = ToggleButton
local LogoImage = Instance.new("ImageLabel")
LogoImage.Size = UDim2.new(1, -8, 1, -8)
LogoImage.Position = UDim2.new(0, 4, 0, 4)
LogoImage.BackgroundTransparency = 1
LogoImage.Image = "rbxassetid://105687352673338"
LogoImage.ScaleType = Enum.ScaleType.Fit
LogoImage.Parent = ToggleButton
local Shadow = Instance.new("Frame")
Shadow.Size = UDim2.new(1, 4, 1, 4)
Shadow.Position = UDim2.new(0, -2, 0, -2)
Shadow.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
Shadow.BorderSizePixel = 0
Shadow.ZIndex = 9
Shadow.Parent = ToggleButton
local ShadowCorner = Instance.new("UICorner")
ShadowCorner.CornerRadius = UDim.new(0, 12)
ShadowCorner.Parent = Shadow
local uiVisible = true
-- [ MAIN FRAME ]
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 500, 0, 520)
MainFrame.Position = UDim2.new(0.5, -250, 0.5, -260)
MainFrame.BackgroundColor3 = Color3.fromRGB(245, 235, 240)
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 12)
UICorner.Parent = MainFrame
-- Draggable
local dragging, dragInput, dragStart, startPos
MainFrame.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
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
MainFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging 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)
-- [ HEADER ]
local Header = Instance.new("Frame")
Header.Size = UDim2.new(1, 0, 0, 40)
Header.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
Header.BorderSizePixel = 0
Header.Active = true
Header.Parent = MainFrame
local HeaderCorner = Instance.new("UICorner")
HeaderCorner.CornerRadius = UDim.new(0, 12)
HeaderCorner.Parent = Header
local HeaderFix = Instance.new("Frame")
HeaderFix.Size = UDim2.new(1, 0, 0, 10)
HeaderFix.Position = UDim2.new(0, 0, 1, -10)
HeaderFix.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
HeaderFix.BorderSizePixel = 0
HeaderFix.Parent = Header
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -40, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "qiellHub - SAMBUNG KATA (628+ KATA)"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 14
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = Header
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 30, 0, 30)
CloseBtn.Position = UDim2.new(1, -35, 0, 5)
CloseBtn.BackgroundTransparency = 1
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 16
CloseBtn.Parent = Header
CloseBtn.MouseButton1Click:Connect(function()
ScreenGui:Destroy()
end)
-- [ TAB SYSTEM ]
local TabFrame = Instance.new("Frame")
TabFrame.Size = UDim2.new(0, 100, 1, -40)
TabFrame.Position = UDim2.new(0, 0, 0, 40)
TabFrame.BackgroundColor3 = Color3.fromRGB(230, 220, 225)
TabFrame.BorderSizePixel = 0
TabFrame.Parent = MainFrame
local activeTab = "awalan"
local TabAwalan = Instance.new("TextButton")
TabAwalan.Size = UDim2.new(1, 0, 0, 50)
TabAwalan.Position = UDim2.new(0, 0, 0, 0)
TabAwalan.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
TabAwalan.TextColor3 = Color3.fromRGB(255, 255, 255)
TabAwalan.Text = "Kata\nAwalan"
TabAwalan.Font = Enum.Font.GothamBold
TabAwalan.TextSize = 11
TabAwalan.BorderSizePixel = 0
TabAwalan.Parent = TabFrame
local TabAwalanCorner = Instance.new("UICorner")
TabAwalanCorner.CornerRadius = UDim.new(0, 6)
TabAwalanCorner.Parent = TabAwalan
local TabAkhiran = Instance.new("TextButton")
TabAkhiran.Size = UDim2.new(1, 0, 0, 50)
TabAkhiran.Position = UDim2.new(0, 0, 0, 50)
TabAkhiran.BackgroundColor3 = Color3.fromRGB(180, 120, 150)
TabAkhiran.TextColor3 = Color3.fromRGB(255, 255, 255)
TabAkhiran.Text = "Akhiran"
TabAkhiran.Font = Enum.Font.GothamBold
TabAkhiran.TextSize = 11
TabAkhiran.BorderSizePixel = 0
TabAkhiran.Parent = TabFrame
local TabAkhiranCorner = Instance.new("UICorner")
TabAkhiranCorner.CornerRadius = UDim.new(0, 6)
TabAkhiranCorner.Parent = TabAkhiran
-- [ CONTENT FRAME ]
local ContentFrame = Instance.new("Frame")
ContentFrame.Size = UDim2.new(1, -100, 1, -40)
ContentFrame.Position = UDim2.new(0, 100, 0, 40)
ContentFrame.BackgroundTransparency = 1
ContentFrame.BorderSizePixel = 0
ContentFrame.Parent = MainFrame
-- [ SEARCH BOX ]
local SearchBox = Instance.new("TextBox")
SearchBox.Size = UDim2.new(1, -30, 0, 35)
SearchBox.Position = UDim2.new(0, 15, 0, 15)
SearchBox.BackgroundColor3 = Color3.fromRGB(235, 220, 230)
SearchBox.TextColor3 = Color3.fromRGB(30, 30, 50)
SearchBox.PlaceholderText = "Cari huruf awal (A, B, C...)"
SearchBox.Font = Enum.Font.Gotham
SearchBox.TextSize = 12
SearchBox.ClearTextOnFocus = false
SearchBox.Parent = ContentFrame
local SearchCorner = Instance.new("UICorner")
SearchCorner.CornerRadius = UDim.new(0, 8)
SearchCorner.Parent = SearchBox
-- [ BUTTON FRAME ]
local ButtonFrame = Instance.new("Frame")
ButtonFrame.Size = UDim2.new(1, -30, 0, 35)
ButtonFrame.Position = UDim2.new(0, 15, 0, 55)
ButtonFrame.BackgroundTransparency = 1
ButtonFrame.BorderSizePixel = 0
ButtonFrame.Parent = ContentFrame
local ButtonLayout = Instance.new("UIListLayout")
ButtonLayout.FillDirection = Enum.FillDirection.Horizontal
ButtonLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
ButtonLayout.VerticalAlignment = Enum.VerticalAlignment.Center
ButtonLayout.Padding = UDim.new(0, 8)
ButtonLayout.Parent = ButtonFrame
-- Auto Enter Toggle (DEFAULT ON seperti kanzXhub)
local autoEnterEnabled = true
local AutoEnterBtn = Instance.new("TextButton")
AutoEnterBtn.Size = UDim2.new(0, 65, 0, 30)
AutoEnterBtn.BackgroundColor3 = Color3.fromRGB(16, 185, 129)
AutoEnterBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
AutoEnterBtn.Text = "Enter: ON"
AutoEnterBtn.Font = Enum.Font.GothamBold
AutoEnterBtn.TextSize = 11
AutoEnterBtn.BorderSizePixel = 0
AutoEnterBtn.Parent = ButtonFrame
local AutoEnterCorner = Instance.new("UICorner")
AutoEnterCorner.CornerRadius = UDim.new(0, 6)
AutoEnterCorner.Parent = AutoEnterBtn
AutoEnterBtn.MouseButton1Click:Connect(function()
autoEnterEnabled = not autoEnterEnabled
if autoEnterEnabled then
AutoEnterBtn.Text = "Enter: ON"
AutoEnterBtn.BackgroundColor3 = Color3.fromRGB(16, 185, 129)
else
AutoEnterBtn.Text = "Enter: OFF"
AutoEnterBtn.BackgroundColor3 = Color3.fromRGB(107, 114, 128)
end
end)
-- Rapid Backspace
local RapidBtn = Instance.new("TextButton")
RapidBtn.Size = UDim2.new(0, 70, 0, 30)
RapidBtn.BackgroundColor3 = Color3.fromRGB(200, 100, 130)
RapidBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
RapidBtn.Text = "Hapus Cepat"
RapidBtn.Font = Enum.Font.GothamBold
RapidBtn.TextSize = 8
RapidBtn.BorderSizePixel = 0
RapidBtn.Parent = ButtonFrame
local RapidCorner = Instance.new("UICorner")
RapidCorner.CornerRadius = UDim.new(0, 6)
RapidCorner.Parent = RapidBtn
local isHoldingBackspace = false
RapidBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
isHoldingBackspace = true
RapidBtn.BackgroundColor3 = Color3.fromRGB(180, 80, 110)
while isHoldingBackspace do
pcall(function()
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Backspace, false, game)
task.wait(0.01)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Backspace, false, game)
end)
task.wait(0.05)
end
end
end)
RapidBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
isHoldingBackspace = false
RapidBtn.BackgroundColor3 = Color3.fromRGB(200, 100, 130)
end
end)
-- Reset Button
local ResetBtn = Instance.new("TextButton")
ResetBtn.Size = UDim2.new(0, 50, 0, 30)
ResetBtn.BackgroundColor3 = Color3.fromRGB(180, 150, 170)
ResetBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
ResetBtn.Text = "Reset"
ResetBtn.Font = Enum.Font.GothamBold
ResetBtn.TextSize = 9
ResetBtn.BorderSizePixel = 0
ResetBtn.Parent = ButtonFrame
local ResetCorner = Instance.new("UICorner")
ResetCorner.CornerRadius = UDim.new(0, 6)
ResetCorner.Parent = ResetBtn
ResetBtn.MouseButton1Click:Connect(function()
usedWords = {}
SearchBox.Text = ""
clearResults()
doSearch()
end)
-- [ STATUS LABEL ]
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, -30, 0, 18)
StatusLabel.Position = UDim2.new(0, 15, 0, 95)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "Memuat kata..."
StatusLabel.TextColor3 = Color3.fromRGB(80, 80, 100)
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.TextSize = 11
StatusLabel.TextXAlignment = Enum.TextXAlignment.Left
StatusLabel.Parent = ContentFrame
-- [ RESULT LIST ]
local ResultList = Instance.new("ScrollingFrame")
ResultList.Size = UDim2.new(1, -30, 1, -125)
ResultList.Position = UDim2.new(0, 15, 0, 120)
ResultList.BackgroundTransparency = 1
ResultList.ScrollBarThickness = 6
ResultList.ScrollBarImageColor3 = Color3.fromRGB(200, 150, 170)
ResultList.CanvasSize = UDim2.new(0, 0, 0, 0)
ResultList.Parent = ContentFrame
local ListLayout = Instance.new("UIListLayout")
ListLayout.Padding = UDim.new(0, 5)
ListLayout.SortOrder = Enum.SortOrder.LayoutOrder
ListLayout.Parent = ResultList
-- [ DATABASE KATA - DARI KANZXHUB (628+ KATA) ]
local wordsDatabase = {
-- AKHIRAN X (98 kata)
"bordeaux", "lex", "sphinx", "unisex", "bodrex", "komix", "gallierex", "addax",
"aframax", "apterix", "bombyx", "caloperdrix", "caranx", "caronx", "chalcococyx",
"chx", "cimex", "circumfix", "coix", "confix", "cyathocalyx", "donax", "echinosorex",
"forex", "helix", "hystrix", "ilex", "index", "lux", "marx", "max", "melanoperdix",
"meritrix", "microhierax", "molitrix", "murex", "mystax", "naiasptatrix", "natrix",
"nephotettix", "nephottotix", "ninox", "nontax", "nothopanax", "nycticorax", "offax",
"olfax", "ex", "prix", "annex", "croix", "deux", "complex", "ix", "hapax", "rex",
"klux", "mantoux", "box", "vox",
"xacum", "xan", "xantat", "xantena", "xanthophyllum", "xanthorrhiza", "xanthosoma",
"xantofil", "xe", "xenia", "xenial", "xenobiologi", "xenochrophia", "xenofil",
"xenofobia", "xenolosia", "xenograf", "xenokrasi", "xenolit", "xenomania", "xenon",
"xenopsylla", "xerofil", "xerofit", "xeroftalmia", "xerografi", "xerosis", "xi",
"xifoid", "xii", "xiii", "xilan", "xilem", "xilena", "xilibium", "xilofag", "xilofon",
"xilografi", "xiloid", "xiloidina", "xilol", "xilologi", "xilonit", "xilosa", "xiroderma",
"xister", "xiv", "xix", "xvi", "xx", "xy", "xylocarpus", "xylopia", "xylotropes", "xystrocera",
-- AKHIRAN LY (16 kata)
"assertedly", "billy", "bily", "diddly", "disproportionally", "errorlessly",
"expansively", "neighbourly", "overabundantly", "piddly", "resumply", "retailly",
"sandfly", "secondly", "separably", "westwardly",
-- AKHIRAN CY (11 kata)
"arrogancy", "corpulency", "delegitmacy", "excellency", "incompetency", "nonlegitmacy",
"supremacy", "prodemocracy", "recalcitracy", "insurgency", "verdancy",
-- AKHIRAN GY (8 kata)
"anaesthesiology", "buggy", "cosmology", "oceanology", "paleontropology",
"pathology", "seismology", "otourology",
-- AKHIRAN ISME (400+ kata)
"isisme", "absenteisme", "absolutisme", "absurdisme", "aforisme", "agnostisisme", "aktivisme",
"albinisme", "alkoholisme", "alomerisme", "altruisme", "amatirisme", "amensalisme", "amfibolisme",
"anabolisme", "anakronisme", "anarkisme", "aneurisme", "animisme", "antagonisme", "antisemitisme",
"antropomorfisme", "antroposentrisme", "antusiasme", "aheliotrpisime", "arkaisme", "asketisisme",
"atavisme", "ateisme", "autisme", "banditisme", "bapakisme", "barbarisme", "bebekisme",
"bilateralisme", "bilingualisme", "bipolisentriisme", "birokraitisme", "blabitisme", "botulisme",
"bromisme", "brutalisme", "buddhisme", "dadaisme", "daerahisme", "daltonisme", "defaitisme",
"deisme", "despotisme", "determinisme", "diamagnetisme", "dikroisme", "dimorfisme", "dinamisme",
"dismembrasia", "dismenorea", "dogmatisme", "dualisme", "durnoisme", "eksotisme", "ekspansionisme",
"ekspresionisme", "ekumenisme", "elektromagnetisme", "embolisme", "emosionalisme", "empirisme",
"energi", "erosentriisme", "erotisisme", "erotisme", "eskapisme", "etatisme", "etnoseentriisme",
"eudaemonisme", "eufemisme", "evolusionisme", "familisme", "fanatisme", "fasisme", "fatalisme",
"favoritisme", "federalisme", "feminisme", "fenomenalisme", "feodalisime", "feromagnetisme",
"fotoperiodisme", "fundamentalisme", "fungsionalisme", "futurisme", "gigantisme", "globalisme",
"gradualisme", "hedonisme", "hegelianisme", "hegemonisme", "heliotropisme", "henoteisme",
"hermafroditisme", "heroisme", "hinduisme", "hipnotisme", "hipopituitarisme", "hipotiroidisme",
"hirsutisme", "historisisme", "holisme", "homoseksualisme", "humanisme", "idealisme",
"ikhtiosarkotoksisme", "ikhtiotoksisme", "ikonoklasme", "imperialisme", "impresionisme",
"indeterminisme", "individualisme", "infantilisme", "intelektualisme", "interventionisme",
"islamisme", "isokronisme", "isolasionisme", "isomorfisme", "retreatisme", "romantisisme",
"sadisme", "sarkasme", "sauviniisme", "sektarianisme", "sekularisme", "semitisme",
"sensualisme", "separatisme", "silogisme", "simbolisme", "sindikalisme", "sinergisme",
"sinisme", "sinkretisme", "sinkronisme", "skeptisisme", "skolastisisme", "smes", "snobisme",
"sodomasosisme", "sofisme", "solipsisme", "somnambulisme", "sosialisme", "spiritisme",
"spiritualisme", "stalinisme", "stereoisomerisme", "struktur", "strukturalisme", "subjektivisme",
"subyektivisme", "sufisme", "sukuisme", "superlativisme", "surealisme", "syamanisme", "takisme",
"tantrisme", "taoisme", "tarantisme", "tautomerisme", "teisme", "teknokratisme", "teori",
"terrorisme", "totaliterisme", "totemisme", "tradisionalisme", "transvetisme", "trauma",
"tropisme", "turisme", "unitarisme", "universalisme", "uranisme", "urbanisme", "utopisme",
"vandalisme", "vegetarisme", "verbalisme", "veritism", "virilisme", "zionisme", "abstraksionisme",
"alelomorfisme", "automorfisme", "biologisme", "buddhisme", "darwinisme", "disfenisme",
"etotisisme", "faksionalisme", "fluksmeter", "fu torisme", "halokromisme", "histerospasme",
"idealisme", "kemotropisme", "konfusianisme", "kosmetika", "kristianisme", "lamaran",
"maltusianisme", "mesomorfisme", "metamerisme", "monolingualisme", "multiteisme", "mutamerisme",
"mutatisme", "mutirasialisme", "narsisisme", "nazisme 1", "neoklasikisme", "polimetalisme",
"polimorfisme", "postrukturalisme", "premanisme", "radiotropisme", "superorganisme", "vitalisme",
"volunterisme", "vulkanisme",
-- AKHIRAN EH (150+ kata)
"baris", "batang", "beha", "behandel", "behena", "behina", "bengkung", "benih", "benteh", "bentes",
"boleh", "bongmeh", "boreh", "bunga", "ceceh", "celekeh", "celoteh", "cemeeh", "cemeh", "cengeh",
"cengkeh", "ceroteh", "cingkeh", "congeh", "daun", "deceh", "deh", "deham", "dehem", "dehidrasi",
"dehidrat", "dehidrogenasi", "dehumanisasi", "didik", "dokoh", "doktor", "ehe", "ekeh", "enceh",
"ereh", "fotografi", "gapura", "gelar", "gereh", "geryeh", "gonyeh", "greha", "grehon", "gunting",
"habis", "hadap", "hadir", "haji", "hakim", "halal", "haluan", "halus", "hambar", "hamil", "hampa",
"hampar", "hancur", "hangat", "hangus", "hari", "harmonis", "haru", "harum", "harus", "hasrat",
"hasta", "hati", "haus", "hebat", "heboh", "helai", "hemat", "hendak", "hening", "heran", "heroik",
"heterogen", "hewan", "hibuk", "hidang", "hidup", "hijau", "hilang", "hilir", "hina", "hiponim",
"hitam", "homofon", "homogen", "homograf", "homomim", "hormat", "hujan", "hujung", "hukum", "humas",
"hutan", "ilmu", "indehoi", "instalasi", "jamu", "jelajeh", "jurang", "kaidah", "kalang", "kambeh",
"kancah", "kanceh", "karat", "kareseh", "kawal", "kayu", "kehel", "kekeh", "keleseh", "keloceh",
"kepik", "keras", "ketua", "kokleh", "komprehensif", "kondisi", "kreseh", "kurun", "kutuk", "larut", "leceh",
-- AKHIRAN E DAN LAINNYA
"ex", "excavata", "excellency", "excelsa", "excelsum", "exclusivism", "excoecaria", "exelse",
"eximia", "exocarpus", "exocecaria", "exocoetidae", "exodus", "exoecaria", "expansa", "expat", "expo",
"coapt", "dpt", "oapt", "adesuki", "adipsu", "adis", "adipose", "emdifia", "andrika",
"fr", "hiposaft", "oligoaft", "paradr", "skizoaft",
"liskopnault", "lt", "balt", "femtovolt", "killavolt", "kolaaft", "kolbaft",
"komalt", "kolt", "kitrovolt", "kult", "walsbelt",
"triplit", "skizoft", "simpit", "sleript", "stipit",
"capit", "dpit", "oppi", "seipt", "sepit",
"bakpt", "kompt", "kusdrupt", "kuinrupt", "kupi",
"doppt", "mopt", "mpt", "seipt", "seipt",
"apopt", "dipuskompti", "diompi", "dupi", "gappi", "empt", "gapti", "inkompt", "isoppi",
"kogpi", "kompt", "kuadirupi", "kuintupi", "kupi", "magpi", "melppi", "mppi", "multikomppi",
"multiopi", "opi", "paraoppi", "pi", "saopi", "seloppi", "simppi", "stoppi", "suppi", "trippi"
}
table.sort(wordsDatabase, function(a, b) return #a > #b end)
StatusLabel.Text = "Kamus Aktif: " .. tostring(#wordsDatabase) .. " kata."
local usedWords = {}
-- [ CLEAR RESULTS ]
function clearResults()
for _, child in pairs(ResultList:GetChildren()) do
if child:IsA("Frame") or child:IsA("TextButton") then
child:Destroy()
end
end
end
-- [ CREATE WORD ITEM ]
function createWordItem(word)
local ItemFrame = Instance.new("Frame")
ItemFrame.Size = UDim2.new(1, -10, 0, 35)
ItemFrame.BackgroundColor3 = Color3.fromRGB(225, 200, 215)
ItemFrame.BorderSizePixel = 0
ItemFrame.Parent = ResultList
local ItemCorner = Instance.new("UICorner")
ItemCorner.CornerRadius = UDim.new(0, 6)
ItemCorner.Parent = ItemFrame
local MainBtn = Instance.new("TextButton")
MainBtn.Size = UDim2.new(1, -165, 1, 0)
MainBtn.BackgroundTransparency = 1
if usedWords[word] then
MainBtn.Text = " [TERPAKAI] " .. word
MainBtn.TextColor3 = Color3.fromRGB(100, 100, 120)
ItemFrame.BackgroundColor3 = Color3.fromRGB(200, 170, 190)
else
MainBtn.Text = " " .. word
MainBtn.TextColor3 = Color3.fromRGB(30, 30, 60)
end
MainBtn.Font = Enum.Font.GothamSemibold
MainBtn.TextSize = 14
MainBtn.TextXAlignment = Enum.TextXAlignment.Left
MainBtn.Parent = ItemFrame
local function markAsUsed()
usedWords[word] = true
MainBtn.Text = " [TERPAKAI] " .. word
MainBtn.TextColor3 = Color3.fromRGB(100, 100, 120)
ItemFrame.BackgroundColor3 = Color3.fromRGB(200, 170, 190)
end
MainBtn.MouseButton1Click:Connect(function()
if usedWords[word] then return end
MainBtn.Text = " [Mengetik...] " .. word
MainBtn.TextColor3 = Color3.fromRGB(80, 100, 200)
for i = 1, #word do
local char = string.upper(string.sub(word, i, i))
local success, keyCode = pcall(function() return Enum.KeyCode[char] end)
if success and keyCode then
pcall(function()
VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
task.wait(0.01)
VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end)
task.wait(0.02)
end
end
-- AUTO ENTER jika enabled
if autoEnterEnabled then
task.wait(0.2)
pcall(function()
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Return, false, game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Return, false, game)
end)
end
task.wait(0.2)
if MainBtn then
markAsUsed()
end
end)
local ActionFrame = Instance.new("Frame")
ActionFrame.Size = UDim2.new(0, 155, 1, 0)
ActionFrame.Position = UDim2.new(1, -160, 0, 0)
ActionFrame.BackgroundTransparency = 1
ActionFrame.Parent = ItemFrame
local ActionLayout = Instance.new("UIListLayout")
ActionLayout.FillDirection = Enum.FillDirection.Horizontal
ActionLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
ActionLayout.VerticalAlignment = Enum.VerticalAlignment.Center
ActionLayout.Padding = UDim.new(0, 4)
ActionLayout.Parent = ActionFrame
local function createCutButton(amount)
if #word <= amount then return end
local CutBtn = Instance.new("TextButton")
CutBtn.Size = UDim2.new(0, 26, 0, 24)
CutBtn.BackgroundColor3 = Color3.fromRGB(200, 150, 180)
CutBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CutBtn.Text = "-"..amount
CutBtn.Font = Enum.Font.GothamBold
CutBtn.TextSize = 11
CutBtn.Parent = ActionFrame
local CutCorner = Instance.new("UICorner")
CutCorner.CornerRadius = UDim.new(0, 4)
CutCorner.Parent = CutBtn
CutBtn.MouseButton1Click:Connect(function()
if usedWords[word] then return end
CutBtn.BackgroundColor3 = Color3.fromRGB(180, 120, 150)
CutBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
local cutWord = string.sub(word, amount + 1)
for i = 1, #cutWord do
local char = string.upper(string.sub(cutWord, i, i))
local success, keyCode = pcall(function() return Enum.KeyCode[char] end)
if success and keyCode then
pcall(function()
VirtualInputManager:SendKeyEvent(true, keyCode, false, game)
task.wait(0.01)
VirtualInputManager:SendKeyEvent(false, keyCode, false, game)
end)
task.wait(0.02)
end
end
-- AUTO ENTER jika enabled
if autoEnterEnabled then
task.wait(0.2)
pcall(function()
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Return, false, game)
task.wait(0.05)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Return, false, game)
end)
end
task.wait(0.2)
if CutBtn then
CutBtn.BackgroundColor3 = Color3.fromRGB(200, 150, 180)
CutBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
markAsUsed()
end
end)
end
createCutButton(1)
createCutButton(2)
createCutButton(3)
createCutButton(4)
createCutButton(5)
end
-- [ SEARCH FUNCTION ]
function doSearch()
local query = string.lower(SearchBox.Text)
clearResults()
if query == "" then
StatusLabel.Text = "Kamus Aktif: " .. tostring(#wordsDatabase) .. " kata."
ResultList.CanvasSize = UDim2.new(0, 0, 0, 0)
return
end
local count = 0
if activeTab == "awalan" then
for _, word in ipairs(wordsDatabase) do
if string.sub(word, 1, #query) == query then
createWordItem(word)
count = count + 1
if count >= 100 then break end
end
end
else
for _, word in ipairs(wordsDatabase) do
if string.sub(word, -#query) == query then
createWordItem(word)
count = count + 1
if count >= 100 then break end
end
end
end
StatusLabel.Text = "Ditemukan: " .. tostring(count) .. (count >= 100 and "+ (Terbatas 100)" or " kata")
ResultList.CanvasSize = UDim2.new(0, 0, 0, count * 40)
end
SearchBox:GetPropertyChangedSignal("Text"):Connect(doSearch)
-- [ TAB CLICK HANDLERS ]
TabAwalan.MouseButton1Click:Connect(function()
activeTab = "awalan"
TabAwalan.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
TabAkhiran.BackgroundColor3 = Color3.fromRGB(180, 120, 150)
SearchBox.PlaceholderText = "Cari huruf awal (A, B, C...)"
SearchBox.Text = ""
clearResults()
doSearch()
end)
TabAkhiran.MouseButton1Click:Connect(function()
activeTab = "akhiran"
TabAkhiran.BackgroundColor3 = Color3.fromRGB(200, 150, 170)
TabAwalan.BackgroundColor3 = Color3.fromRGB(180, 120, 150)
SearchBox.PlaceholderText = "Cari huruf akhir (X, ISME, EH...)"
SearchBox.Text = ""
clearResults()
doSearch()
end)
-- [ TOGGLE BUTTON EVENT ]
local toggleDragThreshold = 5
local toggleHasMoved = false
local toggleDragging = false
ToggleButton.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
toggleDragging = true
dragStart = input.Position
startPos = ToggleButton.Position
toggleHasMoved = false
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
toggleDragging = false
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
if toggleDragging and dragStart then
local delta = input.Position - dragStart
if math.abs(delta.X) > toggleDragThreshold or math.abs(delta.Y) > toggleDragThreshold then
toggleHasMoved = true
ToggleButton.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
Shadow.Position = UDim2.new(0, -2, 0, 4)
end
end
end
end)
ToggleButton.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
Shadow.Position = UDim2.new(0, -2, 0, -2)
if not toggleHasMoved then
uiVisible = not uiVisible
MainFrame.Visible = uiVisible
if not uiVisible then
ToggleButton.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
LogoImage.ImageTransparency = 0.5
else
ToggleButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
LogoImage.ImageTransparency = 0
end
end
toggleDragging = false
toggleHasMoved = false
end
end)
doSearch()



skidd