I want to make a game that is so you can't hurt other players, but can hurt humanoid NPC's can somebody help me with how to do this? I've searched for videos and googled it but there wasn't anything on this specific topic. Please reply and help.
Thank you!
You could use a Player check using GetPlayerFromCharacter()?
local Players = game:GetService('Players') Blade.Touched:Connect(function(Hit) local Player = Players:GetPlayerFromCharacter(Hit.Parent) if not Player then -- makes sure isn't player local Humanoid = hit.Parent:FindFirstChild('Humanoid') -- finds humanoid if Humanoid then -- damage stuff here end end)
How would I implement the script into this knife script?
local parent = script.Parent local Handle = parent:WaitForChild("Handle") local Creator = parent:WaitForChild("Creator") CanDmg = false Can = true parent.Equipped:Connect(function() Handle.Equip:Play() if Creator.Value == nil then Creator.Value = parent.Parent end end) parent.Unequipped:Connect(function() Handle.UnEquip:Play() end) repeat wait() until Creator.Value ~= nil parent.Activated:Connect(function() if Handle.Transparency == 1 then return end function slash() print("hip") local creator = Creator.Value local Animations = parent:WaitForChild("Animations") local AnimChild = Animations:GetChildren() local AnimRad = math.random(1,#AnimChild) local AnimSel = AnimChild[AnimRad] local AP = creator:WaitForChild("Humanoid"):LoadAnimation(AnimSel) if Can == true then Can = false AP:Play() wait(0.15) CanDmg = true Handle.Swing:Play() Handle.SlashTrail.Enabled = true wait(0.25) CanDmg = false Handle.SlashTrail.Enabled = false wait(0.06) Can = true end end slash() end) function on(t) local h = t.Parent:FindFirstChildOfClass("Humanoid") if h ~= nil and CanDmg == true then CanDmg = false local cre = Creator.Value h:TakeDamage(parent.Dmg.Value) Handle.Swing:Stop() Handle.Hit:Play() if h.Health>0 then if not h:FindFirstChild("creator") then local ov = Instance.new("ObjectValue",h) ov.Name = "creator" ov.Value = game.Players:WaitForChild(cre.Name) else local ovs = h:GetChildren() for i = 1,#ovs do if (ovs[i].Name == "creator") then ovs[i].Value = game.Players:WaitForChild(cre.Name) end end end end end end Handle.Touched:Connect(on)