Jump to content

¿Shader a particle object?


Lalalu

Recommended Posts

Holaaaaaa, qué tal, hago este post con el siguiente motivo:

Quisiera saber como debo hacer para que se cree otro tipo de llamas distintas a la del fuego, no sé explicar muy bien, a ver:

Cómo ven en este vídeo, se crean unas llamas con otra textura por separado del fuego normal, pude lograr conseguir ese efecto de las llamas reemplazando "bullethitsmoke" , osea el nombre de la textura que reemplaza el fuego, o al menos es así en mi script, al reemplazar dicha imagen funciona bien, salen las llamas negras, el problema es que se reemplazan todas las llamas del gta, hasta las explosiones, en el particle objects hay .dff de llamas por separado, quería saber sí se le puede aplicar un shader o una textura a uno de esos dff, o si siquiera es posible, ya que necesito que estas llamas se creen aparte, individualmente, no que reemplazen todas las llamas, también había pensado que se activarán al colocar el comando con que saldrán dichas llamas negras y que al pasar un tiempo específico vuelva al shader común del fuego, osea de modo que las llamas negras se activen con el comando y con un tiempo específico desaparezca este shader y el común del fuego vuelva, no sé si algo de esto es posible ya que no sé mucho de script, pero espero que me den alguna opción o me digan que debería usar, o si acaso sólo digo locuras y nada de esto es posible, espero sus respuesas, no sé si me supe explicar bien

 

Link to comment

Trate de usar el ejemplo de la wiki , pero no logré nada, sólo hice un desastre

local activado = { }
local players = getElementsByType( 'player' )

local img = dxCreateTexture("test.png")
local x, y, z = getElementPosition(player)
addEventHandler("onClientRender", root,
    function()  -- x,y,z, targetx,targety,targetz,texture,width,color
		dxDrawMaterialLine3D( x+1, y+1, z+1, x, y+v, z , img, v, TextColor, x, y, z) 
    end)
	
function removeEffect( player )
	if activado[ player ] == true then
		activado[ player ] = nil
	end
end

addEvent( "naruto:activarEfecto", true )
addEventHandler( "naruto:activarEfecto", getRootElement( ),

	function( player )
		if not activado[ player ] or activado[ player ] == nil then
			activado[ player ] = true
			setTimer( removeEffect, 5000, 1, player )
		end
	end
)

 

no sé que hice ahí, pero seguiré intentando

Link to comment

estaba aburrido así que te realice un ejemplo para que te ayudes.

para esto utilice 6 img  {1,png , 2 png , 3.png} ... para que simule las llamas en movimientohL0R_fu6SPuNF5joD7rgTw.png

 

  texturas = {}

  for i = 1, 6 do
    texturas[i]   = dxCreateTexture(i..".png")
	width, height = dxGetMaterialSize( texturas[i] )
  end
  
  function start_anim()
    if anim then return end
  	img     = 1
	cx, cy, cz    =  getPositionFromElementOffset(localPlayer,0, 5, 0) 
	cx2, cy2, cz2 =  getPositionFromElementOffset(localPlayer,2, 7, 0) 
	cx3, cy3, cz3 =  getPositionFromElementOffset(localPlayer,-2, 7, 0) 
	cx4, cy4, cz4 =  getPositionFromElementOffset(localPlayer,1, 9, 0) 
	cx5, cy5, cz5 =  getPositionFromElementOffset(localPlayer,-1, 9, 0) 
    addEventHandler("onClientRender", root, dx_amateratsu)
    setTimer(stop_anim, 3000, 1,"onClientRender")
  end
  addCommandHandler("jutsu", start_anim)
  
  function stop_anim ()
      removeEventHandler("onClientRender", root, dx_amateratsu)
      anim = false
  end
  function dx_amateratsu()
    dxDrawMaterialLine3D (cx, cy, cz, cx , cy , cz - 1,texturas[math.ceil(img)], 4, tocolor(255,255,255,255))
    dxDrawMaterialLine3D (cx2, cy2, cz2, cx2, cy2, cz2 - 1,texturas[math.ceil(img)], 4, tocolor(255,255,255,255))
    dxDrawMaterialLine3D (cx3, cy3, cz3, cx3, cy3, cz3 - 1,texturas[math.ceil(img)], 4, tocolor(255,255,255,255))
    dxDrawMaterialLine3D (cx4, cy4, cz4, cx4, cy4, cz4 - 1,texturas[math.ceil(img)], 4, tocolor(255,255,255,255))
    dxDrawMaterialLine3D (cx5, cy5, cz5, cx5, cy5, cz5 - 1,texturas[math.ceil(img)], 4, tocolor(255,255,255,255))
    if math.ceil(img) < 6 then
       img = img  + 0.1
	else
	   img = 1
	end
  end
  
  
  function getPositionFromElementOffset(element,offX,offY,offZ) 
    local m = getElementMatrix ( element ) 
    local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] 
    local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] 
    local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] 
    return x, y, z 
  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...