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

Damage script only works in studio mode?

Asked by
Smunkey 95
8 years ago

I have this script that damages a non-player humanoid then makes a noise, however it only works in studio mode. The scripts are in bricks that are spawned as bullets from a tool, these bricks are non-collide-able. I have tried making the bullets collide-able but that only makes the script more broken.

function enemy(hit) 
local h = hit.Parent
if h:FindFirstChild("Humanoid") and
    game.Players:GetPlayerFromCharacter(hit.Parent) == nil then
    h:FindFirstChild("Humanoid").Health = h:FindFirstChild("Humanoid").Health - 30

    local sone = script.Parent.s1
local stwo = script.Parent.s2
local sound = math.random(1, 2)

    if sound == 1 then
        sone:Play()
    else if sound == 2 then
        stwo:Play()

    end
    end


    script.Parent:Destroy()


end
end

    script.Parent.Touched:connect(enemy)

This is the script, it just goes right through the humanoid like a normal non-collideable.

function enemy(hit) 
local h = hit.Parent
if h:FindFirstChild("Humanoid") and
    game.Players:GetPlayerFromCharacter(hit.Parent) == nil then
    h:FindFirstChild("Humanoid").Health = h:FindFirstChild("Humanoid").Health - 10
    script.Parent.Sound:Play()

script.Parent:Destroy()
end
end


    script.Parent.Touched:connect(enemy)

This is a modified version of the script used for a different tool, it sometimes damages humanoids if you stand really far away, it does not make a noise on impact though. It also just goes through humanoids rather than deleting itself.

function enemy(hit) 
local h = hit.Parent
local sound = script.Parent.Sound
if h ~= nil and h and h:FindFirstChild("Humanoid") and
    game.Players:GetPlayerFromCharacter(hit.Parent) == nil then
    h:FindFirstChild("Humanoid").Health = h:FindFirstChild("Humanoid").Health - 1
    sound:Play()

script.Parent:Destroy()
end
end


    script.Parent.Touched:connect(enemy)

This is an even old version of the modified script before I tried fixing, it's a bit messier and works just as well as the other version.

UPDATE: I've added a half second delay before the script destroys its parent, so now sound plays when the modified script does damage, however the script still only sometimes works when you stand far away from the hit humanoid. I have also tried replacing 'blahblah.health = blahblah.health - number' to 'blahblah:TakeDamage(number)' but to no avail.

Any ideas on what I could do in order to get this to work in a normal game instance? I have a theory that it isn't working because of delay lag from the server, but I don't know how to put this into a local script due to the changing of health values.

0
You spelled Sound as SOund? Is it supposed to be like that? legosweat 334 — 8y
0
That was just an error from re-writing the script to how it was before I edited it, since I didn't have the old script saved to copy-paste Smunkey 95 — 8y

Answer this question