Addon
Addon
GG = {
Language = {
CheckboxEnabled = "Enabled",
CheckboxDisabled = "Disabled",
SliderValue = "Value",
DropdownSelect = "Select",
DropdownNone = "None",
DropdownSelected = "Selected",
ButtonClick = "Click",
TextboxEnter = "Enter",
ModuleEnabled = "Enabled",
ModuleDisabled = "Disabled",
TabGeneral = "General",
TabSettings = "Settings",
Loading = "Loading...",
Error = "Error",
Success = "Success"
}
}
function convertStringToTable(inputString)
local result = {}
for value in string.gmatch(inputString, "([^,]+)") do
local trimmedValue = value:match("^%s*(.-)%s*$")
table.insert(result, trimmedValue)
end
return result
end
function convertTableToString(inputTable)
return table.concat(inputTable, ", ")
end
-----------------------------------------------------------
-- AUTO PARRY AND SPAM SYSTEM INTEGRATION
-----------------------------------------------------------
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local Humanoid = Character:FindFirstChildOfClass("Humanoid")
local Workspace = game:GetService("Workspace")
local ServerStatsItem = game:GetService("Stats").Network.ServerStatsItem
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Aerodynamic = false
local Aerodynamic_Time = tick()
local Last_Input = UserInputService:GetLastInputType()
local Alive = workspace.Alive
local Vector2_Mouse_Location = nil
local Grab_Parry = nil
local pingBased = true
local Remotes = {}
local Parry_Key = nil
local Spamming = false
local SpamSpeed = 7
local InfinityD, TimeHoleD, SingularityD, SOFD, Abil, CDP, Phantom = false, false,
false, false, false, false, false
local EffectClasses = {ParticleEmitter=true, Beam=true, Trail=true, Explosion=true}
local Connections_Manager = {}
local Parried = false
local Last_Parry = 0
local NoRender = nil
local Xurr = (0.7 + (8 - 1) * (0.35 / 99))
local Closest_Entity = nil
local strafeEnabled, autoClaimRewards, CameraFOVEnabled = false, false, false
local StrafeSpeed, CameraFOV = 36, 70
local StarX = {}
StarX.FetchBalls = function()
local folder =
workspace:FindFirstChild(workspace.Alive:FindFirstChild(tostring(LocalPlayer)) and
"Balls" or "TrainingBalls")
if not folder then return {} end
local balls = {}
for _, ball in ipairs(folder:GetChildren()) do
if ball:GetAttribute("realBall") then
ball.CanCollide = false
balls[#balls + 1] = ball
end
end
return balls
end
StarX.FetchBall = function()
local folder =
workspace:FindFirstChild(workspace.Alive:FindFirstChild(tostring(LocalPlayer)) and
"Balls" or "TrainingBalls")
if not folder then return end
StarX.Parry_Data = function()
local cam, char = workspace.CurrentCamera, LocalPlayer.Character
if not cam then return {0, CFrame.new(), {}, {0, 0}} end
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then return {0, CFrame.new(), {}, {0, 0}} end
local events = {}
for _, v in ipairs(workspace.Alive:GetChildren()) do
local pp = v.PrimaryPart
if pp then events[tostring(v)] = cam:WorldToScreenPoint(pp.Position) end
end
local dirCF
if Selected_Parry_Type == "Straight" then
local closest, dist, mv = nil, math.huge, Vector2.new(mouse.X, mouse.Y)
for _, v in ipairs(workspace.Alive:GetChildren()) do
if v ~= char and v.PrimaryPart then
local pos, onScreen =
cam:WorldToScreenPoint(v.PrimaryPart.Position)
if onScreen then
local d = (mv - Vector2.new(pos.X, pos.Y)).Magnitude
if d < dist then dist, closest = d, v end
end
end
end
local target = closest or StarX.Get_Closest()
dirCF = CFrame.new(hrp.Position, (target and target.PrimaryPart and
target.PrimaryPart.Position) or (hrp.Position + look * 100))
else
local dirs = {
Custom = ccf,
Random = CFrame.new(cpos, Vector3.new(math.random(-3e3, 3e3),
math.random(-3e3, 3e3), math.random(-3e3, 3e3))),
Backwards = CFrame.new(cpos, cpos - look * 1e3),
Up = CFrame.new(cpos, cpos + up * 1e3),
Right = CFrame.new(cpos, cpos + right * 1e3),
Left = CFrame.new(cpos, cpos - right * 1e3)
}
dirCF = dirs[Selected_Parry_Type] or ccf
end
StarX.Parry = function()
local data = StarX.Parry_Data()
for r, a in pairs(Remotes) do
r:FireServer(a, Key, data[1], data[2], data[3], data[4])
end
if Parries > 7 then return false end
Parries = Parries + 1
task.delay(0.6, function() if Parries > 0 then Parries = Parries - 1 end end)
end
function StarX.Curved()
local b = StarX.FetchBall()
if not b or not b:FindFirstChild('zoomies') then return false end
table.insert(VelHist, v)
if #VelHist > 4 then table.remove(VelHist, 1) end
local rt = dist / s - ping / 985
local dT = 15 - math.min(dist / 1000, 15) + math.min(s / 100, 40)
if b:FindFirstChild("AeroDynamicSlashVFX") then
Debris:AddItem(b.AeroDynamicSlashVFX, 0)
Tornado_Time = tick()
end
local curve_time = s < 300 and rt / 1.2 or s < 450 and rt / 1.21 or s < 600 and
rt / 1.335 or rt / 1.5
if (tick() - LastCurve) < curve_time then return true end
if #VelHist == 4 then
local dv = function(i) return dir:Dot((d - VelHist[i].Unit).Unit) end
if dot - dv(1) < dth or dot - dv(2) < dth then return true end
end
StarX.Get_Closest = function()
local Max_Distance = math.huge
for _, Entity in pairs(workspace.Alive:GetChildren()) do
if (tostring(Entity) ~= tostring(LocalPlayer)) then
local Distance =
LocalPlayer:DistanceFromCharacter(Entity.PrimaryPart.Position)
if (Distance < Max_Distance) then
Max_Distance = Distance
Closest_Entity = Entity
end
end
end
return Closest_Entity
end
if old_March then
Debris:AddItem(old_March, 0)
end
local Library = {
_config = Config:load(game.GameId),
_choosing_keybind = false,
_device = nil,
_ui_open = true,
_ui_scale = 1,
_ui_loaded = false,
_ui = nil,
_dragging = false,
_drag_start = nil,
_container_position = nil
}
Library.__index = Library
function Library.new()
local self = setmetatable({
_loaded = false,
_tab = 0,
}, Library)
self:create_ui()
return self
end
-- Force the size to adjust after the text is fully loaded and wrapped
task.spawn(function()
wait(0.1)
local totalHeight = Title.TextBounds.Y + Body.TextBounds.Y + 10
InnerFrame.Size = UDim2.new(1, 0, 0, totalHeight)
end)
-- Tween Out the Notification (inner frame) to the right side of the screen
local tweenOut = TweenService:Create(InnerFrame, TweenInfo.new(0.5,
Enum.EasingStyle.Quint, Enum.EasingDirection.In), {
Position = UDim2.new(1, 310, 0, 10 +
NotificationContainer.Size.Y.Offset)
})
tweenOut:Play()
function Library:get_screen_scale()
local viewport_size_x = workspace.CurrentCamera.ViewportSize.X
self._ui_scale = viewport_size_x / 1400
end
function Library:get_device()
local device = 'Unknown'
if not UserInputService.TouchEnabled and UserInputService.KeyboardEnabled and
UserInputService.MouseEnabled then
device = 'PC'
elseif UserInputService.TouchEnabled then
device = 'Mobile'
elseif UserInputService.GamepadEnabled then
device = 'Console'
end
self._device = device
end
function Library:create_ui()
local old_March = CoreGui:FindFirstChild('March')
if old_March then
Debris:AddItem(old_March, 0)
end
self._ui = March
Connections['container_input_ended'] = input.Changed:Connect(function()
if input.UserInputState ~= Enum.UserInputState.End then
return
end
Connections:disconnect('container_input_ended')
self._dragging = false
end)
end
end
Connections['container_input_began'] = Container.InputBegan:Connect(on_drag)
Connections['input_changed'] = UserInputService.InputChanged:Connect(drag)
self:removed(function()
self._ui = nil
Connections:disconnect_all()
end)
function self:Update1Run(a)
if a == "nil" then
Container.BackgroundTransparency = 0.05000000074505806;
else
pcall(function()
Container.BackgroundTransparency = tonumber(a);
end);
end;
end;
function self:UIVisiblity()
March.Enabled = not March.Enabled;
end;
function self:load()
local content = {}
for _, object in March:GetDescendants() do
if not object:IsA('ImageLabel') then
continue
end
table.insert(content, object)
end
ContentProvider:PreloadAsync(content)
self:get_device()
self._tab += 1
if first_tab then
self:update_tabs(Tab, LeftSection, RightSection)
self:update_sections(LeftSection, RightSection)
end
Tab.MouseButton1Click:Connect(function()
self:update_tabs(Tab, LeftSection, RightSection)
self:update_sections(LeftSection, RightSection)
end)
function ModuleManager:connect_keybind()
if not Library._config._keybinds[settings.flag] then
return
end
Connections[settings.flag..'_keybind'] =
UserInputService.InputBegan:Connect(function(input: InputObject, process: boolean)
if process then
return
end
if tostring(input.KeyCode) ~=
Library._config._keybinds[settings.flag] then
return
end
self:change_state(not self._state)
end)
end
if Library._config._keybinds[settings.flag] then
local keybind_string =
string.gsub(tostring(Library._config._keybinds[settings.flag]), 'Enum.KeyCode.',
'')
TextLabel.Text = keybind_string
ModuleManager:connect_keybind()
ModuleManager:scale_keybind()
end
Connections[settings.flag..'_input_began'] =
Header.InputBegan:Connect(function(input: InputObject)
if Library._choosing_keybind then
return
end
if input.UserInputType ~= Enum.UserInputType.MouseButton3 then
return
end
Library._choosing_keybind = true
Connections['keybind_choose_start'] =
UserInputService.InputBegan:Connect(function(input: InputObject, process: boolean)
if process then
return
end
if input == Enum.UserInputState or input == Enum.UserInputType then
return
end
if input.KeyCode == Enum.KeyCode.Unknown then
return
end
if input.KeyCode == Enum.KeyCode.Backspace then
ModuleManager:scale_keybind(true)
Library._config._keybinds[settings.flag] = nil
Config:save(game.GameId, Library._config)
TextLabel.Text = 'None'
if Connections[settings.flag..'_keybind'] then
Connections[settings.flag..'_keybind']:Disconnect()
Connections[settings.flag..'_keybind'] = nil
end
Connections['keybind_choose_start']:Disconnect()
Connections['keybind_choose_start'] = nil
Library._choosing_keybind = false
return
end
Connections['keybind_choose_start']:Disconnect()
Connections['keybind_choose_start'] = nil
Library._config._keybinds[settings.flag] = tostring(input.KeyCode)
Config:save(game.GameId, Library._config)
if Connections[settings.flag..'_keybind'] then
Connections[settings.flag..'_keybind']:Disconnect()
Connections[settings.flag..'_keybind'] = nil
end
ModuleManager:connect_keybind()
ModuleManager:scale_keybind()
Library._choosing_keybind = false
local keybind_string =
string.gsub(tostring(Library._config._keybinds[settings.flag]), 'Enum.KeyCode.',
'')
TextLabel.Text = keybind_string
end)
end)
Header.MouseButton1Click:Connect(function()
ModuleManager:change_state(not ModuleManager._state)
end)
Connections['library_visiblity'] =
UserInputService.InputBegan:Connect(function(input: InputObject, process: boolean)
if input.KeyCode ~= Enum.KeyCode.Insert then
return
end
self._ui_open = not self._ui_open
self:change_visiblity(self._ui_open)
end)
self._ui.Container.Handler.Minimize.MouseButton1Click:Connect(function()
self._ui_open = not self._ui_open
self:change_visiblity(self._ui_open)
end)
return self
end
-- Main execution
local main = Library.new()
local combatTab = main:create_tab('Combat', 'rbxassetid://76499042599127')
local t = tick()
repeat RunService.PreSimulation:Wait() until tick() - t >= 1 or
not Parried
Parried = false
end
end)
Library.SendNotification({
title = "Auto Parry",
text = "Auto Parry has been enabled!",
duration = 3
})
else
if Connections_Manager['Auto Parry'] then
Connections_Manager['Auto Parry']:Disconnect()
Connections_Manager['Auto Parry'] = nil
Library.SendNotification({
title = "Auto Parry",
text = "Auto Parry has been disabled!",
duration = 3
})
end
end
end
})
-- Load the UI
main:load()
-- Initial notification
Library.SendNotification({
title = "ikorz Auto Parry",
text = "Script loaded successfully with full auto parry and auto spam system!",
duration = 5
})