JH
action

DELETAR PLAYERS OFFLINE POR TEMPO

Por jhowzikah, 01 de set. de 2015 em Scripts

deletar
excluir
players
deletar players
21
4.2k
jhowzikahJ
04 de setembro de 2015 às 13:37

Você pode fazer assim com a talkaction, já que utiliza sqlite:

function onSay(cid, words, param)
	param = tonumber(param)
	if not param then
		doPlayerSendCancel(cid, "Digite o parametro.")
		return false
	end

	db.query("DELETE FROM `players` WHERE `level` < 50 AND `name` <> `Account Manager` AND `lastlogin` < " .. param  - 20 * 24 * 60 * 60 .. ";")
	return true
end
Ai você acessa esse site:

http://www.tutorialspoint.com/mysql_terminal_online.php

 

E utiliza a função:

SELECT UNIX_TIMESTAMP();
Você terá um resultado semelhante a este:

+------------------+

| UNIX_TIMESTAMP() |

+------------------+

| 1441383476 |

+------------------+

1 row in set (0.00 sec)

 

Ai basta utilizar o comando, por exemplo:

/dbclean 1441383476

 

Como não é um camando que vai ser usado toda hora, vale a pena tentar.

 

 

Problema:

[04/09/2015 13:34:28] [Error - TalkAction Interface]
[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:onSay
[04/09/2015 13:34:28] Description:
[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:8: attempt to call field 'query' (a nil value)
[04/09/2015 13:34:28] stack traceback:
[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:8: in function <data/talkactions/scripts/dbclean.lua:1>
BrunoB
04 de setembro de 2015 às 14:00

Problema:

[04/09/2015 13:34:28] [Error - TalkAction Interface]

[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:onSay

[04/09/2015 13:34:28] Description:

[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:8: attempt to call field 'query' (a nil value)

[04/09/2015 13:34:28] stack traceback:

[04/09/2015 13:34:28] data/talkactions/scripts/dbclean.lua:8: in function <data/talkactions/scripts/dbclean.lua:1>

Editei, tenta dnv.

zipter98Z
04 de setembro de 2015 às 14:01
Troque:
db.query
por:
db.executeQuery

Esta correção também serve para aquele código que você mostrou no tópico.

 

Editado Setembro 4 por zipter98

jhowzikahJ
04 de setembro de 2015 às 20:56

 

Troque:
db.query
por:
db.executeQuery

Esta correção também serve para aquele código que você mostrou no tópico.

 

 

[Warning - Event::loadScript] Event onSay not found (data/talkactions/scripts/deleteplayer.lua)

Editei, tenta dnv.

deu erro:

 

 

 

[04/09/2015 20:49:19] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP (SELECT "id","name","account_id" FROM "players" WHERE "level" < 11 AND "name" NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND "group_id" < 2 AND "lastlogin" < UNIX_TIMESTAMP() - 432000;)
[04/09/2015 20:49:19] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP (SELECT "id","name","account_id" FROM "players" WHERE "level" < 20 AND "name" NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND "group_id" < 2 AND "lastlogin" < UNIX_TIMESTAMP() - 1296000;)
[04/09/2015 20:49:19] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP (SELECT "id","name","account_id" FROM "players" WHERE "level" < 50 AND "name" NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND "group_id" < 2 AND "lastlogin" < UNIX_TIMESTAMP() - 2592000;)
[04/09/2015 20:49:19] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP (SELECT "id","name","account_id" FROM "players" WHERE "level" < 100 AND "name" NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND "group_id" < 2 AND "lastlogin" < UNIX_TIMESTAMP() - 5184000;)
[04/09/2015 20:49:19] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such function: UNIX_TIMESTAMP (SELECT "id","name","account_id" FROM "players" WHERE "level" < 130 AND "name" NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND "group_id" < 2 AND "lastlogin" < UNIX_TIMESTAMP() - 7776000;)

Ok, me desculpe.

 

No script que o Bruno postou, foi o que você conseguiu rodar, certo ?

Procure por esta linha:

result = db.getResult("SELECT `id`,`name`,`account_id` FROM `players` WHERE `level` < ".. cleanup[i].level .." AND `name` NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND `group_id` < 2 AND `lastlogin` < UNIX_TIMESTAMP() - ".. cleanup[i].time ..";")

E substitua por essa

result = db.getResult("SELECT `id`,`name`,`account_id` FROM `players` WHERE `level` < ".. cleanup[i].level .." AND `name` NOT IN('Account Manager', 'Sorcerer Sample', 'Druid Sample', 'Paladin Sample', 'Knight Sample', 'Rook Sample') AND `group_id` < 2 AND `lastlogin` < datetime('now', 'unixepoch', 'localtime') - ".. cleanup[i].time ..";")

Lembrando que faça sempre com um backup.

Cara, parece que funcionou kkkk, nao deu nenhum erro aqui na distro... vou tentar configurar pra 2 dias offline e aprovietar que irei viajar esse fds... ai quando voltar ja testo e te aviso, se puder me mandar uma PM com seu whatsapp, skype, sei la, manda...

1 mês depois...
07 de outubro de 2015 às 19:15

Bao noite queria saber se os comandos que Felipe Moraes funciono.

3 meses depois...
LumusL
20 de janeiro de 2016 às 16:27

Tópico Movido
Este tópico foi movido de "OTServScriptingSuporte Scripting"
para "OTServScriptingSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".