Paantry Posted March 31, 2018 Share Posted March 31, 2018 -- Server function SetPedClothes( ped, clothesTexture, clothesModel, clothesType ) local data = { ClothesTexture = clothesTexture; ClothesModel = clothesModel; ClothesType = clothesType; }; setElementData( ped, "clothes", data ); return addPedClothes( ped, clothesTexture, clothesModel, clothesType ); end -- Client function OnClientElementDataChange( dataName, oldValue ) if getElementType( source ) == "player" and dataName == "clothes" then local value = getElementData( source ); if not value then engineRemoveShaderFromWorldTexture( source.ClothesShader, value.ClothesModel, source ); source.ClothesShader.Destroy(); return; end if source.ClothesShader then source.ClothesShader.Destroy(); source.ClothesShader = null; end -- для каждого педа нужен свой шейдер, так как шейдер имеет свои значения под конкретного игрока! -- сам шейдер конечно же нужно где-то хранить. -- source.ClothesShader - это для примера. У себя реализуйте по своему. source.ClothesShader = dxCreateShader( "files/shaders/replace.fx", 0, 0, true, 'ped' ); -- Где-то и текстуру храните (какой-то конфиг в виде глобального массива или что там увас) dxSetShaderValue( source.ClothesShader, "gTexture", ?.Texture ); engineApplyShaderToWorldTexture( source.ClothesShader, clothesModel, source ); end end -- Примерно так же и со стриммером Peguei esse código aqui pra trocar as roupas do CJ em shader.. Como faço pra usar esse código e trocar a camisa "tshirtwhite.txd" por exemplo? Não sei nada de .lua, me desculpem Link to comment
DNL291 Posted April 1, 2018 Share Posted April 1, 2018 De onde você pegou? Você vai precisar do código .fx do shader pra funcionar. Se você quer apenas substituir as texturas do cj, você pode usar as funções do exemplo nesta página da Wiki: https://wiki.multitheftauto.com/wiki/Clothing_Component_IDs 1 Link to comment
Paantry Posted April 1, 2018 Author Share Posted April 1, 2018 (edited) 9 hours ago, DNL291 said: De onde você pegou? Você vai precisar do código .fx do shader pra funcionar. Se você quer apenas substituir as texturas do cj, você pode usar as funções do exemplo nesta página da Wiki: https://wiki.multitheftauto.com/wiki/Clothing_Component_IDs Peguei do proprio forum mta. Quero utilizar também pra colocar CJ de 3 cores.. Branco, negro etc Aqui está o shader texture gTexture; technique TexReplace { pass P0 { Texture[0] = gTexture; } } Edited April 1, 2018 by Paantry Link to comment
Other Languages Moderators Lord Henry Posted April 1, 2018 Other Languages Moderators Share Posted April 1, 2018 Não tenho conhecimento com shaders. Já tentei aprender aqui mas o pessoal (pelo menos da área internacional) não quis me dar uma luz. Se tiver dúvidas quanto a programação Lua, dai posso te ajudar. 1 Link to comment
DNL291 Posted April 2, 2018 Share Posted April 2, 2018 No tópico que você citou você vai precisar ter um entendimento básico pra conseguir fazer o resource. O arquivo de shader precisa estar funcionando e ligado tanto ao meta.xml quanto ao seu script. Sobre o primeiro código do tópico mencionado, tem a tabela com as texturas que serão adicionadas com dxCreateTexture e o nome das texturas nas chaves. O shader é aplicado usando a função addClothes. Você chegou a tentar fazer o resource? Sobre mudar a cor do CJ, você tem os arquivos das texturas? Link to comment
Paantry Posted April 2, 2018 Author Share Posted April 2, 2018 14 hours ago, DNL291 said: No tópico que você citou você vai precisar ter um entendimento básico pra conseguir fazer o resource. O arquivo de shader precisa estar funcionando e ligado tanto ao meta.xml quanto ao seu script. Sobre o primeiro código do tópico mencionado, tem a tabela com as texturas que serão adicionadas com dxCreateTexture e o nome das texturas nas chaves. O shader é aplicado usando a função addClothes. Você chegou a tentar fazer o resource? Sobre mudar a cor do CJ, você tem os arquivos das texturas? Sim tenho as texturas, eu só não não sei aonde colocar a linha "dxCreatureTexture" dentro desse .lua por exemplo "tshirtwhite" Link to comment
DNL291 Posted April 3, 2018 Share Posted April 3, 2018 Baixei um mod do CJ branco pra testar com o shader, e fiz o código em Lua que está funcionando, aqui está: local tTextures = {} local pShaders = {} addEventHandler( "onClientResourceStart", resourceRoot, function() tTextures["cj_ped_torso"] = dxCreateTexture('cj_textures/torso.png') tTextures["cj_ped_legs"] = dxCreateTexture('cj_textures/legs.png') tTextures["cj_ped_head"] = dxCreateTexture('cj_textures/face.png') tTextures["cj_ped_feet"] = dxCreateTexture('cj_textures/foot.png') end ) addCommandHandler( "branco", function() applyShader( tTextures, localPlayer ) end ) addCommandHandler( "normal", function() for _, t in pairs(pShaders) do engineRemoveShaderFromWorldTexture( t[1], t[2], localPlayer ) end end ) function applyShader( t, player ) if type(t) == "table" and isElement(player) then for tex_name, tex_element in pairs(t) do local s = dxCreateShader('tex_replace.fx', 0, 0, true, 'ped') table.insert( pShaders, {s, tex_name} ) dxSetShaderValue(s, 'gTexture', tex_element) engineApplyShaderToWorldTexture(s, tex_name, player) end -- addPedClothes(player, "player_face", "head", 1) addPedClothes(player, "player_torso", "torso", 0) addPedClothes(player, "player_legs", "legs", 2) addPedClothes(player, "foot", "feet", 3) end end As texturas que usei foram do CJ sem roupa. Pra adicionar roupas vai precisar de um trabalho extra, como de modificar o painel do freeroam por exemplo pra carregar a textura correspondente à roupa selecionada. Eu deixei esses 2 comandos que é o de ativar o shader do CJ branco e o de voltar ao normal. Sobre a modificação de uma roupa/accessório, é só fazer da mesma forma que fiz acima, este exemplo substitui uma roupa especifica do CJ: addCommandHandler( "roupa", function() local s = dxCreateShader('tex_replace.fx', 0, 0, true, 'ped') ttt = dxCreateTexture('cj_textures/suit2grn.png') dxSetShaderValue(s, 'gTexture', ttt) engineApplyShaderToWorldTexture(s, "cj_ped_torso", localPlayer) addPedClothes(localPlayer, "suit2grn", "suit2", 0) end ) Pelo que percebi testando, o CJ tem 4 partes diferentes que são representadas por estas texturas: 'cj_ped_torso'; 'cj_ped_legs'; 'cj_ped_head'; 'cj_ped_feet' Significa que independente da textura, você sempre aplica o shader numa dessas regiões que será o local do ped necessário para o shader funcionar. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now