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

How do I pass name of part that killed player trought events?

Asked by 2 years ago

I have event called "PlayerDiedTo" that is supposted to pass names of things that killed the player to local script so it can check if the thing that killed player was named "CorrectPart"

I tried this but I just started learning about events and dont know how this works

local

local event = game.ReplicatedStorage.PlayerDiedTo
event.OnClientEvent:Connect(function(CorrectPart)
       if CorrectPart then
             print("Correct")
       else
             print("False")
       end
end)

server

script.Parent.Touched:Connect(function(Hit)
    if Hit and Hit.Parent and Hit.Parent:FindFirstChild("Humanoid")then
        if Hit.Parent:FindFirstChild("NPC") then --ignore this it just detects if hit parent is not an npc

        else
            Hit.Parent.Humanoid.Health = 0
            local event = game.ReplicatedStorage.PlayerDiedTo
            local CorrectPart= script.Parent
            event:FireAllClients(CorrectPart)
        end
    end
end)

1 answer

Log in to vote
1
Answered by 2 years ago
Edited 1 year ago

There is no need to pass it through events, just do this

--Script inside the tool you are using to kill someone (a sword for example)

Tool = script.Parent
Handle = Tool.Handle
local Player = game.Players:GetPlayerFromCharacter(Tool.Parent) or Tool.Parent.Parent --1. checks if there is a character (so if they are equipped the tool), if no then 2. checks the tool parent which is the backpack, and the backpack is parented to the player

Handle.Touched:Connect(function(hit)
    local Tagged = Instance.new("ObjectValue")
    Tagged.Name = "creator"
    Tagged.Value = Player
    Tagged.Parent = hit.Parent.Humanoid
    game:GetService("Debris"):AddItem(Tagged, 2)
end)



--Script inside the character (place inside startercharacterscripts)

local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")

Humanoid.Died:Connect(function()
    local creator = Humanoid:FindFirstChild("creator)
    if creator then
        local plr = creator.Value
        if plr and plr.leaderstats then
            plr.leaderstats.Kills.Value +=1 --replace with whatever you want to change, may be cash or something
        end
    end
end)
Ad

Answer this question