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

Oxygen System help: Water to Air?

Asked by 10 years ago

Hello, everyone. I am currently trying to convert this script so it will only work if you're outside. It also will kill you instantly. Also, by killing you instantly, I mean when your air is out. And my game wont have water. Also, when you're outside, it plays a sound. I'll upload the sound eventually, just put in a breathing sound ID.

local player = script.Parent.Parent.Parent.Parent
repeat wait() until player.Character

local lastHealth = 100
local lastHealth2 = 100
local maxWidth = 0.96

local humanoid = script.Air

function UpdateGUI(health)
    tray = script.Parent
    local width = (health / humanoid.MaxValue) * maxWidth
    local height = 0.83
    local lastX = tray.bar.Position.X.Scale
    local x = 0.019 + (maxWidth - width)
    local y = 0.1

    tray.bar.Position = UDim2.new(x,0,y, 0) 
    tray.bar.Size = UDim2.new(width, 0, height, 0)
    -- If more than 1/4 health, bar = green.  Else, bar = red.
    if( (health / humanoid.MaxValue) > 0.25 ) then
        tray.barRed.Size = UDim2.new(0, 0, 0, 0)
    else
        tray.barRed.Position = tray.bar.Position
        tray.barRed.Size = tray.bar.Size
        tray.bar.Size = UDim2.new(0, 0, 0, 0)
    end

    if ( (lastHealth - health) > (humanoid.MaxValue / 10) ) then
        lastHealth = health

        if humanoid.Value ~= humanoid.MaxValue then
            delay(0,function()
                AnimateBars(x, y, lastX, height)
            end)
        end
    else
        lastHealth = health
    end
end


function HealthChanged()
    health = humanoid.Value
    UpdateGUI(health)
    if ( (lastHealth2 - health) > (humanoid.MaxValue / 10) ) then
        lastHealth2 = health
    else
        lastHealth2 = health
    end
end

function AnimateBars(x, y, lastX, height)
    tray = script.Parent
    local width = math.abs(x - lastX)
    if( x > lastX ) then
        x = lastX
    end
    tray.bar2.Position = UDim2.new(x,0, y, 0)
    tray.bar2.Size = UDim2.new(width, 0, height, 0)
    tray.bar2.BackgroundTransparency = 0
    local GBchannels = 1
    local j = 0.2

    local i_total = 30
    for i=1,i_total do
        -- Increment Values
        if (GBchannels < 0.2) then
            j = -j
        end
        GBchannels = GBchannels + j
        if (i > (i_total - 10)) then
            tray.bar2.BackgroundTransparency = tray.bar2.BackgroundTransparency + 0.1
        end
        tray.bar2.BackgroundColor3 = Color3.new(1, GBchannels, GBchannels)
        wait(0.02)
    end
end

humanoid.Changed:connect(HealthChanged)

while wait() do
    local headLoc = game.Workspace.Terrain:WorldToCell(player.Character.Head.Position)
--  print(headLoc)
    local hasAnyWater = game.Workspace.Terrain:GetWaterCell(headLoc.x, headLoc.y, headLoc.z)
--  print(hasAnyWater)
    if player.Character.Humanoid.Health ~= 0 then
        if hasAnyWater then
            if humanoid.Value > humanoid.MinValue then
                script.Parent.Visible = true
                humanoid.Value = humanoid.Value-0.1
            elseif humanoid.Value <= humanoid.MinValue then
                player.Character.Humanoid:TakeDamage(0.2)
            end
        else
            if humanoid.Value < humanoid.MaxValue then
                humanoid.Value = humanoid.Value+5
            else
                script.Parent.Visible = false
            end
        end
    end
end

Answer this question