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)