Jump to content

No me activa el shader blackandwhite


Rayzer

Recommended Posts

Hola, tengo un problema este script no me activa el shader, se supone que me activaria el shader cuando tenga 2000 de vida pero nada :( Bueno dejo el script y el shader. (el shader torna a blanco y negro la pantalla) Gracias (:.

local w, h = guiGetScreenSize( ); 
isEnablededededed = false 
  
function renderEffect2( ) 
    dxSetRenderTarget( ); 
    dxUpdateScreenSource( screenSrc2 ); 
    dxDrawImage( 0, 0, w, h, screenShader2 ); 
end 
  
function enableBlackWhite(enable) 
    if enable then 
        if isEnablededededed then return end 
        screenShader2 = dxCreateShader( "blackwhite.fx" ); 
        screenSrc2 = dxCreateScreenSource( w, h ); 
        if screenShader and screenSrc2 then 
            dxSetShaderValue( screenShader2, "BlackWhiteTexture", screenSrc2 ); 
            addEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); 
        end 
        isEnablededededed = true 
    else 
        if screenShader2 and screenSrc2 then 
            destroyElement( screenShader2 ); 
            destroyElement( screenSrc2 ); 
            screenShader2, screenSrc2 = nil, nil; 
            removeEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); 
            isEnablededededed = false 
        end 
    end 
end 
  
function enableBlackWhite2( ) 
    if getElementData(getLocalPlayer(),"blood") < 2000 then 
        enableBlackWhite(true) 
    else 
        enableBlackWhite(false) 
    end 
end 
setTimer(enableBlackWhite2,1000,0) 

texture BlackWhiteTexture;   
  
sampler screenSampler = sampler_state 
{ 
    Texture = <BlackWhiteTexture>; 
}; 
  
float4 main(float2 uv : TEXCOORD0) : COLOR0  
{  
    float4 Color;  
    Color = tex2D( screenSampler , uv);  
    Color.rgb = (Color.r+Color.g+Color.b)/3.0f;  
    if (Color.r<0.2 || Color.r>0.9) Color.r = 0; else Color.r = 1.0f;  
    if (Color.g<0.2 || Color.g>0.9) Color.g = 0; else Color.g = 1.0f;  
    if (Color.b<0.2 || Color.b>0.9) Color.b = 0; else Color.b = 1.0f; 
    return Color;  
}; 
  
technique BlackWhite 
{ 
    pass P1 
    { 
        PixelShader = compile ps_2_0 main(); 
    } 
} 

Link to comment

No se mucho sobre DayZ (no se para qué es 'blood'), pero, ¿estás seguro que 'blood' es menor a 2000? Puedes comprobarlo usando el resource 'runcode'.

/crun getElementData(localPlayer,"blood")

En el chat te dirá algo como:

Result: x [number] o false [boolean]

Link to comment

blood es la variable de la sangre en el gamemode, y si estoy mas que seguro de que blood llega a menos de 2000 y no pasa nada , probare con ese resource que me dices y actualizo este mensaje con la info que salio

Salio Command results: 2000[number]

Link to comment
blood es la variable de la sangre en el gamemode, y si estoy mas que seguro de que blood llega a menos de 2000 y no pasa nada , probare con ese resource que me dices y actualizo este mensaje con la info que salio

Salio Command results: 2000[number]

Te salió que tu 'blood' es 2000, y en el resource dice que se active debes tener menos de 2000.

Link to comment
  
local w, h = guiGetScreenSize( ); 
isEnablededededed = false 
  
function renderEffect2( ) 
    dxSetRenderTarget( ); 
    dxUpdateScreenSource( screenSrc2 ); 
    dxDrawImage( 0, 0, w, h, screenShader2 ); 
end 
  
function enableBlackWhite(enable) 
    if enable then 
        if isEnablededededed then return end 
        screenShader2 = dxCreateShader( "blackwhite.fx" ); 
        screenSrc2 = dxCreateScreenSource( w, h ); 
        if screenShader2 and screenSrc2 then 
            dxSetShaderValue( screenShader2, "BlackWhiteTexture", screenSrc2 ); 
            addEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); 
        end 
        isEnablededededed = true 
    else 
        if screenShader2 and screenSrc2 then 
            destroyElement( screenShader2 ); 
            destroyElement( screenSrc2 ); 
            screenShader2, screenSrc2 = nil, nil; 
            removeEventHandler( "onClientHUDRender", getRootElement( ), renderEffect2 ); 
            isEnablededededed = false 
        end 
    end 
end 
  
function enableBlackWhite2( ) 
    if getElementData(getLocalPlayer(),"blood") < 2000 then 
        enableBlackWhite(true) 
    else 
        enableBlackWhite(false) 
    end 
end 
setTimer(enableBlackWhite2,1000,0) 
  

El problema estaba en la línea 15, decía 'screenShader' en vez de 'screenShader2'.

Link to comment

Sigue sin activarse jajaja mejor dejemos lo así... (: Gracias de igual manera :D

AAH Una cosa :$ aprovechando este post, este script no me funciona, se supone que es para unos binoculares en el dayz pero no me dibuja la imagen.

function updateCamera () 
local weapon = getPedWeapon(getLocalPlayer()) 
if weapon == 43 and (getControlState("aim_weapon")) then 
    dxDrawImage(0, 0, 300, 300, "binoculars.png") 
end 
addEventHandler ( "onClientRender", root, updateCamera ) 

Link to comment
Sigue sin activarse jajaja mejor dejemos lo así... (: Gracias de igual manera :D

AAH Una cosa :$ aprovechando este post, este script no me funciona, se supone que es para unos binoculares en el dayz pero no me dibuja la imagen.

function updateCamera () 
local weapon = getPedWeapon(getLocalPlayer()) 
if weapon == 43 and (getControlState("aim_weapon")) then 
    dxDrawImage(0, 0, 300, 300, "binoculars.png") 
end 
addEventHandler ( "onClientRender", root, updateCamera ) 

El script que te di funciona.. lo acabo de probar.

Sobre éste último debería funcionar. Con los binoculares te refieres a los lentes de Night Vision o a la Cámara?

Link to comment
local w, h = guiGetScreenSize( ) 
local isShaderEnabled = false 
  
addEventHandler ( "onClientResourceStart", resourceRoot, 
    function ( ) 
        onBloodChange ( "blood" ) 
    end 
) 
  
function renderEffect2 ( ) 
    dxSetRenderTarget ( ) 
    dxUpdateScreenSource ( screenSrc2 ) 
    dxDrawImage ( 0, 0, w, h, screenShader2 ) 
end 
  
function enableBlackWhite ( enable ) 
    if ( enable ) then 
        if ( isShaderEnabled ) then 
            return 
        end 
  
        screenShader2 = dxCreateShader ( "blackwhite.fx" ) 
        screenSrc2 = dxCreateScreenSource ( w, h ) 
        if ( screenShader2 and screenSrc2 ) then 
            dxSetShaderValue ( screenShader2, "BlackWhiteTexture", screenSrc2 ) 
            addEventHandler ( "onClientHUDRender", getRootElement( ), renderEffect2 ) 
        end 
    else 
        if ( screenShader2 and screenSrc2 ) then 
            destroyElement ( screenShader2 ) 
            destroyElement ( screenSrc2 ) 
            screenShader2, screenSrc2 = nil, nil 
            removeEventHandler ( "onClientHUDRender", getRootElement( ), renderEffect2 ) 
        end 
    end 
    isShaderEnabled = enable 
end 
  
  
function onBloodChange ( dataName ) 
    if ( dataName == "blood" ) then 
        local blood = ( tonumber ( getElementData ( localPlayer, "blood" ) ) or 0 ) 
        if ( blood < 2000 ) then 
            enableBlackWhite ( true ) 
        else 
            enableBlackWhite ( false ) 
        end 
    end 
end 
addEventHandler ( "onClientElementDataChange", localPlayer, onBloodChange ) 

Probalo.

Link to comment
local w, h = guiGetScreenSize( ) 
local isShaderEnabled = false 
  
addEventHandler ( "onClientResourceStart", resourceRoot, 
    function ( ) 
        onBloodChange ( "blood" ) 
    end 
) 
  
function renderEffect2 ( ) 
    dxSetRenderTarget ( ) 
    dxUpdateScreenSource ( screenSrc2 ) 
    dxDrawImage ( 0, 0, w, h, screenShader2 ) 
end 
  
function enableBlackWhite ( enable ) 
    if ( enable ) then 
        if ( isShaderEnabled ) then 
            return 
        end 
  
        screenShader2 = dxCreateShader ( "blackwhite.fx" ) 
        screenSrc2 = dxCreateScreenSource ( w, h ) 
        if ( screenShader2 and screenSrc2 ) then 
            dxSetShaderValue ( screenShader2, "BlackWhiteTexture", screenSrc2 ) 
            addEventHandler ( "onClientHUDRender", getRootElement( ), renderEffect2 ) 
        end 
    else 
        if ( screenShader2 and screenSrc2 ) then 
            destroyElement ( screenShader2 ) 
            destroyElement ( screenSrc2 ) 
            screenShader2, screenSrc2 = nil, nil 
            removeEventHandler ( "onClientHUDRender", getRootElement( ), renderEffect2 ) 
        end 
    end 
    isShaderEnabled = enable 
end 
  
  
function onBloodChange ( dataName ) 
    if ( dataName == "blood" ) then 
        local blood = ( tonumber ( getElementData ( localPlayer, "blood" ) ) or 0 ) 
        if ( blood < 2000 ) then 
            enableBlackWhite ( true ) 
        else 
            enableBlackWhite ( false ) 
        end 
    end 
end 
addEventHandler ( "onClientElementDataChange", localPlayer, onBloodChange ) 

Probalo.

Sigue sin activarse, ya dejemos lo así xD Jaja :(

JZlTnhR.png?1

Link to comment
Pues segun esta linea del codigo dice que se activa si es menor a 2000
if getElementData(getLocalPlayer(),"blood") < 2000 then 

Aquí dejo una imagen donde solo tengo 1 de vida y sigue sin activarse, para que veas que no funciona Cx

http://i.imgur.com/2b4F2sv.png?1

2b4F2sv.png?1

Ash, disculpa, ando un poco cansado y confundo las cosas t_T

Falta el meta.

Link to comment
Pues segun esta linea del codigo dice que se activa si es menor a 2000
if getElementData(getLocalPlayer(),"blood") < 2000 then 

Aquí dejo una imagen donde solo tengo 1 de vida y sigue sin activarse, para que veas que no funciona Cx

http://i.imgur.com/2b4F2sv.png?1

2b4F2sv.png?1

Ash, disculpa, ando un poco cansado y confundo las cosas t_T

Falta el meta.

Descuida suele pasar!

cierto se me olvido el meta, aquí lo dejo https://mega.co.nz/#!VsRxFIpa!pRwR6H68WEv5TyCDkv_vehY1S3EE7SKL5s4bdlbKMtk

Link to comment
  • Recently Browsing   0 members

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