Ir para conteúdo

Deletador De Chars Inativos


henriquece

Posts Recomendados

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 :)

Link para o comentário
Compartilhar em outros sites

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 :P:

Editado por Digaao
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

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 ?

Link para o comentário
Compartilhar em outros sites

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"/>

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...