Oneshot 732 Postado Dezembro 11, 2012 Share Postado Dezembro 11, 2012 (editado) Nome: Oneshot's Anti-botAutor: OneshotTipo: Sistema Descrição Este é um sistema de anti-bot simples, que envia um código numérico de 6 dígitos para cada jogador online e pede para que, através de um comando, este código de verificação seja ativado. O jogador tem um limite de tempo para fazer isso, e caso não faça, este é banido por um tempo configurável ou então, preso em um certo lugar do mapa. Instalação 1. Em data/lib, crie um arquivo chamado antibot.lua e cole o conteúdo abaixo: ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} function AntiBot(cid) if not isCreature(cid) then return end local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if getPlayerAccess(cid) >= 3 or not(getPlayerAccountManager(cid) == MANAGER_NONE) then return end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then return end if time == -1 and answer == -1 then return end if os.time() >= time then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) doBroadcastMessage("[ANTI-BOT] O jogador ".. getCreatureName(cid) .." foi ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") .." por uso de bot.") if ANTIBOT_TYPE == 1 then doAddAccountBanishment(getPlayerGUID(cid), 0, (os.time() + ANTIBOT_BAN_TIME), 12, 3, "[ANTI-BOT]") doRemoveCreature(cid) else doTeleportThing(cid, ANTIBOT_PRISON) doCreatureSetStorage(cid, ANTIBOT_STORAGE_3, os.time() + ANTIBOT_PRISON_DURATION) addEvent(function() if isCreature(cid) then doTeleportThing(cid, ANTIBOT_TEMPLE) end end, ANTIBOT_PRISON_DURATION * 1000) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, ANTIBOT_MESSAGE:format(answer, (time - os.time()))) addEvent(AntiBot, ANTIBOT_DURATION_DELAY * 1000, cid) end end 2. Crie um arquivo chamado antibot.lua em data/globalevents/scripts, cole o conteúdo abaixo function onThink(interval) for _, cid in ipairs(getPlayersOnline()) do local answer = math.random(100000, 999999) doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, answer) AntiBot(cid) end return true end Adicione a seguinte linha em globalevents.xml <globalevent name="antibot" interval="900" event="script" value="antibot.lua"/> 3. Crie um arquivo em data/creaturescripts/scripts, cole o conteúdo abaixo function onLogin(cid) local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if answer == -1 then return true end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then if os.time() > getCreatureStorage(cid, ANTIBOT_STORAGE_3) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu tempo de prisão acabou.") doTeleportThing(cid, ANTIBOT_TEMPLE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ainda está preso por uso de bot.") end return true end if os.time() > ANTIBOT_STORAGE_1 then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) return true end AntiBot(cid) return true end Adicione a seguinte linha em seu creaturescripts.xml <event type="login" name="Antibot" event="script" value="antibot.lua"/> 4. Crie um arquivo chamado antibot.lua em data/talkactions/scripts, cole o conteúdo abaixo function onSay(cid, words, param, channel) param = tonumber(param) or "" local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if time == -1 and answer == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O anti-bot não está ativado.") return true end if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite uma senha de verificação válida.") return true end if param ~= answer then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você digitou a senha incorreta. Digite corretamente, caso contrário, será banido.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ótimo! Você digitou a resposta correta. O anti-bot foi desativado.") doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) return true end Adicione a seguinte linha em seu talkactions.xml <talkaction words="!antibot" event="script" value="antibot.lua"/> Você pode fazer várias configurações na lib do sistema ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} Como a duração do ban, a posição da prisão, o tempo de prisão, dentre outras coisas.Como não consegui fazer funcionar o banimento de um jogador só na versão 0.3.6pl1, sendo isto possível apenas na 0.4.0, resolvi colocar para o tipo de banimento ser na conta toda.Abraços. Editado Abril 10, 2015 por CyberBot Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/ Compartilhar em outros sites More sharing options...
Elrien 11 Postado Dezembro 11, 2012 Share Postado Dezembro 11, 2012 Continue assim ficou muito bom o trabalho tem como fazer o sistema de task tbm plz? Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1409408 Compartilhar em outros sites More sharing options...
KennyConrad 5 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 (editado) vlw mano REP + so uma duvida quando o jogador é banido aparece uma brodclastle pra todos falando que o jogador tal foi banido ? @ edit mais uma coisa tem um bug quando o player responde o sistema alguns segundos depois ele é kickado teria como arrumar isso de kickar o player depois que ele responder o sistema ? Editado Dezembro 12, 2012 por KennyxD Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1410051 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Dezembro 12, 2012 Autor Share Postado Dezembro 12, 2012 Bugs corrigidos e broadcast adicionado. Abraços. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1410349 Compartilhar em outros sites More sharing options...
zedarosquinha 0 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 (editado) Bacana a ideia, quando tiver uma solução pro problema vou por no meu tbm, legal, e dou rep+ tbm. Opa editando, postei um pouco depois kkkkkkkk quando add no server, vou testar, se funfar beleza rep+ tenho umas dúvidas tbm, se puder me ajudar... http://www.xtibia.com/forum/topic/201195-pedidoduvida-duel-esp-evo/ abrass Editado Dezembro 12, 2012 por zedarosquinha Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1410360 Compartilhar em outros sites More sharing options...
BrunooMaciell 85 Postado Dezembro 12, 2012 Share Postado Dezembro 12, 2012 So Uma Duvida !! pega em versao 8.54 ?? Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1410369 Compartilhar em outros sites More sharing options...
KennyConrad 5 Postado Dezembro 13, 2012 Share Postado Dezembro 13, 2012 vlw por arrumar os bugs e adicionar o brodcastle so mais 2 pedidos de modificações no script 1 pode ser pra todos mesmo o outro pode ser individual te darei + 1 REP assm que chegar 1º colocar pro sistema não abordar os players que estiverem sem batle porque se não vai abordar os players afk no templo etc. agora o segundo é individual porque nen todos usam o sistema de ban = do radbr feito pelo luckoake 2º teria como colocar pra min pra banir usando esse tipo de ban aki dai no caso você so pegaria a função dele de banir e colocaria no sitema pra min porque no meu otserver trabalho com sistema de warnings quando é banido igual no radbr ^^ function onSay(cid, words, param) local t = string.explode(param, ",") local a = { [1] = 20, [2] = 40, [3] = 60, [4] = 90, [5] = 120, [6] = 150, [7] = 250, [8] = 350, [9] = 500, [10] = 750, [11] = 999, } local b = a[t[3]] if not t[2] or tonumber(t[2]) or t[3] and not tonumber(t[3]) or t[4] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Especifique nome,motivo,warnings(opcional).") return true elseif not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "O jogador "..t[1].." não existe.") return true elseif isAccountBanished(getAccountIdByName(t[1])) then doPlayerSendCancel(cid, "O player "..t[1].." já está banido.") return true elseif t[3] and tonumber(t[3]) < 1 then doPlayerSendCancel(cid, "Desculpe, mas o mínimo de warnings é 1.") return true elseif t[3] and tonumber(t[3]) > 11 then doPlayerSendCancel(cid, "Desculpe, mas o máximo de warnings é 11.") return true elseif not getWarnings(t[1]) or getWarnings(t[1]) < 0 then setWarnings(t[1], 0) elseif t[3] and tonumber(t[3]) <= getWarnings(t[1]) then doPlayerSendCancel(cid, "Desculpe, mas esse player já tem "..getWarnings(t[1]).." warnings.") return true end if getPlayerByName(t[1]) then doRemoveCreature(getPlayerByName(t[1])) end if t[3] then doAddAccountBanishment(getAccountIdByName(t[1]), target, os.time() + (a[tonumber(t[3])]*3600*24), 5, 2, t[2], 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você baniu o jogador "..t[1]..". Warnings setadas de "..getWarnings(t[1]).." para "..t[3]..".") broadcastMessage("Jogador "..t[1].." banido por "..getCreatureName(cid)..". Warnings setadas de "..getWarnings(t[1]).." para "..t[3]..". Comentário: "..t[2]..".") setWarnings(t[1], tonumber(t[3])) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você baniu o jogador "..t[1]..". Warnings setadas de "..getWarnings(t[1]).." para "..(getWarnings(t[1])+1)..".") broadcastMessage("Jogador "..t[1].." banido por "..getCreatureName(cid)..". Warnings setadas de "..getWarnings(t[1]).." para "..(getWarnings(t[1])+1)..". Comentário: "..t[2]..".") setWarnings(t[1], getWarnings(t[1])+1) doAddAccountBanishment(getAccountIdByName(t[1]), target, os.time() + (a[getWarnings(t[1])]*3600*24), 5, 2, t[2], 0) end return true end @ oneshot achei outro bug o sitema não está banindo quando o tempo chega a 0 o player é apenas kickado apareceu a mensagem 23:01 [sistema Anti-Cheater] O jogador Test Druid foi banido por uso de bot. mas apenas foi kickado não foi banido. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1410409 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Dezembro 13, 2012 Autor Share Postado Dezembro 13, 2012 (editado) É que depende muito de quais são os parâmetros funcionais do seu servidor nesta função: doAddPlayerBanishment(getPlayerGUID(cid), 3, (os.time() + (24 * 60 * 60)), 12, 2, "[sISTEMA ANTI-BOT]") Testei em duas revisões do The Forgotten Server 0.4.0, uma de 8.62 e outra de 8.71 e obtive total funcionalidade. Se você estiver usando um servidor diferente daqueles que testei, poste aqui, posso descobrir os parâmetros corretos nas sources, mas preciso delas. Abraços. Editado Dezembro 13, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1411282 Compartilhar em outros sites More sharing options...
KennyConrad 5 Postado Dezembro 13, 2012 Share Postado Dezembro 13, 2012 meu servidor e verção 8.60 =( e ve se voce consegue colocar pra banir a account setando warnings igual esse script de ban que postei ai se você presisar entender melhor esse sistema de ban é esse aki o veja no link http://www.xtibia.com/forum/topic/198165-radbr-banishment-system-atualizado/ Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1411314 Compartilhar em outros sites More sharing options...
Lummos 12 Postado Dezembro 13, 2012 Share Postado Dezembro 13, 2012 Tem como colocar um comando, para que tutores mandem antcheater para o player? Exemplo. /checar PlayerName Ai manda o antcheater para o jogador? Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1411846 Compartilhar em outros sites More sharing options...
AlexandreKG 134 Postado Dezembro 13, 2012 Share Postado Dezembro 13, 2012 Nossa muito bom,adicionando em meu server. Parabéns. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1411849 Compartilhar em outros sites More sharing options...
rodrygosos 4 Postado Dezembro 15, 2012 Share Postado Dezembro 15, 2012 Show heim, vou ver se adiciono ao meu servidor, parabéns pelo script. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1413456 Compartilhar em outros sites More sharing options...
milbradt 19 Postado Dezembro 16, 2012 Share Postado Dezembro 16, 2012 [/code] @ oneshot achei outro bug o sitema não está banindo quando o tempo chega a 0 o player é apenas kickado apareceu a mensagem 23:01 [sistema Anti-Cheater] O jogador Test Druid foi banido por uso de bot. mas apenas foi kickado não foi banido. Aconteceu o mesmo comigo.. uhsahusa Sistema funfou, não deu erro no console, porem ele apenas kikou o personagem e mostrou no brodcast a msg que o mesmo foi banido! Tfs 0.3.5 8.54 Talvez por isso! Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1414060 Compartilhar em outros sites More sharing options...
KennyConrad 5 Postado Dezembro 18, 2012 Share Postado Dezembro 18, 2012 @ Oneshot achei outro bug no sistema se o player deslogar e logar ele vai continuar sendo abordado e pah ate ai tudo bem ta certinho ai o player responde o sistema corretare ai aparece que ele respondeu certo abordagen desativada etc ai alguns segundos depois o player é banido isso so acontece se ele deslogar e logar pra responder se ele responder o sistema sem deslogar ele não é banido. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1415530 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Dezembro 20, 2012 Autor Share Postado Dezembro 20, 2012 Consertarei os bugs assim que puder. Abraços. Link para o comentário https://xtibia.com/forum/topic/201107-oneshots-anti-bot/#findComment-1417693 Compartilhar em outros sites More sharing options...
Posts Recomendados