Jump to content

Contar arquivos em um meta


Recommended Posts

Posted

Há alguma maneira de eu saber quantos arquivos há em um meta.xml? ou quantas letras tem ou quantas linhas tem? E como verifico a existencia de um arquivo .lua tipo criar um verificador pra fazer algo caso exista um arquivo .lua especifico no resource

  • Other Languages Moderators
Posted

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"))

 

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