TOPIC IGUAL , REPORTADO
http://www.xtibia.com/forum/topic/169372-deletador-de-chars-inativos/
info
Grupo: Campones
Registrado: 21/08/11
Posts: 21
Reputação: +2
Char no Tibia: Meu pau de Toca

info
Grupo: Herói
Registrado: 22/04/11
Posts: 2.5k
Reputação: +293
Gênero: Masculino
Char no Tibia: Thyn Zare

Outro tópico deletado.
Até.
Eai, fiz um globalevents que apaga os chars que estão inativos a 60 dias.
Em globalevents/scripts crie um arquivo e nele coloque isto:
--< Created by Digaao for xtibia >--
function onTimer()
local rguild = true -- se o player for dono de uma guild apagar a guild
local nologin = false -- deletar quem nunca logou (nao importa o tempo)
local time = 60 * 24 * 60 * 60 -- tempo em segundos de inatividade para deletar
local nlogin = ""
if nologin == false then
nlogin = " AND `p`.`lastlogin` > 0 "
end
local tmp = db.getResult("SELECT `p`.`id` AS id, `g`.`id` AS guild, `g`.`ownerid` AS `dono` FROM `players` p LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `p`.`lastlogin` < " .. os.time() - time .. nlogin .. ";")
if tmp:getID() ~= -1 then
repeat
local guid = tmp:getDataInt("id")
local guild = tmp:getDataInt("guild")
local dono = tmp:getDataInt("dono")
local house = getHouseByPlayerGUID(guid)
if type(house) == "number" and house > 0 then
cleanHouse(house)
setHouseOwner(house, NO_OWNER_PHRASE,true)
end
db.executeQuery("DELETE FROM player_skills WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM guild_invites WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_items WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_depotitems WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_spells WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_storage WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_viplist WHERE player_id = " .. guid .. ";")
db.executeQuery("DELETE FROM player_deaths WHERE player_id = " .. guid .. ";")
if rguild == true and guid == dono then
local tg = db.getResult("SELECT id FROM guild_ranks WHERE guild_id = " .. guild .. ";")
if tg:getID() ~= -1 then
repeat
local rank = tg:getDataInt("id")
db.executeQuery("UPDATE players SET rank_id = 0 AND guildnick = '' WHERE rank_id = " .. rank .. ";")
until not tg:next()
tg:free()
end
db.executeQuery("DELETE FROM guild_ranks WHERE guild_id = " .. guild .. ";")
db.executeQuery("DELETE FROM guild_invites WHERE guild_id = " .. guild .. ";")
db.executeQuery("DELETE FROM guilds WHERE id = " .. guild .. ";")
end
db.executeQuery("DELETE FROM players WHERE id = " .. guid .. ";")
until not tmp:next()
tmp:free()
end
return true
end
E no arquivo globalevents.xml coloque esta tag:
<globalevent name="inativos" time="00:00" event="script" value="nome do seu script.lua"/>
Bom é isso, lembrando que em alguns ots algumas coisas mudam, se der algum erro como:
[Warning - Event::loadScript] Event onTime not found
Vá no script procure function onTimer() e troque por function onTime().
E se ocorrer um erro assim:
attempt to call field 'executeQuery' (a nil value)
Vá no script e troque todos os db.executeQuery por db.query
Bom é isso ![]()
Editado Outubro 29 por Digaao
info
Grupo: Campones
Registrado: 20/05/11
Posts: 0
Reputação: 0
Char no Tibia: Cebola

Vou Testar Aqui, Obrigado, A E O Fato De Dois Topicos Iguais, E Que Quando Eu Estava Postando O Outro Vi Que Tinha Esquecido De Por Uns Negosio, Dai Eu Cliquei La Na Flechinha De Voltar, Mais Mesmo Assim Postou, Dai Ficou Dois Disculpa...
Aa =/ Nao Deu =/ Eu Botei Igual Voce Feis, Ate Tentei Tira O R Do Timer Mais Mesmo Assim Nao Deu, APareceu Esse Erro [28/10/2011 11:53:23] [Error - GlobalEvent::configureEvent] No interval for GlobalEvent.
[28/10/2011 11:53:23] [Warning - BaseEvents::loadFromXml] Can not configure event
Tem Como Me Ajudar ?
Fiz uma alteração nele, se continuar o erro poste como você colocou a tag no arquivo globalevents.xml!
info
Grupo: Campones
Registrado: 20/05/11
Posts: 0
Reputação: 0
Char no Tibia: Cebola

Mesmo Erro
[31/10/2011 13:07:59] [Error - GlobalEvent::configureEvent] No interval for GlobalEvent.
[31/10/2011 13:07:59] [Warning - BaseEvents::loadFromXml] Can not configure event
Botei Assim La
<globalevent name="inativos" time="00:00" event="script" value="chars.lua"/>
info
Grupo: Campones
Registrado: 20/05/11
Posts: 0
Reputação: 0
Char no Tibia: Cebola

Alguem me Ajuda Porfavor ...... Estou Precisando Muito =// Meu Server Esta Ficando Com Muitos Players E O SQL Studio Esta Demorando Muito Para Abrir =/
info
Grupo: Campones
Registrado: 20/05/11
Posts: 0
Reputação: 0
Char no Tibia: Cebola
Tipo do script: Action (Eu Acho)
Protocolo (versão do Tibia): 8.4
Servidor utilizado: The Forgotten Server
Nível de experiência: Medio
Adicionais/Informações: Bom Galera To Com Uma Duvida Muito Mal =/ Poxa Procurei Por Tudo E Nao Consigui Achar Um Que Funciona-se, Bom Afinal, Eu Queria Algum Tipo De Script Ou Algum Programa Que Deletace Automaticamente Chars Que Ficassem Sem Entrar No Ot Por 60 Dias, To Precisando Muito Disso Pois Nao Estou Mais Consiguindo Deletar Os Chars Pelo Programa SQLiteStudio Dai Fica Aquele Monte De Chars, Porque Tem Gente Que Entra Fais A Conta So Para Consiguir Dinheiro E Nao Entra Mais, Espero Muito A Ajuda De Voceis. Obrigado Espero Por Boas Respostas