AN

Antha Anti-Bot System

Por Antharaz, 25 de fev. de 2010 em Globalevents e Spells

script
20
10k
AntharazA
25 de fevereiro de 2010 às 19:39

{T}ive um idéia babaca enquanto estava atoa em casa...

 

.-.

 

porque não fazer um anti-bot system?

 

lol

 

Gtz champz!!! ¬¬

 

 

 

 

{A}lguns detalhes do sistema:

 

1º - Para não atrapalhar wars ele não faaz a verificação o player está PZ Locked.

 

2º - Se você der logout sem fazer a verificação, ao entrar novamente ele lhe informará o último código não confirmado por você.

 

3º - Os gods/gms/account managers não recebem nenhuma msg por motivos óbvios.

 

 

 

 

{E}m globalevents.xml localizado na pasta data\globalevents coloque a linha abaixo antes de </globalevents>:

 

 

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

 

 

 

{A}pós fazer isto, vamos criar o script correspondente ao evento. Crie um arquivo chamado anthaab.lua em data\globalevents\scripts com o code abaixo:

 

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á banido.')
    elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then
        doAddAccountBanishment(getAccountIdByName(getOnlinePlayers()[x]))
        setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1)
        doRemoveCreature(getCreatureByName(getOnlinePlayers()[x]))
    end
end
end
   return TRUE
end

 

 

 

 

{A}gora vá em talkactions.xml na pasta data/talkactions e adicione a linha abaixo antes de </talkactions>:

 

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

 

{A}gora em data/talkactions/scripts crie um arquivo chamado anthaab.lua com o code abaixo:

 

 

function onSay(cid, words, param, channel)
if getPlayerAccess(cid) > 3 then
return false
elseif getPlayerStorageValue(cid,9564) == -1 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Você ainda não recebeu um novo número de confirmação anti-bot.')
elseif tonumber(param) == getPlayerStorageValue(cid,9564) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Confirmado com sucesso. Bom jogo.')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Antha anti-bot system by Antharaz')
setPlayerStorageValue(cid,9564,-1)
setPlayerStorageValue(cid,9565,-1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING,'Número de confirmação errado. O seu número de confirmação é '..getPlayerStorageValue(cid,9564)..'.')
end
return true
end

 

 

{A}gora vá em data\creaturescripts\scripts, abara o arquivo login.lua e coloque o código abaixo antes do return true:

 

if getPlayerStorageValue(cid,9564) > -1 then
doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,'Você não confirmou seu último número do sistema anti-bot. Ele é: '..getPlayerStorageValue(cid,9564)..'.')
end

 

 

 

 

{V}ídeo:

 

http://www.screencast.com/t/MmM5NjFiY

 

PS:.. o vídeo demora um pouco para começar mesmo...

Editado Fevereiro 26 por Antharaz

VildenV
26 de fevereiro de 2010 às 01:25

Poderia colocar como o script funciona, o que ele faz, sei que tem o vídeo

mais muitas pessoas não podem assistir por ter conexão baixa, como eu.

 

Parece estar muito legal a script é 100% sua??

(caso não for bote os créditos)

 

 

Rep+

 

Continue trazendo conteúdo ao Xtibia.com!

AntharazA
26 de fevereiro de 2010 às 09:34

@vilden

 

sim... script 100% meu...

 

=x

 

Como funciona:

 

A cada intervvalo de tempo o sv fará uma checagem e mandará uma msg para todos players...

 

caso o player ainda não tenha recebido o número de checagem ou que já tenha confirmado o último: Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: NUMERO ALEATÓRIO. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.

 

Caso o player ainda não tenha confirmado o último número: Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será banido.

 

Caso ele não tenha confirmado o número mesmo depois do último aviso ele será banido.

 

 

 

 

 

 

Se o player falar !anthaab NÚMERO ERRADO: o sv mandará uma msg para ele informando o número certo.

 

 

Se o player falar !anthaab NÚMERO CERTO: o sv mandará uma msg para ele informando que foi confirmado com sucesso.

nilton123N
28 de fevereiro de 2010 às 21:42

cara eu queria saber onde e o lugar q muda o tempo que a verificaçao e feita

Exemplo: eu queria q a verificaçao fosse feita de 3 em 3 horas,o que eu boto e onde eu boto?

Obs: belo trabalho!!

Editado Fevereiro 28 por nilton123

CosakiC
02 de março de 2010 às 09:23

ao certo ponto e util por exemplo, para server que não toleram bot em treiners, mais por exemplo deixei meu char afk no DP. ele vai pedir não vai ter como eu responder, dai seria um ban injustamente. acho que cairia bem se pudesse colocar ele por área dai colocava nos treiners.

---

belo script :)

Editado Março 2 por Cosaki

AntharazA
03 de março de 2010 às 09:59

@nilton123

 

lá na linha que você adicionou em globalevents.xml tem uma parte assim:

 

interval="900"

 

Esse 900 é o tempo em SEGUNDOS. Caso queira 3 horas, troque o 900 por 10800

 

 

 

 

 

@Cosaki

 

Vamos supor q seu char ta afk no dp e você coloque o tempo de verificação 10 min...

 

Depois de ficar 10 min afk ele manda a 1ª msg com o número. Depois de mais 10 min ele dá o último aviso e logo depois, com mais 10 min, se o player n tiver feito a verificação que ele leva ban...

 

Provavelmente você vai ser kickado pelo server antes de fica 30 min afk.

2 semanas depois...
deevillD
14 de março de 2010 às 07:56

é eu tambem achoo aquele negocio do afk !

o cara fika afk no dp ,e ser banidoo, nao tem como criar so para tomar ban caçando ,em lugares de hunting !

1 mês depois...
ViciosOTV
18 de abril de 2010 às 09:31

vdd... o cara afk no dp euuehueh

 

nem pensei nisso ja ia bota no ot!

DXtibiaXDD
18 de abril de 2010 às 13:42

Adorei o sistemy bom pra ot serio =)

 

mereçe ser fixo

1 mês depois...
levy1233L
08 de maio de 2010 às 07:29

ótimo sistema :]

 

realmente muito bom, estava atrás de um desses ;x

 

bom trabalho !

Editado Maio 8 por castro2732

9 meses depois...
Lord'Of ShadowL
28 de fevereiro de 2011 às 15:11

Uma duvida, de quanto tempo seria o ban? Tem como modificar isso?

 

Se puder me responde, agradeço desde já

 

Abraços..

BodyGriloB
05 de março de 2011 às 22:27

Antharaz tem como em vez do player ser banido, só kickar ele?

VodkartV
05 de março de 2011 às 22:34

@UP

 

só remover essa linha champz:

 

doAddAccountBanishment(getAccountIdByName(getOnlinePlayers()[x])) 

BodyGriloB
06 de março de 2011 às 00:50

vlw Vodkart deu certo. Agora to com outra dúvida ta dando um erro aqui.

 

Imagem do erro: 75596202737745420274.jpg

Editado Março 6 por BodyGrilo

PehiP
06 de março de 2011 às 03:17

Cara, ainda não testei, mas pelo vídeo, o sistema ta perfeito! Parabéns!

Ele funciona em 8.7? Vlw !