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

Why does my module script always return true?

Asked by
Lazarix9 245 Moderation Voter
4 years ago
Edited 4 years ago

Right, so I'm trying to make swords here. As you can see from the title, I'm using module scripts to deal with all the logic or whatever. Now, I have a region3 defined in my module script, and if a player is in that region3 I want them not to take damage. Now, CFrames, Region3s, all that kind of stuff has always been a weak side to me, so I found online some code for that and I modified it a bit to match what I wanted. Now with that, I tested the thing on a local server and whether I was in the region or not it would still kill the player. I need help with that, thanks.

This is my function inside of the module script:

function module.onTouchDamage(h)
    local afkregion = Region3.new(game.Workspace.afkregion1.Position, game.Workspace.afkregion2.Position)
    local isPlayerInRegion

    if h.Parent:FindFirstChild("Humanoid") then

        local char = h.Parent 
        local whitelist = char:GetChildren()
        ----------------------------------------

        local partsInRegion = game.Workspace:FindPartsInRegion3WithWhiteList(afkregion, whitelist)

        if #partsInRegion >= 1 then

            isPlayerInRegion = true
            print(#partsInRegion)
            print(partsInRegion[1].Name)

        else

            isPlayerInRegion = false

        end

        ----------------------------------------

        if isPlayerInRegion == false and char:WaitForChild("CanTakeDamage").Value == true then

            return true     

        else

            return false

        end 
    end 
end

This is a part my of script inside the sword.

sword.Touched:Connect(function(h)

    if h.Parent:FindFirstChild("Humanoid")  then

        local char = h.Parent
        local player = sword.Parent.Parent.Parent --Ik i used 4 parents in a row but you get it

        if char.Name ~= player.Name then

            local doDamage = module.onTouchDamage(h)

            print(doDamage)

            if doDamage == true then

                char.Humanoid:TakeDamage(dmg.Value)

            end
        end
    end 
end)

All variables are defined

Answer this question