Skip to content
RoRoScripts
Black Knife preview
UnknownUniversal

Black Knife

Script
Views
239
Likes
0
Dislikes
0
Added
Script
plr = game.Players.LocalPlayer
char = plr.Character
hum = char.Humanoid
hrp = char.HumanoidRootPart

rs = game.RunService

ToolEnabled = true
ToolUsing = false
Grab = false
GrabConnections = {}
GrabCharacters = {}
bullshitvariable = false
Grabbed = false

function checknotr15()
    return hum.RigType ~= Enum.HumanoidRigType.R15
end

if not checknotr15() then
    msg = Instance.new("Hint", workspace)
    msg.Text = "you're not r6"
    game.Debris:AddItem(msg, 2)
    return
end

Mesh = "http://www.roblox.com/asset/?id=11442510"
Texture = "http://www.roblox.com/asset/?id=11442524"

NpcKill = "https://github.com/InnocentViru/Black-Knife/raw/refs/heads/main/Thorn%20Ring%20(ominous_stab_harsh.ogg)%20-%20DELTARUNE%20Chapters%203+4%20OST%20-%20Aventuras%20Demais%20(youtube).mp3"

Slash = "rbxassetid://4958430453"
Impale = "rbxassetid://5754301788"
Bleed = "rbxassetid://71884701777530"

if not isfile("ThornRing.mp3") then
    writefile("ThornRing.mp3", game:HttpGet(NpcKill))
end

anims = {
    [1] = "rbxassetid://74897796",
    [2] = "rbxassetid://54432537",
    [3] = "rbxassetid://203876950",
    [4] = "rbxassetid://186934910",
    [5] = "rbxassetid://203875401"
}

pcall(function()
    plr.Backpack["Black Knife"]:Destroy()
end)
pcall(function()
    getgenv().roaringknight:Disconnect()
end)

plr.ReplicationFocus = workspace
getgenv().roaringknight = rs.Heartbeat:Connect(function()
    sethiddenproperty(plr, "MaximumSimulationRadius", math.huge)
    sethiddenproperty(plr, "SimulationRadius", math.huge)
end)

Tool = Instance.new("Tool", plr.Backpack)
Tool.ToolTip = "niche reference"
Tool.Name = "Black Knife"
Tool.Grip = CFrame.new(0, 0, -2) * CFrame.Angles(math.rad(90), math.rad(90), 0)

Handle = Instance.new("Part", Tool)
Handle.Name = "Handle"
Handle.Size = Vector3.new(1, 0.6, 6)
Handle.CanTouch = false

Highlight = Instance.new("Highlight", Handle)
Highlight.FillTransparency = 0
Highlight.FillColor = Color3.new(0,0,0)
Highlight.DepthMode = "Occluded"

ImpaleAtt = Instance.new("Attachment", Handle)
ImpaleAtt.Position = Vector3.new(0, 0, Handle.Size.Z / 3)
ImpaleAtt.CFrame = ImpaleAtt.CFrame * CFrame.Angles(math.rad(90), 0, 0)

SpecialMesh = Instance.new("SpecialMesh", Handle)
SpecialMesh.MeshId = Mesh
SpecialMesh.VertexColor = Vector3.new(0,0,0)
SpecialMesh.TextureId = Texture
SpecialMesh.Scale = Vector3.new(2.2,2.2,2.2)

vfx = Instance.new("ParticleEmitter", Handle)
vfx.Rate = 500
vfx.Speed = NumberRange.new(0,0)
vfx.Brightness = 10
vfx.Lifetime = NumberRange.new(.5, .5)
vfx.Color = ColorSequence.new(Color3.new(0,0,0))
vfx.Size = NumberSequence.new({
    NumberSequenceKeypoint.new(0, 0),
    NumberSequenceKeypoint.new(0.5, 1.2),
    NumberSequenceKeypoint.new(1, 0),
})
vfx.Transparency = NumberSequence.new({
    NumberSequenceKeypoint.new(0, 1),
    NumberSequenceKeypoint.new(0.5, 0),
    NumberSequenceKeypoint.new(1, 1),
})
vfx.Rotation = NumberRange.new(-360, 360)

att1 = Instance.new("Attachment", Handle)
att2 = Instance.new("Attachment", Handle)
att1.Position = Vector3.new(0, 0, Handle.Size.Z / 1.75)
att2.Position = Vector3.new(0, 0, -(Handle.Size.Z / 4))

trail = Instance.new("Trail", Handle)
trail.Attachment0 = att1
trail.Attachment1 = att2
trail.Lifetime = .35
trail.Enabled = false
trail.Color = ColorSequence.new(Color3.new(0,0,0))
trail.Transparency = NumberSequence.new({
    NumberSequenceKeypoint.new(0, 0),    
    NumberSequenceKeypoint.new(1, 1),
})

pcall(function() gethui()["Grab_Ability"]:Destroy() end)

ScreenGui = Instance.new("ScreenGui", gethui())
ScreenGui.Name = "Grab_Ability"
TextButton = Instance.new("TextButton", ScreenGui)
UIAspectRatioConstraint = Instance.new("UIAspectRatioConstraint", TextButton)
UIStroke = Instance.new("UIStroke", TextButton)

TextButton.Text = "Impale (Grab)"
TextButton.Size = UDim2.fromScale(.12, .12)
TextButton.AnchorPoint = Vector2.new(.5,.5)
TextButton.Position = UDim2.fromScale(.8, .5)
TextButton.Font = "Arcade"
TextButton.TextScaled = true
TextButton.TextColor3 = Color3.new(1,1,1)
TextButton.BackgroundColor3 = Color3.new(0,0,0)

UIStroke.Thickness = 3
UIStroke.ApplyStrokeMode = "Border"
UIStroke.Color = Color3.new(1,1,1)

function playanim(booleangrab)
    local random = anims[math.random(1, #anims)]
    local anim = Instance.new("Animation")
    anim.AnimationId = random
    local tr = hum:LoadAnimation(anim)
    tr:Play(0, 5, booleangrab and 1.5 or 1)
    tr.Ended:Wait()
end

function blood(phrp)
    for i = 1, 12 do
        local p = Instance.new("Part", workspace)
        p.Name = "blood" .. i
        p.Material = "Neon"
        p.Color = Color3.new(1,0,0)
        p.CFrame = phrp.CFrame
        p.Size = Vector3.one
        p.RotVelocity = Vector3.new(20,20,20)
        p.Velocity = Vector3.new(math.random(-100, 100), math.random(-200, 200), math.random(-100, 100))

        local at = Instance.new("Attachment", p)
        local at2 = Instance.new("Attachment", p)
        at.Position = Vector3.new(0, p.Size.Y / 2, 0)
        at2.Position = Vector3.new(0, -(p.Size.Y / 2), 0)
        local tra = Instance.new("Trail", p)
        tra.Attachment0 = at
        tra.Attachment1 = at2
        tra.Brightness = 10
        tra.WidthScale = NumberSequence.new({
            NumberSequenceKeypoint.new(0, 1),    
            NumberSequenceKeypoint.new(1, 0),
        })
        tra.Color = ColorSequence.new(Color3.new(1,0,0))
        tra.Lifetime = 1.5
        tra.FaceCamera = true
        game.Debris:AddItem(p,6)
    end
end

function bleedsfx(p)
    local sound = Instance.new("Sound", p)
    sound.SoundId = Bleed
    sound.Volume = 5
    sound.PlayOnRemove = true
    sound:Destroy()
    sound = nil
end

function bleed(phrp, phum)
    for i = 1, 30 do
        if not phum or not phum.Parent or phum.Health <= 0 then break end
        local p = Instance.new("Part", workspace)
        p.Name = "blood" .. i
        p.Material = "Neon"
        p.Color = Color3.new(1,0,0)
        p.CFrame = phrp.CFrame * CFrame.new(0,0,-.5)
        p.Size = Vector3.new(.5,.5,.5)
        p.RotVelocity = Vector3.new(20,20,20)
        p.Velocity = Vector3.new(0, 10, 0)
        bleedsfx(p)

        local at = Instance.new("Attachment", p)
        local at2 = Instance.new("Attachment", p)
        at.Position = Vector3.new(0, p.Size.Y / 2, 0)
        at2.Position = Vector3.new(0, -(p.Size.Y / 2), 0)
        local tra = Instance.new("Trail", p)
        tra.Attachment0 = at
        tra.Attachment1 = at2
        tra.Brightness = 10
        tra.WidthScale = NumberSequence.new({
            NumberSequenceKeypoint.new(0, 1),    
            NumberSequenceKeypoint.new(1, 0),
        })
        tra.Color = ColorSequence.new(Color3.new(1,0,0))
        tra.Lifetime = 1.5
        tra.FaceCamera = true
        game.Debris:AddItem(p,6)
        task.wait(.1)
    end
end

function killsfx(p)
    local sound = Instance.new("Sound", p)
    sound.SoundId = getcustomasset("ThornRing.mp3")
    sound.Volume = 5
    sound.PlayOnRemove = true
    sound:Destroy()
    sound = nil
end

function killnpc(character)
    local h = character:FindFirstChild("Humanoid")
    local p = character:FindFirstChild("HumanoidRootPart")
    if h and p and not game.Players:GetPlayerFromCharacter(character) 
    and p.ReceiveAge == 0 and h.Health > 0 then
        if not Grab then
            h:TakeDamage(9e9)
            h:ChangeState("Died")
            h.Health = -1
            blood(p)
            killsfx(p)
        end
    end
end

function impalesfx()
    local sound = Instance.new("Sound", Handle)
    sound.SoundId = Impale
    sound.Volume = 5
    sound.PlayOnRemove = true
    sound:Destroy()
    sound = nil
end

function grabnpc(character)
    local h = character:FindFirstChild("Humanoid")
    local p = character:FindFirstChild("HumanoidRootPart")
    local success = false

    if h and p and not game.Players:GetPlayerFromCharacter(character) 
    and p.ReceiveAge == 0 and h.Health > 0 and not GrabCharacters[1] 
    and not GrabConnections[1] then
        GrabCharacters[1] = character
        success = true
        Grabbed = true
        task.spawn(bleed, p, h)
        impalesfx()
        GrabConnections[1] = rs.Heartbeat:Connect(function()
            if Tool.Parent == char and p.ReceiveAge == 0 then
                p.CFrame = CFrame.new(ImpaleAtt.WorldPosition) * CFrame.Angles(math.rad(90), 0, 0)
                p.Velocity = Vector3.zero
            end
        end)
    end

    return success
end

function grab(character)
    local success = grabnpc(character)
    if success and Grab then
        local start = tick()        
        repeat task.wait() until tick() - start > 10 or not Grab or bullshitvariable
        GrabConnections[1]:Disconnect()
        GrabCharacters[1] = nil
        table.clear(GrabCharacters)
        table.clear(GrabConnections)    
        Grabbed = false
    end
end

function slash(booleangrab)
    local sound = Instance.new("Sound", Handle)
    sound.SoundId = Slash
    sound.Volume = 5
    sound.PlayOnRemove = true
    sound.Pitch = booleangrab and 1 or .8

    Instance.new("ReverbSoundEffect", sound).DecayTime = 2.5
    sound:Destroy()
    sound = nil
end

Handle.Touched:Connect(function(p)    
    local character = p:FindFirstAncestorOfClass("Model")
    if character and character ~= char then
        if not Grab then 
            killnpc(character)
        else 
            grab(character)
        end
    end
end)

db = false
db2 = false

Tool.Activated:Connect(function()
    if db or db2 or not ToolEnabled or Grab then return end
    db = true     
    trail.Enabled = true
    Handle.CanTouch = true
    slash(true)
    ToolUsing = true

    playanim(true)
    delay(.2, function() db = false ToolUsing = false end)

    Handle.CanTouch = false
    trail.Enabled = false
end)


TextButton.MouseButton1Click:Connect(function()
    if GrabConnections[1] then        
        bullshitvariable = true
        return
    end
    if not db2 and not ToolUsing and not GrabConnections[1] 
    and Tool.Parent == char then
        db2 = true        
        ToolEnabled = false

        Grab = true        
        Handle.CanTouch = true
        bullshitvariable = false
        trail.Enabled = true

        slash(false)        
        playanim(false)
        Handle.CanTouch = false         
        trail.Enabled = false

        local r = tick()
        spawn(function()
            repeat task.wait() until tick() - r > (Grabbed and 10 or 1) or bullshitvariable 
            if bullshitvariable then
                task.wait(.8)
                db2 = false             
                Grab = false
                ToolEnabled = true
            else
                db2 = false             
                Grab = false
                ToolEnabled = true
            end
        end)
    end
end)

connection = hum.Died:Connect(function()
    connection:Disconnect() connection = nil
    getgenv().roaringknight:Disconnect() getgenv().roaringknight = nil
    pcall(function() Tool:Destroy() end)
    plr.ReplicationFocus = nil
    ScreenGui:Destroy() ScreenGui = nil
end)

msg = Instance.new("Message", workspace)
msg.Text = "executed, made by VirusSX"
game.Debris:AddItem(msg, 4)
setclipboard("https://discord.gg/5xEktGhuDF")

Features

  • Kills npcs with style i guess, made by me a while ago
Black Knife · RoScripts