Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Agora, matheusjp2 disse:

um sistema simples porem bem inteligente . parabens !

 

Thank you. :)

 

 

@This life is filled with hurt

When happiness doesn't work

Trust me and take my hand

When the lights go out you will understand

Link para o post
Compartilhar em outros sites
local config = {
	['qual a cor do sol?'] = {anwser = 'amarelo'}
}

local msgs = getnewmessages('Anti Bot')
for i = 0, msgs.count - 1 do
	local question = config[msgs[0].text]
	if question then
        say(question.anwser)
    end
end

?

Editado por vankk (veja o histórico de edições)

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites
9 minutos atrás, vankk disse:

local config = {
	['qual a cor do sol?'] = {anwser = 'amarelo'}
}

local msgs = getnewmessages('Anti Bot')
for i = 0, msgs.count - 1 do
	local question = config[msgs[0].text]
	if question then
        say(question.anwser)
    end
end

?

 

?

Não polua meu tópico com seus comentários.

Acredite, você não está me ensinando nada.

 

@This life is filled with hurt

When happiness doesn't work

Trust me and take my hand

When the lights go out you will understand

Link para o post
Compartilhar em outros sites

Ficou show, muda esse nome basic, da impressão que é algo feito com a bunda, e eu recomendo a galera colocar pra responder com 60 segundos, 10 seg é mto abusivo.

https://www.youtube.com/SaymonKopolsky

 

589f09a9e1af9_SemTtulo-1.png.ddf1b437984d72bd5d4124b7e90762fa.png

https://www.youtube.com/SaymonKopolsky

 

 

 

Easy Mapper Map Editor 8.60: Clique aqui

[8.60] BeastXHunter: Clique aqui

 

5494899_orig.gif

Link para o post
Compartilhar em outros sites
4 horas atrás, Saymon Kopolsky disse:

Ficou show, muda esse nome basic, da impressão que é algo feito com a bunda, e eu recomendo a galera colocar pra responder com 60 segundos, 10 seg é mto abusivo.

 

Sim, tb aconselho algo em volta de 60~120 segundos.

Vou adicionar uma opção pro o dono escolher se após errar a pergunta uma vez, o jogador já ser penalizado... Para que nenhum sem futuro fique criando loop's pra responder automaticamente as verificações :rolleyes:

 

@This life is filled with hurt

When happiness doesn't work

Trust me and take my hand

When the lights go out you will understand

Link para o post
Compartilhar em outros sites
20 minutos atrás, Pedriinz disse:

 

Sim, tb aconselho algo em volta de 60~120 segundos.

Vou adicionar uma opção pro o dono escolher se após errar a pergunta uma vez, o jogador já ser penalizado... Para que nenhum sem futuro fique criando loop's pra responder automaticamente as verificações :rolleyes:

pode ter certeza que vão fazer.

 

Sistema ficou top vei parabéns.

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Um ótimo sistema sem sombras de dúvidas.
Uma dúvida, se o ot server utliza a opção de linguas Pt e inglês, há alguma forma de eu fazer com que esse sistema identifique isso e faça perguntas para cada idioma?

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Caso eu queira que em vez de Notificações o jogador seja teleportado para o Templo ou para uma prisão, existe essa possibilidade?

Editado por Andreeyyy (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 2017-5-9 ás 04:06, sidneivascao disse:

Funciona em tfs 0.36 amigo ?

 

Não, apenas em versões 1.0+.

Em 2017-5-12 ás 14:15, eviltox disse:

Um ótimo sistema sem sombras de dúvidas.
Uma dúvida, se o ot server utliza a opção de linguas Pt e inglês, há alguma forma de eu fazer com que esse sistema identifique isso e faça perguntas para cada idioma?

Sim, mas teria que modificar algumas coisas.

 

Em 2017-5-24 ás 23:39, Andreeyyy disse:

Caso eu queira que em vez de Notificações o jogador seja teleportado para o Templo ou para uma prisão, existe essa possibilidade?

Sim existe.

 

@This life is filled with hurt

When happiness doesn't work

Trust me and take my hand

When the lights go out you will understand

Link para o post
Compartilhar em outros sites
  • 1 month later...

Existe uma falha... Caso o jogador não responda e mude a janela ou responda uma pergunta e não feche a jenela, ele não é mais verificado, ou melhor até é mais não recebe novas perguntas. E assim não precisa responder.

Link para o post
Compartilhar em outros sites
  • 3 months later...
  • 3 years later...
Em 20/04/2017 em 01:41, Pedriinz disse:

 

Como o nome do tópico diz, eu trouxe para vocês um sistema de anti bot.

Minha intenção é atualizar este código ao máximo, deixando o mesmo bastante customizável.

 

Quaisquer erros ou problemas por favor me deixe saber.

 

separador.png

ICNqazV.gif

 

Como ele funciona?

Após um jogador matar uma quantidade x de monstros, o sistema irá realizar uma verificação com ele para saber se o mesmo está ou não 100% afk.

Essa verificação é feita através de um channel que se abre após o jogador matar a quantidade de monstros, realizando uma pergunta para o jogador.

 

O que é possível configurar?

Praticamente tudo! Você também pode adicionar quantas perguntas desejar! Organizei o script para que qualquer um possa realizar as configurações que desejar. Confira:


ANTI_BOT_SYSTEM = {
	config = {
		minMonstersToCheck = 2, -- O sistema irá escolher aleatoriamente um número de monstros entre esses dois valores para verificar.
		maxMonstersToCheck = 4,
		channelId = 10, -- Id do channel que será aberto para realizar a verificação.
		timeToAnswer = 10, -- Quanto tempo em segundos o jogador tem para responder a verificação.
		monstersForNotCheck = {'rat', 'bug', 'tiger'}, -- Monstros que não serão verificados pelo sistema.
		notations = 3, -- Quantas notificações o jogador pode receber antes de ser banido.
		banDays = 1, -- Quantidade de dias o personagem vai ficar banido por utilizar bot.
		storageForNotations = 1222, -- Storage onde ficará salvo as notations.
		storageForOpenChat = 10383, -- Storage que permitira o chat ser aberto. (Aconselho não mudar).
	},
	questions = {
		[1] = {question = 'Digite quantas letras possui a palavra: Carro', answer = '5'},
		[2] = {question = 'O que significa Ying e Yang?', answer = 'bem e o mal'},
		[3] = {question = 'Qual é a cor do sol?', answer = 'amarelo'},
		--[numero seguinte] = {question = 'pergunta', answer = 'resposta'},
	},
	cache = {
		players = {
			--[player:getId()] = {count = 1}
		},
		question = 0,
	},
	messages = {
		reason = {msg = 'Você foi banido por utilizar bot 100% AFK.'},
		notation = {msg = 'Você foi penalizado e recebeu um notificação. Lembre-se que após receber 3 notificações você será banido. Você possui %d notificações no momento.', type = MESSAGE_EVENT_ADVANCE},
		attention = {msg = '[Anti-Bot] Atenção! Você só possui %d segundos para responder a verificação.', type = TALKTYPE_CHANNEL_O},
		channel_enter = {msg = '[Anti-Bot] Você está sobre suspeitas de uso aplicativos não autorizados.\nPor favor, confirme a verificação a seguir, você possui %d segundos para isso.', type = TALKTYPE_CHANNEL_O},
		channel_close = {msg = '[Anti-Bot] Para sua segurança, não é possivel fechar este channel antes da verificação. Por favor responda o que lhe foi perguntado para que não seja penalizado.', type = TALKTYPE_CHANNEL_O},
		wrong_answer = {msg = '[Anti-Bot] Resposta errada, por favor tente novamente.', type = TALKTYPE_CHANNEL_O},
		correct_answer = {msg = '[Anti-Bot] Você respondeu corretamente, obrigado e bom jogo! Você já pode fechar este channel.', type = TALKTYPE_CHANNEL_O},
		unconfirmed = {msg = 'Você não realizou a verificação corretamente, por isso você foi penalizado. Este channel já pode ser fechado.', type = TALKTYPE_CHANNEL_O},
	}
}

 

Tudo dentro desses espaços pode ser configurado sem nenhuma complicação!

 

Instalação:

 

Vá na pasta creaturescript/scripts do seu servidor e crie um arquivo com o nome de antibot.lua e adicione o seguinte conteúdo:


--[[
## SCRIPT BY: Pedriinz ##
## CONTACT SKYPE: pedrosz4 ##
]]

ANTI_BOT_SYSTEM = {
	config = {
		minMonstersToCheck = 2, -- O sistema irá escolher aleatoriamente um número de monstros entre esses dois valores para verificar.
		maxMonstersToCheck = 4,
		channelId = 10, -- Id do channel que será aberto para realizar a verificação.
		timeToAnswer = 10, -- Quanto tempo em segundos o jogador tem para responder a verificação.
		monstersForNotCheck = {'rat', 'bug', 'tiger'}, -- Monstros que não serão verificados pelo sistema.
		notations = 3, -- Quantas notificações o jogador pode receber antes de ser banido.
		banDays = 1, -- Quantidade de dias o personagem vai ficar banido por utilizar bot.
		storageForNotations = 1222, -- Storage onde ficará salvo as notations.
		storageForOpenChat = 10383, -- Storage que permitira o chat ser aberto. (Aconselho não mudar).
	},
	questions = {
		[1] = {question = 'Digite quantas letras possui a palavra: Carro', answer = '5'},
		[2] = {question = 'O que significa Ying e Yang?', answer = 'bem e o mal'},
		[3] = {question = 'Qual é a cor do sol?', answer = 'amarelo'},
		--[numero seguinte] = {question = 'pergunta', answer = 'resposta'},
	},
	cache = {
		players = {
			--[player:getId()] = {count = 1}
		},
		question = 0,
	},
	messages = {
		reason = {msg = 'Você foi banido por utilizar bot 100% AFK.'},
		notation = {msg = 'Você foi penalizado e recebeu um notificação. Lembre-se que após receber 3 notificações você será banido. Você possui %d notificações no momento.', type = MESSAGE_EVENT_ADVANCE},
		attention = {msg = '[Anti-Bot] Atenção! Você só possui %d segundos para responder a verificação.', type = TALKTYPE_CHANNEL_O},
		channel_enter = {msg = '[Anti-Bot] Você está sobre suspeitas de uso aplicativos não autorizados.\nPor favor, confirme a verificação a seguir, você possui %d segundos para isso.', type = TALKTYPE_CHANNEL_O},
		channel_close = {msg = '[Anti-Bot] Para sua segurança, não é possivel fechar este channel antes da verificação. Por favor responda o que lhe foi perguntado para que não seja penalizado.', type = TALKTYPE_CHANNEL_O},
		wrong_answer = {msg = '[Anti-Bot] Resposta errada, por favor tente novamente.', type = TALKTYPE_CHANNEL_O},
		correct_answer = {msg = '[Anti-Bot] Você respondeu corretamente, obrigado e bom jogo! Você já pode fechar este channel.', type = TALKTYPE_CHANNEL_O},
		unconfirmed = {msg = 'Você não realizou a verificação corretamente, por isso você foi penalizado. Este channel já pode ser fechado.', type = TALKTYPE_CHANNEL_O},
	}
}

function vericationBot(cid)
	local player = Player(cid)
	local timeNow = os.time()
	if not player then
		return true
	end

	if not ANTI_BOT_SYSTEM.cache.players[player:getId()] or ANTI_BOT_SYSTEM.cache.players[player:getId()].verified == false then
		return true
	else
		player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.unconfirmed.msg, ANTI_BOT_SYSTEM.messages.unconfirmed.type, ANTI_BOT_SYSTEM.config.channelId)
		ANTI_BOT_SYSTEM.cache.players[player:getId()] = nil
		if player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) < ANTI_BOT_SYSTEM.config.notations then
			if player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) ~= -1 then
				player:setStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations, math.max(player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) + 1))
			else
				player:setStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations, 1)
			end
			player:teleportTo(player:getTown():getTemplePosition())
			player:sendTextMessage(ANTI_BOT_SYSTEM.messages.notation.type, string.format(ANTI_BOT_SYSTEM.messages.notation.msg, math.max(player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations))))
		else
			player:teleportTo(player:getTown():getTemplePosition())
			db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" ..getAccountNumberByPlayerName(player:getName())..", "..db.escapeString(ANTI_BOT_SYSTEM.messages.reason.msg)..", "..timeNow..", "..timeNow + (ANTI_BOT_SYSTEM.config.banDays * 86400) ..", 1)")
			player:remove()
		end
	end
	return true
end

function onKill(creature, target)
	local targetMonster = target:getMonster()
	local player = creature:getPlayer()
	local random = math.random(ANTI_BOT_SYSTEM.config.minMonstersToCheck, ANTI_BOT_SYSTEM.config.maxMonstersToCheck)
	if not targetMonster then
		return true
	end
	if isInArray(ANTI_BOT_SYSTEM.config.monstersForNotCheck, targetMonster:getName():lower()) then
		return true
	end
	if not ANTI_BOT_SYSTEM.cache.players[player:getId()] then
		ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = 1, verified = false}
	else
		if ANTI_BOT_SYSTEM.cache.players[player:getId()].count >= random then
			ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = math.max(ANTI_BOT_SYSTEM.cache.players[player:getId()].count), verified = true}
			player:openChannel(ANTI_BOT_SYSTEM.config.channelId)
			player:getPosition():sendMagicEffect(CONST_ME_TUTORIALSQUARE)
		else
			ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = math.max(ANTI_BOT_SYSTEM.cache.players[player:getId()].count) + 1, verified = false}
		end
	end

	return true
end

Após feito isso, abre o arquivo creaturescript/creaturescript.xml e adicione esta linha:

 


	<!-- Anti Bot by Pedriinz -->
	<event type="kill" name="AntiBot" script="antibot.lua" />	

Feito isso, abra o arquivo: creaturescript/scripts/others/login.lua e registre o script com a tag:


'AntiBot',

Exemplo:


local events = {
    'ElementalSpheresOverlords',
    'BigfootBurdenVersperoth',
    'Razzagorn',
    'Shatterer',
    'Zamulosh', 
    'The Hunger',
    'AntiBot',
}

Agora, abre o arquivo chatchannels/chatchannels.xml e adicione a seguinte tag:


<channel id="10" name="Anti Bot" public="1" script="antibot.lua" />

Lembre-se que o ID deve ser o mesmo que você configurou no script principal lá em cima.

 

Agora abra a pasta chatchannels/scripts/ crie um script chamado antibot.lua e adicione:


function onJoin(player)
    if not player then
        return true
    end

    if not ANTI_BOT_SYSTEM.cache.players[player:getId()] or ANTI_BOT_SYSTEM.cache.players[player:getId()].verified == false then
        player:popupFYI('You can\'t open this channel.')
        return false
    end

    addEvent(function() player:sendChannelMessage("", string.format(ANTI_BOT_SYSTEM.messages.channel_enter.msg, ANTI_BOT_SYSTEM.config.timeToAnswer), ANTI_BOT_SYSTEM.messages.channel_enter.type, ANTI_BOT_SYSTEM.config.channelId) end, 300)
    addEvent(function()
            local random = math.random(#ANTI_BOT_SYSTEM.questions)
            player:sendChannelMessage("", ANTI_BOT_SYSTEM.questions[random].question, TALKTYPE_CHANNEL_R1, ANTI_BOT_SYSTEM.config.channelId)
            ANTI_BOT_SYSTEM.cache.question = random
        end, 2000)  
    addEvent(vericationBot, ANTI_BOT_SYSTEM.config.timeToAnswer * 1000, player:getId())
    return true
end

function onLeave(player)
    if not player then
        return true
    end

    if ANTI_BOT_SYSTEM.cache.players[player:getId()] then
        player:openChannel(ANTI_BOT_SYSTEM.config.channelId)
        addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.channel_close.msg, ANTI_BOT_SYSTEM.messages.channel_close.type, ANTI_BOT_SYSTEM.config.channelId) end, 300)
    end
end

function onSpeak(player, type, message)

    player:sendChannelMessage(player:getName(), message, TALKTYPE_CHANNEL_Y, ANTI_BOT_SYSTEM.config.channelId)

    if message ~= ANTI_BOT_SYSTEM.questions[ANTI_BOT_SYSTEM.cache.question].answer then
       addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.wrong_answer.msg, ANTI_BOT_SYSTEM.messages.wrong_answer.type, ANTI_BOT_SYSTEM.config.channelId) end, 300)
    else
        addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.correct_answer.msg, ANTI_BOT_SYSTEM.messages.correct_answer.type, ANTI_BOT_SYSTEM.config.channelId) end, 300)
        ANTI_BOT_SYSTEM.cache.players[player:getId()] = nil
    end
    return false
end

Pronto! O seu antibot foi instalado com sucesso!

O código foi totalmente feito por mim, então os créditos são meus.

 

Qualquer sugestão para melhorias, por favor poste para que eu possa fazer :3

Abraços! B-)

Você tem ele em revscript?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por rrodriguesrm
      Olá, procuro um servidor 7.4 antibot com mapa global e hunts editadas, similar ao medivia, com client tibiacam, cast, sistema de premium, items vip e site bom. Quero servidor testado, sem bugs, pagamento em espécie, transferência bancária, pagseguro, paypal, o que quiser.
      Whatsapp: 24999248330
    • Por Enzo Caue
      Neste tutorial você vai aprender a colocar aquele captcha box no seu gesior:

       
       
      Primeiramente, você vai precisar da API e registrar o dominio, você pode fazer isso por aqui:
      https://www.google.com/recaptcha/admin

       
      Agora, vá até o seu layout.php e antes de <head> coloque isto:
      <script src='https://www.google.com/recaptcha/api.js'></script>  
      Agora vamos até o accountmagement.php e embaixo de <?php,  coloque:
      if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login']) && !$captcha) { $main_content .='<h2>Please check the reCaptcha form.</h2>'; }  
      Procure por:
      <input type="password" name="password_login" size="15" maxlength="15"> e na linha de baixo, adicione:
      <div class="g-recaptcha" data-sitekey="SUA_PUBLIC_KEY"></div>  
      PS: você tem que colocar sua public key no lugar de SUA_PUBLIC_KEY!
      PS2: você ainda pode trocar a cor adicionando data-theme="dark" nessa div. (OPCIONAL)
       
      Agora, em system/load.login.php, abaixo de <?php adicione:
      if(isset($_POST['g-recaptcha-response'])) { $captcha=$_POST['g-recaptcha-response']; }  
      Ainda em system/load.login.php, procure por:
      if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login'])) { Visitor::setAccount($_REQUEST['account_login']); Visitor::setPassword($_REQUEST['password_login']); //Visitor::login(); // this set account and password from code above as login and password to next login attempt //Visitor::loadAccount(); // this is required to force reload account and get status of user $isTryingToLogin = true; } e substitua por:
      if(isset($_REQUEST['account_login']) && isset($_REQUEST['password_login']) && $captcha) { $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=SUA_PRIVATE_KEY&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false) { echo '<h2>Dirty Robot!</h2>'; } else { Visitor::setAccount($_REQUEST['account_login']); Visitor::setPassword($_REQUEST['password_login']); //Visitor::login(); // this set account and password from code above as login and password to next login attempt //Visitor::loadAccount(); // this is required to force reload account and get status of user $isTryingToLogin = true; } } PS: voce deve colocar sua private key onde diz SUA_PRIVATE_KEY!
       
      Pronto, já estará funcionando o ReCAPTCHA =]
       
      KEYS:

       
       
      Créditos: Musztang
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo