KiciaHook Decompiled And Open Source
KiciaHook โ Decompiled & Open Source KiciaHook is a decompiled and open-source Roblox Rivals script, made available for anyone interested in exploring its code, understanding its functionality, and learning how its systems work. Features ๐ Decompiled source code available for inspection ๐ Open-source code for transparency and community learning ๐ ๏ธ Explore the script's structure and implementation ๐ Readable source for research, debugging, and development ๐ฎ Made for Roblox Rivals Disclaimer: This project is provided for educational and research purposes. Review the source code before running any scripts, and use it responsibly. Unverified scripts may contain unwanted or malicious code. KiciaHook โ Decompiled. Open Source. Community Accessible.
the risk scan cleared this script. it still noticed a few things:
risk 1/10 ยท safe ยท obfuscated with Generic
loadstring(game:HttpGet("https://pasteblox.com/raw/23bewmruh8"))()--==========================================================================
-- Kicia Rebuild - Rivals
-- Kiciahook v3, rebuilt from a decompiled build.
--==========================================================================
if getgenv().KiciaRebuild and getgenv().KiciaRebuild.Unload then
pcall(getgenv().KiciaRebuild.Unload)
end
if not game:IsLoaded() then game.Loaded:Wait() end
local K = { connections = {}, cleanups = {}, destroyed = false }
getgenv().KiciaRebuild = K
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CollectionService = game:GetService("CollectionService")
local HttpService = game:GetService("HttpService")
local SoundService = game:GetService("SoundService")
local Lighting = game:GetService("Lighting")
local player = Players.LocalPlayer
local rawget, rawset = rawget, rawset
function K.fn(name)
local v
pcall(function() v = getfenv(0)[name] end)
if type(v) ~= "function" then pcall(function() v = getfenv()[name] end) end
return type(v) == "function" and v or nil
end
local getthreadidentity_ = K.fn("getthreadidentity") or K.fn("getidentity")
local setthreadidentity_ = K.fn("setthreadidentity") or K.fn("setidentity")
local sethiddenproperty_ = K.fn("sethiddenproperty")
local gethui_ = K.fn("gethui")
local function identity(n)
if not setthreadidentity_ then return function() end end
local old = getthreadidentity_ and getthreadidentity_() or nil
pcall(setthreadidentity_, n)
return function() if old then pcall(setthreadidentity_, old) end end
end
K.identity = identity
local function hudParent()
local ok, h = pcall(function() return gethui_ and gethui_() end)
if ok and h then return h end
return game:GetService("CoreGui")
end
K.hudParent = hudParent
function K.track(c) K.connections[#K.connections + 1] = c return c end
function K.onUnload(f) K.cleanups[#K.cleanups + 1] = f end
--==========================================================================
-- Signal / Trove (Kicia's own small versions)
--==========================================================================
local Signal = {}
Signal.__index = Signal
function Signal.new() return setmetatable({ _handlers = {} }, Signal) end
function Signal:Connect(fn)
local h = { fn = fn, connected = true }
table.insert(self._handlers, h)
local sig = self
return {
Connected = true,
Disconnect = function(c)
if not h.connected then return end
h.connected = false
c.Connected = false
local i = table.find(sig._handlers, h)
if i then table.remove(sig._handlers, i) end
end,
}
end
function Signal:Once(fn)
local c
c = self:Connect(function(...) c:Disconnect() fn(...) end)
return c
end
function Signal:Fire(...)
local list = table.clone(self._handlers)
for _, h in ipairs(list) do
if h.connected then task.spawn(h.fn, ...) end
end
end
function Signal:FireSync(...)
for _, h in ipairs(table.clone(self._handlers)) do
if h.connected then h.fn(...) end
end
end
function Signal:Destroy() table.clear(self._handlers) end
K.Signal = Signal
local Trove = {}
Trove.__index = Trove
function Trove.new(name) return setmetatable({ _name = name, _items = {} }, Trove) end
local function cleanItem(o)
local t = typeof(o)
if t == "RBXScriptConnection" then o:Disconnect()
elseif t == "Instance" then pcall(function() o:Destroy() end)
elseif t == "thread" then pcall(task.cancel, o)
elseif type(o) == "function" then pcall(o)
elseif type(o) == "table" then
-- some objects (Kicia's signal connections) error on unknown fields
local function member(k)
local ok, v = pcall(function() return o[k] end)
return ok and type(v) == "function" and v or nil
end
local cancel, getStatus = member("cancel"), member("getStatus")
if cancel and getStatus then pcall(cancel, o) return end
local destroy = member("Destroy")
if destroy then pcall(destroy, o) return end
local disconnect = member("Disconnect")
if disconnect then pcall(disconnect, o) end
end
end
function Trove:Add(o) table.insert(self._items, o) return o end
function Trove:Connect(sig, fn) return self:Add(sig:Connect(fn)) end
function Trove:Extend() return self:Add(Trove.new(self._name)) end
function Trove:Remove(o, keep)
local i = table.find(self._items, o)
if i then
table.remove(self._items, i)
if not keep then cleanItem(o) end
end
end
-- Promise held until it settles; cancelled if the trove is cleaned first.
function Trove:AddPromise(promise)
if tostring(promise:getStatus()) == "Started" then
self:Add(promise)
promise:finally(function()
if not self._cleaning then self:Remove(promise, true) end
end)
end
return promise
end
-- Sub-trove that cleans itself up when `instance` is destroyed.
function Trove:AttachExtend(instance)
local sub = self:Extend()
sub:Connect(instance.Destroying, function() self:Remove(sub) end)
return sub
end
function Trove:Clean()
local items = self._items
self._items = {}
self._cleaning = true
for i = #items, 1, -1 do cleanItem(items[i]) end
self._cleaning = false
end
Trove.Destroy = Trove.Clean
K.Trove = Trove
--==========================================================================
-- Kicia's constant pool (v86[...]) as recovered from usage in the dump
--==========================================================================
local C = {
[3] = "Toggle", [9] = 20, [12] = 12, [18] = "0", [26] = 4, [34] = true, [44] = "Enabled",
[45] = 90, [48] = 2, [53] = 20, [55] = "Mode", [56] = 2, [62] = 0.1, [63] = 1, [68] = "table",
[75] = "None", [83] = 64, [91] = 100, [95] = "number", [101] = 0.5, [108] = 255, [116] = "boolean",
[118] = 16, [122] = 8, [126] = 0.15, [127] = "CFrame", [128] = "Frame", [133] = 10, [137] = 256,
[147] = 0.1, [149] = 1, [153] = false, [155] = 3, [160] = 50, [162] = 8, [165] = "string",
[170] = 9, [173] = 0.88, [175] = 5, [186] = 0, [192] = 30, [195] = 0.7,
}
K.C = C
--==========================================================================
-- Kicia's own UI, settings store and Combat menu (lifted from the dump)
--==========================================================================
local v86 = {
[2] = "ReactiveStore",
[3] = "Toggle",
[4] = "UIListLayout",
[5] = "BackgroundColor3",
[6] = 0,
[7] = 60,
[8] = 60,
[9] = 20,
[12] = 12,
[13] = 14,
[14] = "Settings",
[15] = 120,
[16] = "min",
[17] = 200,
[18] = "0",
[19] = 200,
[20] = "Vector3",
[21] = "Always",
[22] = "",
[23] = 1.4707963267948965,
[24] = "Roboto",
[25] = 24,
[26] = 4,
[27] = "Color",
[28] = 0.2,
[29] = "Size",
[30] = 0.35,
[31] = 29,
[32] = 24,
[33] = "Button",
[34] = true,
[35] = "ConfigManager",
[36] = "ApplyMigrations",
[37] = "TextBounds",
[38] = "DeleteFile",
[39] = "Slider",
[40] = "...",
[42] = "left",
[43] = "Proggy Clean",
[44] = "Enabled",
[45] = 90,
[46] = "UIGradient",
[47] = "CanvasGroup",
[48] = 0.3,
[49] = 2,
[50] = "Side",
[51] = " ",
[52] = "BottomRight",
[53] = 92,
[54] = 6,
[55] = "Mode",
[56] = 2,
[57] = "TextColor",
[58] = 80,
[59] = "Font",
[60] = 29,
[61] = 20,
[62] = 0.1,
[63] = 1,
[64] = "ScrollingFrame",
[65] = 200,
[66] = 0.5,
[67] = 100,
[68] = "table",
[69] = "Catalog unavailable",
[70] = "GradientDark",
[71] = 10,
[72] = 12,
[73] = "Keybind",
[74] = 0.9,
[75] = "None",
[76] = "LoadFromFile",
[77] = "FireServer",
[78] = 720,
[79] = 255,
[80] = "Text",
[81] = 1,
[82] = "Realize() can only be called on the root",
[83] = 64,
[84] = 0.5,
[85] = "UIStroke",
[87] = 0.8,
[88] = "TabHighlight",
[89] = "Loading",
[90] = "Gradient",
[91] = 100,
[92] = "TextButton",
[93] = "ColorSequence",
[94] = "Options",
[95] = "number",
[96] = "Unselected",
[97] = "Mode",
[98] = "UICorner",
[99] = "ExportToJson",
[100] = 14,
[101] = 0.5,
[102] = 231,
[103] = 52,
[104] = "Fonts",
[105] = 0.85,
[106] = "Menu Keybind",
[107] = 40,
[108] = 255,
[109] = 77,
[110] = 70,
[111] = "Fetching items...",
[112] = "Invisible",
[113] = "UIPadding",
[114] = "primary",
[115] = "Color3",
[116] = "boolean",
[118] = 16,
[119] = 159,
[120] = "Outline",
[121] = "ImageButton",
[122] = 8,
[123] = 19,
[124] = "X",
[125] = "Proggy Tiny",
[126] = 0.15,
[127] = "CFrame",
[128] = "Frame",
[129] = "Show Watermark",
[131] = "AbsoluteSize",
[132] = "Breathing",
[133] = 10,
[134] = "GradientTop",
[135] = "TextLabel",
[136] = "Unselected Text",
[137] = 256,
[138] = 0.85,
[139] = "Accent",