Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
2

How to detect if a player kills another player?

Asked by 2 years ago

Hello. I am trying to detect if a player kills another player in a script. Once I know they have gotten a kill, it will increase a NumberValue.

3 answers

Log in to vote
0
Answered by 2 years ago

Hello! I actually have no idea, but luckily a while back Roblox created a KOs and WOs leaderboard, so you can use that.

Sorry for no real answer, but I'm sure someone else can comment. Please don't accept this as the answer, as it isn't deserving of that. Here is the link to the model.

Ad
Log in to vote
0
Answered by 2 years ago

You'll probably have to check if Humanoid.Health == 0 after damage is dealt in the script you use to deal damage

Log in to vote
0
Answered by 2 years ago
Edited 2 years ago

You can tag a player when they're damaged by a tool. Let's say you have a sword. When a player touches your sword, it will make an ObjectValue inside the humanoid and its Value is yourself, but we will make it destroy after two seconds by using Debris:AddItem().

When a player dies, it will check if there's an ObjectValue inside their humanoid. And if it does, it will give the points to its Value (or the player who killed them).

The Classic Sword already has the tag script and some might have it too. But if your tool doesn't have a tag script and/or you're creating your custom tool, you can put this script in your tool. (Normal Script inside a Tool)

local Players = game:GetService("Players")
local Debris = game:GetService("Debris")

local tool = script.Parent
local handle = tool.Handle

function TagHumanoid(humanoid, player)
    local Creator_Tag = Instance.new("ObjectValue")
    Creator_Tag.Name = "creator"
    Creator_Tag.Value = player
    Debris:AddItem(Creator_Tag, 2)
    Creator_Tag.Parent = humanoid
end

handle.Touched:Connect(function(hit)
    local character = tool.Parent
    local player = Players:GetPlayerFromCharacter(character)

    local hitChar = hit.Parent
    local hitPlr = Players:GetPlayerFromCharacter(hitChar)

    if player and hitPlr then
        if hitChar ~= character then
            TagHumanoid(hitChar:FindFirstChildWhichIsA("Humanoid"), player)
        end
    end
end

And this is the script to detect if a player kills another player. (Normal Script inside ServerScriptService.)

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(character)
        local humanoid = character:FindFirstChildWhichIsA("Humanoid")

        humanoid.Died:Connect(function()
            local tag = humanoid:FindFirstChild("creator")
            local killer = tag.Value

            if tag and killer then
                if killer:IsA("Player") then
                    -- increase a NumberValue
                end
            end
        end)
    end)
end)

Answer this question