Jump to content

[AJUDA] Sistema de setas realistas


Recommended Posts

Ola boa tarde, estava olhando o video do Lord Henry em questões as setas realistas em carros

Tenho noção que é com uso de shader para poder realizar este projeto, porem não sei direitos os passos a serem seguidos e qual shader usar para isso

Existe ate a opção de usar custom_coronas para criar talvez pontos de luzes porem não fica um negocio bonito e realista, queria que as setas, luzes de emergencias etc forem vinculados ao farol do veiculo

Se alguem poder me ajudar agradeço!

Edited by Lord Henry
Link incluído.
Link to comment
  • Other Languages Moderators

Faça o veículo com texturas customizadas nas setas. (a textura pode ser igual, mas tem que ter nome diferente).

Nas setas esquerdas, coloquei uma textura com nome vehiclelights32Left, nas setas da direita, vehiclelights32Right.

Então o shader basicamente só precisa substituir essas texturas pela versão acesa quando for pra acender e pela versão normal quando for apagar.

Sobre o shader.fx usar, basta usar o shader simples de substituir texturas. Exemplo na Wiki: https://wiki.multitheftauto.com/wiki/Element/Shader#Simple

Obs: Obviamente as texturas customizadas precisam estar incluídas no TXD do veículo.

Edited by Lord Henry
Link to comment

Ola, vi a sua resposta e tentei fazer um sistema de setas

 

--[[
     _______   ______   ___   ___  __  .___  ___. 
    |   ____| /  __  \  \  \ /  / |  | |   \/   | 
    |  |__   |  |  |  |  \  V  /  |  | |  \  /  | 
    |   __|  |  |  |  |   >   <   |  | |  |\/|  | 
    |  |     |  `--'  |  /  .  \  |  | |  |  |  | 
    |__|      \______/  /__/ \__\ |__| |__|  |__| 

    Todos direitos reservados para Strong Roleplay
    copyright©

]]--

-- dxSetShaderValue( shader, "Tex0", texture )

local definitions = {};
definitions.timerArrows = {};

function definitions.startResource(name)
    print("["..getResourceName(name).."]: Sistema iniciado com sucesso! - SRP ©")
    definitions.shader = dxCreateShader("assets/shaders/shader.fx", 0, 0, false, "vehicle")
    if ( definitions.shader and getElementType(definitions.shader) == "shader" ) then
        print("["..getResourceName(name).."]: Shader criado com sucesso! - SRP ©")
    end
end
addEventHandler("onClientResourceStart", resourceRoot, definitions.startResource, true, "normal")

function definitions.pressKey(button, press)
    if not ( press ) then
        return 
    end
    if ( button == "," ) then
        local vehicle = getPedOccupiedVehicle(localPlayer)
        if ( vehicle and getElementType(vehicle) == "vehicle" ) then
            if ( definitions.timerArrows[vehicle] and isTimer(definitions.timerArrows[vehicle]) ) then
                killTimer(definitions.timerArrows[vehicle])
                definitions.timerArrows[vehicle] = nil
                dxSetShaderValue(definitions.shader, config.texturesNames["arrows"]["left"], false)
                print("FIM LEFT")
                return
            end
            definitions.timerArrows[vehicle] = setTimer(function(vehicle)
                if not ( vehicle and getElementType(vehicle) == "vehicle" ) then
                    return
                end
                dxSetShaderValue(definitions.shader, config.texturesNames["arrows"]["left"], true)
                print("OK LEFT")
            end, 400, 0, vehicle)
        end
    elseif ( button == "." ) then
        local vehicle = getPedOccupiedVehicle(localPlayer)
        if ( vehicle and getElementType(vehicle) == "vehicle" ) then
            if ( definitions.timerArrows[vehicle] and isTimer(definitions.timerArrows[vehicle]) ) then
                killTimer(definitions.timerArrows[vehicle])
                definitions.timerArrows[vehicle] = nil
                dxSetShaderValue(definitions.shader, config.texturesNames["arrows"]["right"], false)
                print("FIM RIGHT")
                return
            end
            definitions.timerArrows[vehicle] = setTimer(function(vehicle)
                if not ( vehicle and getElementType(vehicle) == "vehicle" ) then
                    return
                end
                dxSetShaderValue(definitions.shader, config.texturesNames["arrows"]["right"], true)
                print("OK RIGHT")
            end, 400, 0, vehicle)
        end
    end
end
addEventHandler("onClientKey", getRootElement(), definitions.pressKey, true, "normal")

Porem, minha duvida é o seguinte

Eu terei que colocar uma textura modificada no farol, na seta direita e na esquerda, porem essa textura como eu iria ativar ela?

Tentei fazer pelo dxSetShaderValue, colocando apenas o nome da textura e setando ela como true ou false, seria dessa maneira?

Existe alguma maneira de textar com veiculos padrão do gta sa? se eu n me engano alguns veiculos ja vem com uma textura de luzes ligadas ou desligadas, queria apenas um jeito de testar se o codigo esta funcionando ou não.

Obrigado pelo ajuda Lord!

Link to comment
  • Other Languages Moderators
3 hours ago, eqFoxim said:

Eu terei que colocar uma textura modificada no farol, na seta direita e na esquerda, porem essa textura como eu iria ativar ela?

Não. 

Nas luzes do farol e freios você não mexe. Deixe as originais.

Só troque as texturas das setas pelas customizadas.

Pra "acender" a textura, você apenas troca ela pela versão acesa. A versão acesa da textura customizada não precisa estar no TXD do veículo, só a versão apagada.

3 hours ago, eqFoxim said:

Tentei fazer pelo dxSetShaderValue, colocando apenas o nome da textura e setando ela como true ou false, seria dessa maneira?

No dxSetShaderValue você coloca a textura acesa que vai substituir a versão apagada da textura customizada.

3 hours ago, eqFoxim said:

Existe alguma maneira de textar com veiculos padrão do gta sa?

Não. Precisa adaptar o veículo se quiser usar setas nele. Os veículos originais usam a mesma textura dos faróis e freios nas setas, não tem como diferenciar as texturas das setas e dos faróis.

Se você tentar fazer com veículos originais, você vai acabar substituindo as luzes dos faróis e freios junto.

Edited by Lord Henry
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...