• 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!

Remove house owner!

aod ot

New Member
Joined
May 1, 2011
Messages
47
Reaction score
0
I want a script that works on 0.3.6pl1 8.54
when owner of a house didnt log in for 14days house owner will be removed and anyone can buy it, items will be removed to.

Rep++
 
In Mods, name it "Clean houses mod"

Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Clean houses mod" version="1.0" author="nsanee" contact="otland.net" enabled="yes">
    <description>
        This mod will clean houses of inactive players and move their items to the depot.
 
        config explained:
 
            days - If the player hasn't logged in for this number of days his house will be freed.
            log - true/false, whether to enable logging of which houses have been cleaned.
            file - path to the log file, where logs will be stored. Ignored if 'log' set to false
 
            DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =)
    </description>
 
    <config name="cleanhouses_conf"><![CDATA[
 
        config = { 
            days = 7,
            log = true,
            file = getDataDir() .. "/logs/cleanhouses.txt"
        }
 
    ]]></config>
    <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[
        domodlib('cleanhouses_conf')
        local house = db.getResult("SELECT `owner` ,`id` FROM `houses` WHERE `owner` IN (SELECT `id` FROM `players` WHERE `lastlogin` < UNIX_TIMESTAMP() - "..config.days.. "*24*60*60)")
        local logs = " :: Houses cleaned:\n\n"
        if house:getID() ~= -1 then
            repeat
                logs = logs .. getHouseInfo(house:getDataInt('id')).name ..", owned by " .. getPlayerNameByGUID(house:getDataInt('owner')) .. "\n"
                setHouseOwner(house:getDataInt('id'), 0)
            until not house:next()
        else
            logs = logs .. "There were no houses to clean."
        end
        if config.log then
            doWriteLogFile(config.file, logs)
        end
        doSaveServer()
    ]]></globalevent>
</mod>
 
This is MOD but u can use OUTDATED

globalevents.xml
Code:
<globalevent name="cleanhouses" type="start" event="script" value="cleanhouses.lua"/>

globalevents\scripts\cleanhouses.xml
Code:
local config = { 
    days = 14,
    log = true,
    file = getDataDir() .. "/logs/cleanhouses.txt"
}    
local ns_query =[[ SELECT houses.owner,houses.id,players.name FROM houses
                LEFT JOIN players ON players.id=houses.owner
                WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60)
                AND
                players.world_id =]] .. getConfigValue("worldId")

function onStartup(_time)

    local house = db.getResult(ns_query)
    local logs = " :: Houses cleaned:\n\n"
    if house:getID() ~= -1 then
        repeat
            logs = logs .. getHouseInfo(house:getDataInt('id')).name ..", owned by " .. house:getDataString('name') .. "\n"
            setHouseOwner(house:getDataInt('id'), 0)
        until not house:next()
        house:free()
    else
        logs = logs .. "There were no houses to clean."
    end
    if config.log then
        doWriteLogFile(config.file, logs)
    end
    addEvent(doSaveServer, 1000)
end

Author:
nsanee
 
Back
Top