Description
Stellar is a 1.8 PVP club keyless script mainly focused for PvP. It supports Solara and has lots of settings to fit your need. Features: AutoSprint Killaura AntiKB Speed
GAME⚔️1.8 PVP Club
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop & Mobile
Script source Luau
--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
pcall(function()
loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ac740f78fe5a7b664a4ef7b"))()
end)
end)
--[[rscripts:analytics:end]]
--[[
Stellar
A dominant -- combat focused 1.8 PVP Club script
by @.__stav
]]
local cloneref = cloneref or function(obj)
return obj
end
local ReplicatedStorage = cloneref(game:GetService('ReplicatedStorage'))
local UserInputService = cloneref(game:GetService('UserInputService'))
local HttpService = cloneref(game:GetService('HttpService'))
local RunService = cloneref(game:GetService('RunService'))
local GuiService = cloneref(game:GetService('GuiService'))
local Players = cloneref(game:GetService('Players'))
local lplr = Players.LocalPlayer
local Raycast = loadstring(game:HttpGet('https://gitlab.com/stxvv/koolrewrite/-/raw/master/libraries/Raycast.lua?ref_type=heads'))()
local function isAlive(plr)
plr = plr or lplr
local obj
if plr:IsA('Model') then
obj = {
Character = plr
}
else
obj = plr
end
return (obj.Character and obj.Character:FindFirstChild('Humanoid') and obj.Character.Humanoid.Health > 0) and true or false
end
local function getClosestEntity(range, angle, wallcheck)
local minrnge, entity = range, nil
for _, v in Players:GetPlayers() do
if isAlive(v) and v ~= lplr then
if wallcheck and not Raycast:CanSee(v.Character:WaitForChild('HumanoidRootPart', 2)) then continue end
local plrDir = math.deg(lplr.Character:WaitForChild('HumanoidRootPart', 2).CFrame.LookVector:Angle((v.Character:WaitForChild('HumanoidRootPart', 2).Position - lplr.Character:WaitForChild('HumanoidRootPart', 2).Position).Unit))
if plrDir > angle / 2 then continue end
local dist = (v.Character:WaitForChild('HumanoidRootPart', 2).Position - lplr.Character:WaitForChild('HumanoidRootPart', 2).Position).Magnitude
if dist < minrnge then
minrnge = dist
entity = v
end
end
end
return entity
end
local function getTool(plr)
plr = plr or lplr
if isAlive(plr) then
return plr.Character and plr.Character:FindFirstChildOfClass('Tool') or nil
end
return nil
end
--[[
Emulation
]]
local function decompile(scriptPath: ModuleScript | LocalScript): string
local sucByte, bytecode = pcall(getscriptbytecode, scriptPath)
if not sucByte then
return `-- Failed to get script bytecode, error:\n\n--[[\n{bytecode}\n--]]`
end
local okRequest: boolean, httpResult = pcall(request, {
Url = 'https://api.lua.expert/decompile',
Method = 'POST',
Body = HttpService:JSONEncode({
script = base64encode(bytecode),
}),
Headers = {
['Content-Type'] = 'application/json'
},
})
if not okRequest then
return `-- Failed to decompile, error:\n\n--[[\n{httpResult}\n--]]`
end
if httpResult.StatusCode ~= 200 then
return `-- Error occurred while requesting the API, error:\n\n--[[\n{httpResult.Body}\n--]]`
end
return string.gsub(httpResult.Body, string.char(0x00CD), ' ')
end
local req, fakereq = require, nil
local function require(obj)
local exec = select(1, identifyexecutor())
if not require or table.find({'Solara', 'Xeno'}, exec) then
local source = decompile(obj)
local func = loadstring(source)
if getfenv then
getfenv(func).require = fakereq
getfenv(func).script = obj
end
local suc, res = pcall(function()
return func()
end)
if suc and res ~= nil then
return res
else
return error('Requested module experienced an error while loading')
end
end
return req(obj)
end
fakereq = require
local ControllerInput = {
IsBlocked = function()
local MenuIsOpen
if lplr:GetAttribute('DuelMenuOpen') or lplr:GetAttribute('DuelFrozen') or lplr:GetAttribute('SettingsOpen') then
MenuIsOpen = true
else
MenuIsOpen = GuiService.MenuIsOpen
if not MenuIsOpen then
if not UserInputService:GetFocusedTextBox() then
if lplr:GetAttribute('UpgradeShopOpen') or lplr:GetAttribute('RobuxShopOpen') or lplr:GetAttribute('CosmeticsOpen') or lplr:GetAttribute('CosmeticCrateOpen') then
MenuIsOpen = true
else
MenuIsOpen = lplr:GetAttribute('DailyRewardsOpen') == true
end
else
MenuIsOpen = true
end
end
end
return MenuIsOpen
end
}
local Dependencies = {
Geometry = require(ReplicatedStorage.MinecraftMeleeGeometry),
HitVisuals = require(ReplicatedStorage.MeleeHitVisuals),
isBlocked = ControllerInput.IsBlocked,
vmSwing = -10
}
do
local restP, unstableSince, lastClone, parts = nil, nil, nil, {}
pcall(function()
RunService:UnbindFromRenderStep('Swing')
end)
local function getViewmodel()
if not isAlive(lplr) then return end
if not workspace.CurrentCamera:FindFirstChild('MinecraftSwordViewmodel') or not workspace.CurrentCamera:FindFirstChild('MinecraftSwordViewmodel'):FindFirstChild('Sword') then return end
if not lplr.PlayerGui:FindFirstChild('FixedFovHeldItems'):FindFirstChildOfClass('ViewportFrame'):FindFirstChild('Sword') then return end
return workspace.CurrentCamera, workspace.CurrentCamera:FindFirstChild('MinecraftSwordViewmodel'):FindFirstChild('Sword'), lplr.PlayerGui:FindFirstChild('FixedFovHeldItems'):FindFirstChildOfClass('ViewportFrame'):FindFirstChild('Sword')
end
local function swingQ(p, e)
local t = math.clamp(e / 0.3, 0, 1)
local s2, s3, s4, s5 = math.sin(t * t * math.pi), math.sin(math.sqrt(t) * math.pi), math.sin(math.sqrt(t) * math.pi * 2), math.sin(t * math.pi)
local off, yaw, v6 = Vector3.new(-s3 * 0.4, s4 * 0.2, -s5 * 0.2), CFrame.Angles(0, 0.7853981633974483, 0), CFrame.Angles(0, math.rad(s2 * -20), 0) * CFrame.Angles(0, 0, math.rad(s3 * -20)) * CFrame.Angles(math.rad(s3 * -80), 0, 0)
return CFrame.new(p + off) * yaw * v6 * yaw:Inverse() * CFrame.new(-p)
end
RunService:BindToRenderStep('Swing', Enum.RenderPriority.Last.Value + 101, function()
local cam, orig, clone = getViewmodel()
if not cam then return end
local k, ls = 0.7002075382097097 / math.tan(math.rad(cam.FieldOfView) * 0.5), cam.CFrame:ToObjectSpace(orig:GetPivot())
local lp = Vector3.new(ls.X, ls.Y, ls.Z / k)
if not restP then
restP = lp
unstableSince = nil
elseif (lp - restP).Magnitude < 0.03 then
restP = lp
unstableSince = nil
else
if not unstableSince then
unstableSince = os.clock() + 1.2
end
if not (os.clock() >= unstableSince) then
return
end
restP = lp
unstableSince = nil
end
local e = os.clock() - Dependencies.vmSwing
if e < 0 or e > 0.3 then return end
local Q = swingQ(restP, e)
if clone ~= lastClone then
lastClone = clone
table.clear(parts)
for _, v in ipairs(clone:GetDescendants()) do
if v:IsA('BasePart') then
table.insert(parts, v)
end
end
end
for _, v in ipairs(parts) do
if v.Parent then
v.CFrame = Q * v.CFrame
end
end
end)
end
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/gen2'))()
local Window = Rayfield:CreateWindow({
name = 'Stellar',
subtitle = 'A PVP client for 1.8 PVP Club.',
sidebarLayout = true,
showName = 'Stellar 1.0.0',
configuration = {
autoSave = true,
autoLoad = true,
fileName = 'Stellar',
}
})
local Tabs = {
Combat = Window:CreateTab({name = 'Combat'}),
Movement = Window:CreateTab({name = 'Movement'}),
Interface = Window:CreateTab({name = 'Interface'})
}
--[[
Combat
]]
do
Tabs.Combat:CreateSection({name = 'Sprint'})
Tabs.Combat:CreateToggle({
name = 'AutoSprint',
description = 'Automatically sprints for you.',
flag = 'sprint',
value = false,
callback = function(callback)
if callback then
repeat
ReplicatedStorage.MinecraftCombat.Sprint:FireServer(true)
task.wait()
until Window.unloaded or not Window:Get('sprint')
else
ReplicatedStorage.MinecraftCombat.Sprint:FireServer(false)
end
end
})
end
do
if not shared.seq then
shared.seq = 0
end
local lastSwing, lastAttack = 0, 0
local function getKillauraValues(range, angle, wallcheck) -- haha very funny gpt moment (it's not, i can assure :/)
if not isAlive(lplr.Character) then return end
if Dependencies.isBlocked() then return end
if lplr.Character:GetAttribute('EatingApple') or lplr.Character:GetAttribute('BowDrawStarted') then return end
local entity = getClosestEntity(range, angle, wallcheck)
if not entity then return end
local eye = Dependencies.Geometry.Eye(lplr.Character.PrimaryPart.Position, lplr.Character:GetAttribute('Sneaking'))
local dir = CFrame.lookAt(lplr.Character.PrimaryPart.Position, entity.Character.PrimaryPart.Position).LookVector
local dist, part = Dependencies.Geometry.Hit(eye, dir, entity.Character.PrimaryPart.Position, entity.Character:GetAttribute('Sneaking'), range)
if not dist then return end
return {char = entity.Character, root = entity.Character.PrimaryPart, dist = dist, part = part, eye = eye, dir = dir}
end
Tabs.Combat:CreateSection({name = 'Killaura'})
Tabs.Combat:CreateToggle({
name = 'Killaura',
description = 'Automatically attacks players around you.',
flag = 'killaura',
value = false,
callback = function(callback)
if callback then
repeat task.wait() until (Window:Get('killaura_range') and Window:Get('killaura_angle') and Window:Get('killaura_itemcheck') and Window:Get('killaura_wallcheck') and Window:Get('killaura_swing') and Window:Get('killaura_attackinterval')) ~= nil
repeat
task.wait()
if isAlive(lplr) then
local item = getTool(lplr)
if Window:Get('killaura_itemcheck') and item and item.Name ~= 'Diamond Sword' then continue end
local entity = getKillauraValues(Window:Get('killaura_range'), Window:Get('killaura_angle'), Window:Get('killaura_wallcheck'))
if entity then
if workspace.SkySpawn.CourtyardArchitecture['Arena red wool floor edge'].Position.Y <= lplr.Character.PrimaryPart.Position.Y then continue end
if Window:Get('killaura_swing') and os.clock() >= lastSwing then
Dependencies.vmSwing = os.clock()
lastSwing = os.clock() + math.max(0.15, Window:Get('killaura_attackinterval'))
lplr.Character:SetAttribute('LocalAttackSwing', os.clock())
end
if Window:Get('killaura_attackinterval') and os.clock() >= lastAttack then
lastAttack = os.clock() + Window:Get('killaura_attackinterval')
shared.seq += 1
local payload = {
version = 2,
character = lplr.Character,
seq = shared.seq,
sentAt = workspace:GetServerTimeNow(),
eye = entity.eye,
targetRoot = entity.root.Position,
hitPart = entity.part,
}
Dependencies.HitVisuals.Predict(entity.char)
ReplicatedStorage.MinecraftCombat.Attack:FireServer(entity.char, entity.eye + entity.dir * entity.dist, entity.dir, nil, payload)
end
end
end
until Window.unloaded or not Window:Get('killaura')
end
end
})
Tabs.Combat:CreateSlider({
name = 'Attack Interval',
description = 'Seconds between attacks.',
range = {0.05, 1},
increment = 0.01,
value = 0.05,
flag = 'killaura_attackinterval'
})
Tabs.Combat:CreateSlider({
name = 'Range',
range = {1, 11.25},
increment = 0.01,
value = 11.25,
flag = 'killaura_range'
})
Tabs.Combat:CreateToggle({
name = 'Item Check',
description = 'Automatically checks to see if you are holding the correct item.',
flag = 'killaura_itemcheck'
})
Tabs.Combat:CreateToggle({
name = 'Wall check',
description = 'Automatically checks to see if the person is in your line of sight.',
flag = 'killaura_wallcheck'
})
Tabs.Combat:CreateSlider({
name = 'Angle',
range = {1, 360},
increment = 1,
value = 360,
suffix = '°',
flag = 'killaura_angle'
})
Tabs.Combat:CreateToggle({
name = 'Swing',
description = 'Automatically plays the swing animation.',
flag = 'killaura_swing'
})
end
do
Tabs.Combat:CreateSection({name = 'Knockback'})
Tabs.Combat:CreateToggle({
Name = 'AntiKB',
description = 'Allows for you to have no knockback at all',
flag = 'velocity',
callback = function(callback)
if callback then
if not isfile('antikbtrust.txt') then
Window:Popup({
title = 'Toggle AntiKB?',
content = 'This clears all connections relating to knockback, and allows for better hits. You have a risk of detection/being caught by the moderators. You can\'t revert back.',
options = {
{text = 'Cancel', callback = function() Window:Set('velocity', false) end},
{text = 'Continue', style = 'danger', callback = function()
if ReplicatedStorage:FindFirstChild('MinecraftKnockbackMotion') then
writefile('antikbtrust.txt', '')
ReplicatedStorage.MinecraftKnockbackMotion:Destroy()
else
Window:Notify({
title = 'Failed to enable Velocity',
content = 'Connection must\'ve been destroyed already.',
duration = 5,
})
end
end}
}
})
end
else
if not Window.unloaded and isfile('antikbtrust.txt') then delfile('antikbtrust.txt') end
end
end
})
end
--[[
Movement
]]
do
local speedConn
local rayParams = RaycastParams.new()
Tabs.Movement:CreateSection({name = 'Speed'})
Tabs.Movement:CreateToggle({
name = 'Speed',
description = 'Increases your movement speed.',
flag = 'speed',
value = false,
callback = function(callback)
if callback then
repeat task.wait() until Window:Get('speed_value') ~= nil
speedConn = RunService.PreSimulation:Connect(function(dt) -- https://github.com/7GrandDadPGN/VapeV4ForRoblox/blob/main/src/games/universal%20-%20base/base.lua (SpeedMethods - CFrame)
if Window.unloaded and speedConn then
speedConn:Disconnect()
speedConn = nil
end
if isAlive(lplr) and lplr.Character:FindFirstChild('HumanoidRootPart') and not Window.unloaded then
local root = lplr.Character:WaitForChild('HumanoidRootPart', 2)
local dest = (lplr.Character.Humanoid.MoveDirection * math.max(((not Window.unloaded and Window:Get('speed_value')) or 1) - lplr.Character.Humanoid.WalkSpeed, 0) * dt)
rayParams.FilterDescendantsInstances = {lplr.Character, workspace.CurrentCamera}
rayParams.CollisionGroup = root.CollisionGroup
local ray = workspace:Raycast(root.Position, dest, rayParams)
if ray then
dest = (ray.Position + ray.Normal) - root.Position
end
root.CFrame += dest
end
end)
else
if speedConn then
speedConn:Disconnect()
speedConn = nil
end
end
end
})
Tabs.Movement:CreateSlider({
name = 'Value',
range = {1, 32},
increment = 0.1,
value = 32,
flag = 'speed_value'
})
end
--[[
Interface
]]
do
Tabs.Interface:CreateSection({name = 'Theming'})
local Themes = {
Default = 'default',
Cobalt = 'cobalt',
Ember = 'ember',
Amethyst = 'amethyst',
Frost = 'frost',
Rose = 'rose'
}
Tabs.Interface:CreateDropdown({
Name = 'Interface Theme',
multiSelect = false,
options = {'Default', 'Cobalt', 'Ember', 'Amethyst', 'Frost', 'Rose'},
value = 'Default',
callback = function(callback)
Window:ChangeTheme(Themes[callback])
end
})
end
do
Tabs.Interface:CreateSection({name = 'Unload'})
Tabs.Interface:CreateButton({
name = 'Unload',
description = 'Automatically unloads Stellar. Useful if a moderator joins your server.',
callback = function()
pcall(function()
RunService:UnbindFromRenderStep('Swing')
end)
Window:Unload()
end
})
endReview the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place