Jump to content

[Clean House] Remover casas de quem não loga


Recommended Posts

  • Diretor

Olá galera do Xtibia, venho hoje trazer um sistema muito útil como pode ver no Título ele remove casa dos players que não logam mais.

 

Explicação:

Sabe aqueles players filho da mãe que compram as melhores casas e não logam mais no servidor e enche a porra da casa de item pros novos players não comprar? Pois é esse sistema dara um jeito nesses safados! xD

 

Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado/ligado, ou seja: Quando o servidor ligar ele irá verificar os players que não logam a X dias (configurável) e então expulsa-los da casa movendo seus items para o depot deixando a casa sem dono.

 

Bom chega de explicação e vamos ao que interessa;

Na pasta principal do servidor, onde fica a distro que roda o servidor e tudo mais, entre na pasta MODS e crie um arquivo com o nome de cleanhouses.xml e dentro coloque o seguinte codigo:

<?xml version="1.0" encoding="UTF-8"?><mod name="Cleanhouses" version="1.04" author="Yan Liima-Night" contact="xtibia.com" 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 de sua casa será liberado.            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' definido como falso            onlyNonPremium - se definido como 'true', o script irá limpar apenas as casas dos jogadores que não lougou X dias.					Outras indicações:			NÃO remova doSaveServer() no final, caso contrário, se o servidor parar de funciona antes que o servidor salve você vai se arrepender =)    </description>    <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[		        local config = {             days = 60,            log = true,            file = getDataDir() .. "/logs/cleanhouses.txt",	    onlyNonPremium = true        }						        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")		        local house = db.getResult(ns_query)        local logs = "  Houses cleaned:\n\n"        if house:getID() ~= -1 then            repeat                logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n"                setHouseOwner(house:getDataInt('hid'), 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)		    ]]></globalevent></mod>

Pronto, salve e feche.

 

Toda vez que o servidor iniciar irá expulsar os players que não logam aos dias configuráveis.

 

Como configurar:

days = 60 * É o número em DIAS que o player terá que ficar sem logar para perder a casa.

 

Aconselho a não mexer, caso queira modificar algo aconselho ser avançado na área para não causar error no sistema.

 

Este sistema funciona em qualquer TFS.

 

Créditos

Yan Liima

 

Bom eu tinha publicado um post igual esse faz anos so que não lembro minha conta, e pegaro meu post postaro em outro fórum que não merece ser citado com outros créditos estou apenas avisando.

 

 
 
 
 
Te ajudei?? REP + e ficamos quites...

happy.png

 
 
 
 
Atenciosamente,
 
Yan Liima
 
Abraços!
Link to comment
Share on other sites

  • Diretor

Devidos créditos do que chapa? Que eu saiba a script não é sua não foi tu que criou ;) unica coisa que peguei foi sua explicação xD se quiser ganha créditos pela explicação so fala pow eu ponho aqui :)

Link to comment
Share on other sites

  • 2 weeks later...

Rep + adoro seus trabalhos, mais você podia postar mais de suas script aqui faz anos que não vejo você postando script suas, Liga pro absolute não ele é cheio de roubar script e mudar créditos.

Link to comment
Share on other sites

  • 9 months later...

Está dando esse erro OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP ( 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() - 60*24*60*60)
AND accounts.premdays=0 AND players.world_id =0)

Link to comment
Share on other sites

  • Diretor

Está dando esse erro OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP ( 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() - 60*24*60*60)

AND accounts.premdays=0 AND players.world_id =0)

 

Você usa SQLITE certo? este MOD so funciona em Mysql. :/

Link to comment
Share on other sites

  • 8 months later...
×
×
  • Create New...