Jump to content

Ayuda shader


0xCiBeR

Recommended Posts

  • MTA Team

Descague un recurso de auras de la wiki... El problema es que :

1-) cuando acciono la aura con la tecla M, no se mantiene prendida..

2-)los demas jugadores no ven mi aura...

Aca los archivos

-- 
-- c_ped_shell.lua 
-- 
  
local myShader 
local startTickCount = 0 
  
addEventHandler( "onClientResourceStart", resourceRoot, 
    function() 
  
        -- Version check 
        if getVersion ().sortable < "1.3.1-9.04939" then 
            outputChatBox( "Recurso incompatible" ) 
            outputChatBox( "Actualiza MTA." ) 
            return 
        end 
  
        -- Create shader 
        myShader, tec = dxCreateShader ( "fx/ped_shell_layer.fx", 0, 0, true, "ped" ) 
  
        if not myShader then 
            outputChatBox( "Could not create shader. Please use debugscript 3" ) 
        else 
         
  
            -- Apply shader to local player 
            engineApplyShaderToWorldTexture ( myShader, "*", localPlayer ) 
  
            -- Hack to make GTA render the ped last, so our shell effect appears on top of the background 
            setElementAlpha( localPlayer, 254 ) 
  
  
            -- Fire effect at startup 
            startEffect(); 
        end 
    end 
) 
  
  
---------------------------------------------------------------- 
-- Start effect here 
---------------------------------------------------------------- 
function startEffect() 
    startTickCount = getTickCount() 
end 
  
bindKey("m", "down", startEffect ) 
  
  
---------------------------------------------------------------- 
-- Update effect here 
---------------------------------------------------------------- 
addEventHandler( "onClientRender", root, 
    function() 
        if not myShader then return end 
  
            local timeElapsed = getTickCount() - startTickCount 
            local f = timeElapsed / 750 
            f = math.min( f, 1 ) 
  
            local alpha = math.lerp ( 1.0, 0.0, f ) 
            local size = math.lerp ( 0, 0.3, f ) 
  
            -- Expand shell 
            dxSetShaderValue( myShader, "sMorphSize", size, size, size ) 
  
            -- Fade out shell 
            dxSetShaderValue( myShader, "sMorphColor", 255, 0, 0, alpha ) 
    end 
) 
  
  
---------------------------------------------------------------- 
-- Math helper functions 
---------------------------------------------------------------- 
function math.lerp(from,to,alpha) 
    return from + (to-from) * alpha 
end 
  

Y el shader:

//

// Example shader - ped_shell_layer.fx

//

//---------------------------------------------------------------------

// Ped shell settings

//---------------------------------------------------------------------

float3 sMorphSize = float3(0,0,0);

float4 sMorphColor = float4(1,1,1,1);

//---------------------------------------------------------------------

// Include some common stuff

//---------------------------------------------------------------------

#include "mta-helper.fx"

//---------------------------------------------------------------------

// Structure of data sent to the vertex shader

//---------------------------------------------------------------------

struct VSInput

{

float3 Position : POSITION0;

float3 Normal : NORMAL0;

float4 Diffuse : COLOR0;

float2 TexCoord : TEXCOORD0;

};

//---------------------------------------------------------------------

// Structure of data sent to the pixel shader ( from the vertex shader )

//---------------------------------------------------------------------

struct PSInput

{

float4 Position : POSITION0;

float4 Diffuse : COLOR0;

float2 TexCoord : TEXCOORD0;

};

//------------------------------------------------------------------------------------------

// VertexShaderFunction

// 1. Read from VS structure

// 2. Process

// 3. Write to PS structure

//------------------------------------------------------------------------------------------

PSInput VertexShaderFunction(VSInput VS)

{

PSInput PS = (PSInput)0;

// Do morph effect by adding surface normal to the vertex position

VS.Position += VS.Normal * sMorphSize;

// Calculate screen pos of vertex

PS.Position = MTACalcScreenPosition ( VS.Position );

// Pass through tex coords

PS.TexCoord = VS.TexCoord;

// Set our custom morph color

PS.Diffuse.rgb = sMorphColor.rgb * sMorphColor.a;

PS.Diffuse.a = 1;

return PS;

}

//------------------------------------------------------------------------------------------

// Techniques

//------------------------------------------------------------------------------------------

technique tec0

{

pass P0

{

// As this shader is used as a separate layer, we just have to draw our effect

// and not worry about the main rendering

// SrcBlend and DestBlend can be set for various effects

// This combination gives a translucent look

SrcBlend = SrcColor;

DestBlend = One;

VertexShader = compile vs_2_0 VertexShaderFunction();

}

}

// Fallback

technique fallback

{

pass P0

{

// As this shader is used as a separate layer, don't draw anything

SrcBlend = Zero;

DestBlend = One;

}

}

Gracias :wink: no entiendo muchode shaders

Link to comment
  • MTA Team
Para lo segundo:
            engineApplyShaderToWorldTexture ( myShader, "*", localPlayer ) 

Tendrás que reemplazar eso por un 'for-loop' con todos los jugadores que tengan el aura activada.

Pero como hago que los demas vean mi aura cuando la activo?

Link to comment
  • Recently Browsing   0 members

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