• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua How to convert this code to SQLite

samuel157

Intermediate OT User
Joined
Mar 19, 2010
Messages
616
Solutions
4
Reaction score
122
Location
São Paulo, Brazil
GitHub
Samuel10M
LUA:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Cleanhouses" version="1.04" author="Dark" contact="otland.net" enabled="yes">
    <description>
        v.1.04 - Adicionado 'onlyNonPremium' configurável.
        Versão sem erros por favor caso não é avançado na área não modifique nada.
        Criado e modificado por Yan Liima Nick: [ADM] Night
        Este mod irá limpar casas de jogadores inativos e mover os seus itens para o depósito.
        Explicação das configurações:
        days - Se o jogador não tiver logado para este número de dias, sua casa será liberada.
        log - true/false, para habilitar o registro de quais casas foram limpas.
        file - Caminho para o arquivo de log, onde os logs serão armazenados. Ignorado se 'log' estiver como falso.
        onlyNonPremium - Se definido como 'true', o script irá limpar apenas as casas dos jogadores não premium.
        Outras indicações: NÃO remova doSaveServer() no final, caso contrário, se o servidor parar antes de salvar, você vai se arrepender =)
    </description>

    <globalevent name="cleanhouses" type="start" event="buffer">
        <![CDATA[
            local config = {
                days = 7,
                log = true,
                file = getDataDir() .. "/logs/cleanhouses.txt",
                onlyNonPremium = false
            }

            -- Consulta SQL para pegar casas de jogadores inativos
            local ns_query = [[
                SELECT houses.owner, houses.id AS hid, houses.name AS house_name, players.name
                FROM houses
                LEFT JOIN players ON players.id = houses.owner
                LEFT JOIN accounts ON players.account_id = accounts.id
                WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] .. config.days .. [[*24*60*60)
            ]] .. (config.onlyNonPremium and ' AND accounts.premdays = 0 ' or '') ..
            [[ AND players.world_id = ]] .. getConfigValue("worldId")

            -- Executa a consulta no banco de dados
            local house = db.getResult(ns_query)
            local logs = "Houses cleaned:\n\n"

            -- Verifica se existem casas para limpar
            if house:getID() ~= -1 then
                repeat
                    -- Adiciona a casa limpa ao log
                    logs = logs .. house:getDataString('house_name') .. ", owned by " .. house:getDataString('name') .. "\n"
                    -- Libera a casa, removendo o proprietário
                    setHouseOwner(house:getDataInt('hid'), 0)
                until not house:next()
                house:free()
            else
                logs = logs .. "There were no houses to clean."
            end

            -- Registra o log no arquivo, se habilitado
            if config.log then
                doWriteLogFile(config.file, logs)
            end

            -- Salva o servidor após a execução
            addEvent(doSaveServer, 1000)
        ]]>
    </globalevent>
</mod>
 
Back
Top