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>