Ir para conteúdo
  • 0

[Pedido] Anti-Bot Diferente


lucas502

Pergunta

Ae galera blza, então, eu to precisando de um anti bot assim:

 

o script checka de tempo em tempo (configuravel), os players que estão usando bot à 5 horas (configuravel), se essas 5 horas estourarem, e o player estiver usando a 6 horas bot por exemplo, ele será movido para uma PZ Zone (configuravel)

 

Aguardo, vlw!

 

 

Objetivo: Limitar o tempo de uso do BOT

 

ou pode ser, no lugar de mover para uma pz zone, kickar o player. Ou ainda qualquer sistema de anti bot, mas que não de ban no player..

 

vlw

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Não vai conseguir um anti-bot que identifica um bot, nem o tibia global conseguiu.

 

 

http://www.xtibia.co...nti-bot-system/

Usa esse sistema, em nessa primeira parte, você troca:

 

 

Eita poha, bugo tudo aqui.. vê o script abaixo do jhon.

 

 

Acho que deve funcionar

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

  • 0

Ja que o spoiler do Vilden não ficou certinho, vou mostrar oque tem que fazer pra teleporta ao templo.

Primeiro tu vai instalar todo o script do "Antha Anti-Bot System".

Depois abrir o arquivo "anthaab.lua" da pasta globalevents/scripts e trocar tudo que tem dentro por isso:

function onThink(interval, lastExecution)
for x=1,#getOnlinePlayers() do
if getPlayerAccess(getCreatureByName(getOnlinePlayers()[x])) < 4 and (not isPlayerPzLocked(getCreatureByName(getOnlinePlayers()[x]))) and getOnlinePlayers()[x] ~= "Account Manager" then
 if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564) == -1 then
	 local numero = math.random(0,99999)
	 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: '..numero..'. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.')
	 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564,numero)
 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == -1 then
	 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,1)
	 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será teleportado ao templo.')
 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then
        doTeleportThing(getOnlinePlayers()[x], getTownTemplePosition(getPlayerTown(getOnlinePlayers()[x])))
	 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1)
 end
end
end
   return TRUE
end

 

Agora essa tag no globalevents.xml:

<globalevent name="anthaab" interval="900" event="script" value="anthaab.lua"/>

O interval="900" faz o script executar a todos os players online a cada 15 minutos, ja que você quer verificar a cada 5 horas troque o 900 por 18000. Ficando assim:

<globalevent name="anthaab" interval="18000" event="script" value="anthaab.lua"/>

Link para o comentário
Compartilhar em outros sites

  • 0

Jhon, teria como fazer também pra não mandar o sistema de resposta pros que estiverem treinando?

 

tipo, eu quero q o sistema mande somente pros q estiverem caçando, e não pros q estiverem treinando nos trainers entende?

 

Vlw! aguardo

Link para o comentário
Compartilhar em outros sites

  • 0

local trainerNames = {"Training Monk","Trainer"} -- põe o nome de todo tipo de trainer do seu servidor.

function onThink(interval, lastExecution)
for x=1,#getOnlinePlayers() do
if getPlayerAccess(getCreatureByName(getOnlinePlayers()[x])) < 4 and (not isPlayerPzLocked(getCreatureByName(getOnlinePlayers()[x]))) and getOnlinePlayers()[x] ~= "Account Manager" and (not isInArray(trainerNames, getCreatureName(getCreatureTarget(cid)))) then
	 if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564) == -1 then
			 local numero = math.random(0,99999)
			 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: '..numero..'. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.')
			 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564,numero)
	 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == -1 then
			 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,1)
			 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será teleportado ao templo.')
	 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then
	 doTeleportThing(getOnlinePlayers()[x], getTownTemplePosition(getPlayerTown(getOnlinePlayers()[x])))
			 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1)
	 end
end
end
return TRUE
end

 

Caso sua dúvida tenha sido resolvida, use o "Denunciar" abaixo do post para reportar o tópico fazendo assim com que ele seja movido para área de Pedidos Atendidos, deixando a comunidade mais limpa e organizada.

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

  • 0

Jhon, fiquei pensando aqui.

 

 

Se o player tiver em war, e esse sistema entrar e fizer a pergunta pro player, se ele responder errado de propósito, ele vai ser movido pro templo mesmo assim? (tipo se aproveitar do sistema pra escapar de pk/war/etc)

 

Vai funcionar esse problema?

 

E outra, como eu defino a palavra do sistema tipo: !anthaab Xresposta para: !bot Xresposta

 

!?

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

  • 0

Pra mudar o talk de !anthaab pra !bot, basta ir no arquivo data/talkactions/talkactions.xml e procura por:

<talkaction words="!anthaab" event="script" value="anthaab.lua"/>

sóh trocar por:

<talkaction words="!bot" event="script" value="anthaab.lua"/>

 

-------------

 

Agora pra tirar o outro erro, vai em data/creaturescripts/scripts, cria um arquivo e nomeia para "botTeste" sem as aspas e nele cole:

function onCombat(cid, target)
if isPlayer(target) then
setPlayerStorageValue(cid, 34951, 1)
else
setPlayerStorageValue(cid, 34951, -1)
end
return true
end

 

No creaturescripts.xml cole a tag:

<event type="combat" name="BotTeste" event="script" value="botTeste.lua"/>

 

E no login.lua, antes do último return true põe:

registerCreatureEvent(cid, "BotTeste")

 

E troca o anthhab do globalevents por esse:

local trainerNames = {"Training Monk","Trainer"} -- põe o nome de todo tipo de trainer do seu servidor.

function onThink(interval, lastExecution)
for x=1,#getOnlinePlayers() do
if getPlayerAccess(getCreatureByName(getOnlinePlayers()[x])) < 4 and (not isPlayerPzLocked(getCreatureByName(getOnlinePlayers()[x]))) and getOnlinePlayers()[x] ~= "Account Manager" and getPlayerStorageValue(cid, 34951) < 0 and (not isInArray(trainerNames, getCreatureName(getCreatureTarget(getOnlinePlayers()[x]))))) then
			 if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564) == -1 then
							 local numero = math.random(0,99999)
							 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: '..numero..'. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.')
							 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564,numero)
			 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == -1 then
							 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,1)
							 doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será teleportado ao templo.')
			 elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then
			 doTeleportThing(getOnlinePlayers()[x], getTownTemplePosition(getPlayerTown(getOnlinePlayers()[x])))
							 setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1)
			 end
end
end
	return TRUE
end

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

  • 0

Pera não entendi, antes era uma tag no globalevents, agora eh tag no talkactions?

 

 

o.O

 

Tipo..no primeiro post que postou sobre o script, vc me mandou uma tag do globalevents,

 

agora me mandou uma tag do talkactions (sendo q o script ta na pasta de globalevents), não entendi ainda

 

poderia explicar melhor, onde e o que colocar em cada "coisinha" ? :D

 

vlw

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

  • 0

Faz oque eu disse aew e deu. sadhusada

 

Explicando:

O sistema é executado no globalevents mais para responder é usado a talkaction. Por isso que tem que modificar a talkaction também.

A parte de creaturescripts foi feita pra identificar se tu ta atacando um player ou um monster dae set um determinado storage.

E a última modificação no globalevents foi feita pra o script só executar se ele não tiver atacando player.

Link para o comentário
Compartilhar em outros sites

  • 0

ta mas o que eu não entendi foi que NÃO EXISTE o script anthaab.lua no talkactions entendeu? só tem no globalevents, eu to dizendo que o script do talkactions vc nao botou aki o.O

Link para o comentário
Compartilhar em outros sites

  • 0

Aew jhon, tem algo errado no seu script.

 

Aqui não tá funcionando, o ultimo globalevents que você postou, nem manda a mensagem com o numero de confirmação pros players.

 

 

O primeiro globalevents, ele manda o numero de confirmação pros players, mas não teleporta pro templo (não acontece nada se eu ficar esperando, fica sempre repetindo "Ultimo aviso...")

 

 

PS: Testei o globalevents do script original do anthaab, o dele ta funcionando perfeitamente só que ta banindo e tá mandando mensagem até pros players nos trainers, e eu não quero isso.

 

Quero que mova para o templo, e que não seja mandado pros players que estiverem trainer.

 

 

Ah, mais um detalhe, eu percebi que o script funciona como um "todo". Somente vai banir ou mover o player pro templo, depois que o globalevent do mesmo script for ativado no interval. Não teria como fazer 2 coisas separadas?

 

Por exemplo:

1º - O Script de mandar o numero de confirmação pro player rodar de 1 em 1 hora.

2º - O Script de checkar se ele respondeu ou não o numero, de 5 em 5 minutos. (Para dar uma tolerância do player responder em no maximo 5 minutos, e não esperar rodar o script todo novamente em 1 hora)

 

 

Erro no primeiro globalevent que você postou:

[3:26:24.644] [Error - GlobalEvent Interface]
[3:26:24.644] data/globalevents/scripts/anthaab.lua:onThink
[3:26:24.645] Description:
[3:26:24.646] (luaDoTeleportThing) Thing not found

 

 

Revise o script por favor jhon, muito obrigado!

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...