Jump to content

Water Shader Toggle


h4x7o0r

Recommended Posts

Hey all , i want to make a toggle for water shader ( E.g When i press "K" button to turns the shader on / off ).

Here is the code :

     
toggle = false 
function water() 
  
        -- Version check 
        if getVersion ().sortable < "1.1.0" then 
            outputChatBox( "Resource is not compatible with this client." ) 
            return 
        end 
  
        -- Create shader 
        local myShader, tec = dxCreateShader ( "water.fx" ) 
  
        if not myShader then 
            outputChatBox( "Could not create shader. Please use debugscript 3" ) 
        else 
            outputChatBox( "Using technique " .. tec ) 
  
            -- Set textures 
            local textureVol = dxCreateTexture ( "images/smallnoise3d.dds" ); 
            local textureCube = dxCreateTexture ( "images/cube_env256.dds" ); 
            dxSetShaderValue ( myShader, "microflakeNMapVol_Tex", textureVol ); 
            dxSetShaderValue ( myShader, "showroomMapCube_Tex", textureCube ); 
  
            -- Apply to global txd 13 
            engineApplyShaderToWorldTexture ( myShader, "waterclear256" ) 
  
            -- Update water color incase it gets changed by persons unknown 
            setTimer(   function() 
                            if myShader then 
                                local r,g,b,a = getWaterColor() 
                                dxSetShaderValue ( myShader, "gWaterColor", r/255, g/255, b/255, a/255 ); 
                            end 
                        end 
                        ,100,0 ) 
        end 
    end 
  
     
addCommandHandler("water", water) 
  

Where should i put the "if statement for the toggle" and bind button :?:

Link to comment
-- 
-- c_water.lua 
-- 
  
local waterOn = false 
  
addEventHandler( "onClientResourceStart", resourceRoot, 
    function() 
        -- Version check 
        if getVersion ().sortable < "1.1.0" then 
            return 
        end 
  
        -- Create shader 
        myShader, tec = dxCreateShader ( "water.fx" ) 
        if myShader then 
            outputChatBox( "Using technique " .. tec ) 
            -- Set textures 
            local textureVol = dxCreateTexture ( "images/smallnoise3d.dds" ); 
            local textureCube = dxCreateTexture ( "images/cube_env256.dds" ); 
            dxSetShaderValue ( myShader, "microflakeNMapVol_Tex", textureVol ); 
            dxSetShaderValue ( myShader, "showroomMapCube_Tex", textureCube ); 
        end 
    end 
) 
  
function setWaterShaderEnabled(bool) 
if bool then 
    engineApplyShaderToWorldTexture ( myShader, "waterclear256" ) 
    -- Update water color incase it gets changed by persons unknown 
    waterTimer = setTimer(  function() 
            if myShader then 
            local r,g,b,a = getWaterColor() 
            dxSetShaderValue ( myShader, "gWaterColor", r/255, g/255, b/255, a/255 ); 
        end 
    end 
    ,100,0 ) 
        waterOn = true 
else 
    if isTimer(waterTimer) then killTimer(waterTimer) end 
    engineRemoveShaderFromWorldTexture ( myShader, "waterclear256" ) 
        waterOn = false 
    end 
end 
  
bindKey("K","down", 
function () 
    waterOn = not waterOn 
    setWaterShaderEnabled(waterOn) 
end) 

Edited by Guest
Link to comment
  • 4 weeks later...
-- 
-- c_water.lua 
-- 
  
local waterOn = false 
  
function setWaterShaderEnabled(bool) 
if bool then 
    engineApplyShaderToWorldTexture ( myShader, "waterclear256" ) 
    -- Update water color incase it gets changed by persons unknown 
    waterTimer = setTimer(  function() 
            if myShader then 
            local r,g,b,a = getWaterColor() 
            dxSetShaderValue ( myShader, "gWaterColor", r/255, g/255, b/255, a/255 ); 
        end 
    end 
    ,100,0 ) 
        waterOn = true 
else 
    if isTimer(waterTimer) then killTimer(waterTimer) end 
    engineRemoveShaderFromWorldTexture ( myShader, "waterclear256" ) 
        waterOn = false 
    end 
end 
  
addEventHandler( "onClientResourceStart", resourceRoot, 
    function() 
        -- Version check 
        if getVersion ().sortable < "1.1.0" then 
            return 
        end 
  
        -- Create shader 
        myShader, tec = dxCreateShader ( "water.fx" ) 
        if myShader then 
            outputChatBox( "Using technique " .. tec ) 
            -- Set textures 
            local textureVol = dxCreateTexture ( "images/smallnoise3d.dds" ); 
            local textureCube = dxCreateTexture ( "images/cube_env256.dds" ); 
            dxSetShaderValue ( myShader, "microflakeNMapVol_Tex", textureVol ); 
            dxSetShaderValue ( myShader, "showroomMapCube_Tex", textureCube ); 
        end 
        setWaterShaderEnabled(true) 
    end 
) 
  
bindKey("K","down", 
function () 
    waterOn = not waterOn 
    setWaterShaderEnabled(waterOn) 
end) 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...