Rekyuma Posted September 14 Posted September 14 (edited) Hello sir, I need help understanding how to properly edit an existing GTA:SA ped DFF and TXD to add new clothing so that it works with my custom MTA:SA clothing shader system. local shader = {} local clothes = {} local shaderData = [[ texture tex; technique replace { pass P0 { Texture[0] = tex; } } ]] local dxImg = dxDrawImage function removeTexture ( player, type, model, txd ) if not shader[player] then shader[player] = {} end if not shader[player][type] then shader[player][type] = {} end if isElement(shader[player][type]) then destroyElement(shader[player][type]) shader[player][type] = {} end local skin = getElementModel(player) if type then if config.clothes[skin] then if config.clothes[skin][type] then local textureName = config.clothes[skin][type][model] if textureName then shader[player][type] = dxCreateShader(shaderData, 0, 0, false, 'ped') engineApplyShaderToWorldTexture(shader[player][type], textureName, player) end end end end end addEvent('removeTexture', true) addEventHandler('removeTexture', root, removeTexture) addEvent('clearClothes', true) addEventHandler('clearClothes', root, function( player ) if shader[player] then for i,v in pairs(shader[player]) do if shader[player][i] and isElement(shader[player][i]) then destroyElement(shader[player][i]) shader[player][i] = {} end end end end) function applyTexture ( player, type, model, txd ) if not type or not model or not txd then return end if not shader[player] then shader[player] = {} end if not shader[player][type] then shader[player][type] = {} end if not clothes[player] then clothes[player] = {} end if not clothes[player][type] then clothes[player][type] = {} end local skin = getElementModel(player) if config.models[skin] then local image = 'src/textures/'..config.models[skin]..'/'..type..'/'..model..'/'..txd..'.png' if config.corpo[skin] then if config.corpo[skin][type] then image = config.corpo[skin][type]..'/'..model..'/'..txd..'.png' end end if config.clothes[skin][type] then local textureName = config.clothes[skin][type] if fileExists(image) and textureName then removeTexture ( player, type, model, txd ) local texture = dxCreateTexture(image) dxSetShaderValue(shader[player][type], 'tex', texture) destroyElement(texture) clothes[player][type] = {model, txd} elseif model <= 0 then removeTexture ( player, type, model, txd ) clothes[player][type] = nil end end end end function applyTatto (player, type, model, txd) if not shader[player] then shader[player] = {} end if not shader[player][type] then shader[player][type] = {} end print('chegou aqui') print(type, model, txd) local skin = getElementModel(player) --if config.models[skin] then if config.tattos[type] then local model, txd = tonumber(model), tonumber(txd) if config.tattos[type][model] then local image = 'src/textures/tattos/'..config.tattos[type][model]..'/'..txd..'.png' --if fileExists(image) then if config.tattosSettings[type] then local modelo = config.tattosSettings[type] if clothes[player][modelo] then local genderFolder = (skin == 9) and 'female' or 'male' local bg = 'src/textures/'..genderFolder..'/'..modelo..'/'..clothes[player][modelo][1]..'/'..clothes[player][modelo][2]..'.png' if fileExists(bg) then print('chegou aquii 4') local texture = dxCreateRenderTarget(512, 512) dxSetRenderTarget(texture) dxImg(0, 0, 512, 512, bg) dxImg(0, 0, 512, 512, image) dxSetRenderTarget() local render = function () dxDrawImage(0, 0, 512, 512, texture) end addEventHandler('onClientRender', root, render) setTimer(function() removeEventHandler('onClientRender', root, render) dxSetShaderValue(shader[player][modelo], 'tex', texture) destroyElement(texture) end, 5000, 1) else print('background nC#o encontrado') end end else print('sem tipo') end else print('parou aq') end else print('tipo de tattoo inexistente' ) end --else --print('modelo invalido') --end end addEvent('setPlayerRoupa', true) addEventHandler('setPlayerRoupa', root, function(player, type, model, txd) if not config.models[getElementModel(player)] then return end if type and model then local model, txd = tonumber(model), tonumber(txd) or 0 if model > 0 and txd > 0 then applyTexture ( player, type, model, txd ) if getElementModel(player) == 7 or getElementModel(player) == 9 then if type == 'peito' or type == 'barriga' or type == 'ombro' or type == 'braco' or type == 'cotovelo' or type == 'coxa' or type == 'joelho' or type == 'calcanhar' or type == 'pe' then if not getElementData(player, 'Pele') then setElementData(player, 'Pele', txd) end end end if config.repair[getElementModel(player)] then if config.repair[getElementModel(player)][type] then if config.repair[getElementModel(player)][type][model] then for i,v in pairs(config.repair[getElementModel(player)][type][model]) do if i == 'peito' or i == 'barriga' or i == 'ombro' or i == 'braco' or i == 'cotovelo' or i == 'coxa' or i == 'joelho' or i == 'calcanhar' or i == 'pe' then local pele = getElementData(player, 'Pele') or 1 if clothes[player][i] then pele = clothes[player][i][2] end applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], pele ) else if clothes[player][i] then applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], clothes[player][i][2] ) else applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], 1 ) end end end end end end else removeTexture ( player, type, model, txd ) if config.repair[getElementModel(player)] then if config.repair[getElementModel(player)][type] then if config.repair[getElementModel(player)][type][model] then for i,v in pairs(config.repair[getElementModel(player)][type][model]) do if i == 'peito' or i == 'barriga' or i == 'ombro' or i == 'braco' or i == 'cotovelo' or i == 'coxa' or i == 'joelho' or i == 'calcanhar' or i == 'pe' then local pele = getElementData(player, 'Pele') or 1 if clothes[player][i] then pele = clothes[player][i][2] end applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], pele ) else if clothes[player][i] then applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], clothes[player][i][2] ) else applyTexture ( player, i, config.repair[getElementModel(player)][type][model][i], 1 ) end end end end end end end end end) addEventHandler('onClientResourceStart', resourceRoot, function() setTimer(function() if getElementData(localPlayer, 'ID') then triggerServerEvent('loadClothesNUMIDIA', localPlayer, localPlayer) end end, 10000, 1) end) Edited September 17 by Rekyuma
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