Jump to content

Contar arquivos em um meta


Recommended Posts

  • Other Languages Moderators

Olá, @KiritoAguiar!

Existe sim essa maneira. Você pode usar estas funções: xmlLoadFile, xmlNodeGetChildren, xmlNodeGetAttribute e xmlUnloadFile. Fiz um exemplo abaixo de como usá-las, já resolvendo o seu problema. Comentei as linhas para que você possa entender melhor.

local validNodeNames = { ["script"] = true, ["file"] = true }

function getFilesFromMeta(resourceName)
    local files = {} -- Uma tabela para armazenar os arquivos.
    local path = (":%s/meta.xml"):format(resourceName) -- Criamos o caminho para o meta.xml.
    
    if fileExists(path) then -- Checa se o caminho existe.
        local meta = xmlLoadFile(path) -- Carregamos o meta.xml.
        if not meta then -- Se não carregar corretamente, então cancelaremos a execução do código abaixo.
            return false
        end
        
        local nodes = xmlNodeGetChildren(meta) -- Obtém aquelas tags dentro do meta.xml (file, script, etc)
        for i, v in pairs(nodes) do -- Fazemos um loop nessas tags.
            local nodeName = xmlNodeGetName(v) -- Aqui, estamos obtendo o nome dessas tags.
            if validNodeNames[nodeName] then -- Criei uma tabela simples para filtrar o tipo de tag que eu desejo. Nesse caso, só 'script' e 'file' mesmo.
                local attrPath = xmlNodeGetAttribute(v, "src") -- Iremos pegar o caminho que o arquivo está, por exemplo: server/config/main.lua
                
                files[#files + 1] = { path = attrPath, type = nodeName } -- Coloca a informação de caminho e tipo do arquivo dentro da tabela.
            end
        end
        
        xmlUnloadFile(meta) -- Descarrega o meta.xml, removendo-o da memória.
        return files -- Retorna a tabela pronta para nós.
    end
    return false
end

-- Usei o # aqui para obter o total de scripts e files (juntos), dentro do resource admin.
iprint(#getFilesFromMeta("admin"))

 

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...