SH
dúvida

Deletando players inativos banco de dados.

Por ShockZz, 26 de nov. de 2013 em Scripts

dbcleaner
playersinativo
semlogar
resolvido
script
8
2k
ShockZzS
26 de novembro de 2013 às 00:54

Boa tarde pessoal, estou em busca de um script 8.6 tfs 0.4 para deletar players que não loguem na sua conta por TAL quantidade de dias.

 

Eu encontrei esse script aqui.

 

DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60

 

 

Que faz delete da DB dos players pela quantidade de dias e leveis informados no mesmo.

 

Porém, esse script, se executado, não vai apagar também os samples chares? :|

 

Pois não há nenhuma exceção nele, para que não seja feito isso...

 

 

Obrigado, aguardando retorno..

 

 

AlexclusiveA
26 de novembro de 2013 às 11:33

Cara, isso se chama query.

 

Para deletar TODOS os players, menos os Acc Man e os Samples, execute essa:

DELETE FROM `players` WHERE NOT `players`.`name` IN ("Account Manager", "Rook Sample", "Sorcerer Sample", "Druid Sample", "Paladin Sample", "Knight Sample");

Se você quiser usar a sua query:

DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60 

Como voce mesmo disse, isso pode fazer com que os samples e o Acc Man sejam deletados.

 

Se forem deletados, basta você executar essa:

INSERT INTO `players` (`id`, `name`, `world_id`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `save`, `skull`, `skulltime`, `rank_id`, `guildnick`, `lastlogout`, `blessings`, `balance`, `stamina`, `direction`, `loss_experience`, `loss_mana`, `loss_skills`, `loss_containers`, `loss_items`, `premend`, `online`, `marriage`, `promotion`, `deleted`, `description`, `created`, `nick_verify`, `old_name`, `hide_char`, `worldtransfer`, `comment`, `show_outfit`, `show_eq`, `show_bars`, `show_skills`, `show_quests`) VALUES
(1, 'Rook Sample', 0, 1, 1, 1, 0, 150, 150, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 50, 50, 7, '', 400, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 201660000, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '', 0, 0, '', 1, 0, '', 1, 1, 1, 1, 1),
(2, 'Sorcerer Sample', 0, 1, 1, 8, 1, 185, 185, 0, 0, 0, 0, 0, 128, 0, 0, 35, 35, 0, 0, 2, 0, 0, 0, '', 600, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 201660000, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '', 0, 0, '', 1, 0, '', 1, 1, 1, 1, 1),
(3, 'Druid Sample', 0, 1, 1, 8, 2, 185, 185, 0, 0, 0, 0, 0, 128, 0, 0, 35, 35, 0, 0, 2, 0, 0, 0, '', 600, 0, 1302858859, 16777343, 0, 0, 0, 0, '', 0, 0, 0, 201660000, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '', 0, 0, '', 1, 0, '', 1, 1, 1, 1, 1),
(4, 'Paladin Sample', 0, 1, 1, 8, 3, 185, 185, 0, 0, 0, 0, 0, 128, 0, 0, 35, 35, 0, 0, 2, 0, 0, 0, '', 600, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 201660000, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '', 0, 0, '', 1, 0, '', 1, 1, 1, 1, 1),
(5, 'Knight Sample', 0, 1, 1, 8, 4, 185, 185, 0, 0, 0, 0, 0, 128, 0, 0, 35, 35, 0, 0, 2, 0, 0, 0, '', 600, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 201660000, 0, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '', 0, 0, '', 1, 0, '', 1, 1, 1, 1, 1);

Espero que sirva pra algo...

ShockZzS
26 de novembro de 2013 às 12:43

Obrigado Alex,

 

Assim, gostaria de executar a minha query mas sem deletar os samples e acc manager. É possível você me passar uma única query que faça isto?

 

Não desejo apagar todos os players não, somente os que selecionei conforme o tempo do login mesmo.

 

Abraço.

AlexclusiveA
26 de novembro de 2013 às 13:22

Não tem problema excluir eles, ti passe a query de adiciona-los novamente.


Tem bastante query aqui: http://www.xtibia.com/forum/topic/210666-phpmyadmin-comandos-para-editar-database/

 

Abraço

Editado Novembro 26 por Alexclusive

ShockZzS
26 de novembro de 2013 às 14:28

É eu tenho a query dos meus samples aqui.. tão editados e tal.

 

Mas queria uma que não excluisse eles..

Vou dar uma pesquisada de novo..

Creio que seja simples...

AlexclusiveA
26 de novembro de 2013 às 15:43
DELETE FROM `players` WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60 WHERE NOT `players`.`name` IN ("Account Manager", "Rook Sample", "Sorcerer Sample", "Druid Sample", "Paladin Sample", "Knight Sample");

Pode ser que funcione...recomendo que você crie um backup da DB e tente.

Editado Novembro 26 por Alexclusive

ZarussZ
26 de novembro de 2013 às 22:26

Alex fui executar essa query e deu esse erro:

Error while executing query: foreign key constraint failed
sabe arruma?
2 meses depois...
zipter98Z
15 de janeiro de 2014 às 21:44

Tópico movido para a seção de dúvidas e pedidos resolvidos.