Postado Julho 14, 2012 12 anos Este é um post popular. Bom, esse é um sistema anti-bot que vai funcionar da seguinte forma: O Jogador fica online por 15 minutos [Antibot]: Por favor escreva !antibot 5%8&9^2*3 sem simbolos. Ex: code: 1*5^8¿6%9 -> !antibot 15869. Lembre-se você tem 2 minutos para fazer isso ou será kickado. Jogador: !antibot 58923 [Antibot]: Aproveite seu tempo! Caso o código esteja incorreto: [Antibot]: Voce tem mais 2 chances para tentar novamente. Caso o jogador escreva o código 3 vezes errado, será kickado, ou então, caso o jogador não escrever o código nos próximos 2 minutos (configurável) será kickado também. Primeiro vá em data/creaturescripts/scripts/ e crie um arquivo chamado antibot.luae então cole: local symbols = {"*", "^", "¿", "%", "&", "$"} local timeBetweenQuestion = 15 * 60 --15 minutes local timeToKick = 2 * 60 --2 minutes local timeStorage = 65117 local codeStorage = 65118 local kickStorage = 65119 local timesStorage = 65121 function onThink(cid, interval) if not isPlayer(cid) or getPlayerGroupId(cid) >= 3 then return end if getCreatureStorage(cid, timeStorage) < 1 then doCreatureSetStorage(cid, timeStorage, os.time() + timeBetweenQuestion) end if getCreatureStorage(cid, kickStorage) > 0 and os.time() >= getCreatureStorage(cid, kickStorage) then local tmp = {timeStorage, kickStorage, timesStorage, codeStorage} for i = 1, #tmp do doCreatureSetStorage(cid, tmp[i], 0) end return doRemoveCreature(cid) end if os.time() >= getCreatureStorage(cid, timeStorage) then local code, set = "", 0 set = math.random(1, 100000) local s, e = 1, 1 for i = 1, string.len(set) do code = (code == "" and string.sub(set, s, e) or code .. symbols[math.random(#symbols)] .. string.sub(set, s, e)) s, e = s + 1, e + 1 end doCreatureSetStorage(cid, codeStorage, set) doCreatureSetStorage(cid, kickStorage, os.time() + timeToKick) doCreatureSetStorage(cid, timeStorage, os.time() + timeBetweenQuestion) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Antibot]: Por favor escreva !antibot " .. code .. " sem simbolos. Ex: code: 1*5^8¿6%9 -> !antibot 15869. Lembre-se voce tem " .. timeToKick / 60 .. " minutos para fazer isso ou sera kickado.") end return end Agora cole isso em data/creaturescripts/creaturescripts.xml: <event type="think" name="Antibot" event="script" value="antibot.lua"/> Cole isso em data/creaturescripts/scripts/login.lua: local timeStorage = 65117 local codeStorage = 65118 local kickStorage = 65119 local timesStorage = 65121 registerCreatureEvent(cid, "Antibot") doCreatureSetStorage(cid, codeStorage, 0) doCreatureSetStorage(cid, kickStorage, 0) doCreatureSetStorage(cid, timesStorage, 0) doCreatureSetStorage(cid, timeStorage, 0) Agora vá em data/talkactions/scripts,crie um arquivo criado antibot.lua e cole: local codeStorage = 65118 local kickStorage = 65119 local timesStorage = 65121 local times = 3 function onSay(cid, words, param, channel) if getCreatureStorage(cid, codeStorage) == 0 then return doPlayerSendCancel(cid, "Not yet.") elseif tonumber(param) == tonumber(getCreatureStorage(cid, codeStorage)) then doCreatureSetStorage(cid, codeStorage, 0) doCreatureSetStorage(cid, kickStorage, 0) doCreatureSetStorage(cid, timesStorage, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Antibot]: Aproveite seu tempo!") return true else if getCreatureStorage(cid, timesStorage) < 0 then doCreatureSetStorage(cid, timesStorage, 0) end doCreatureSetStorage(cid, timesStorage, getCreatureStorage(cid, timesStorage) + 1) if getCreatureStorage(cid, timesStorage) == times then doCreatureSetStorage(cid, codeStorage, 0) doCreatureSetStorage(cid, kickStorage, 0) doCreatureSetStorage(cid, timesStorage, 0) doRemoveCreature(cid) return true else return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Antibot]: Voce tem " .. times - getCreatureStorage(cid, storageTimes) .. " oportunidades para tentar novamente.") end end return true end Agora cole isso em data/talkactions/talkactions.xml: <talkaction words="!antibot" event="script" value="antibot.lua"/> Caso você queria deixar o jogador banido por 1 (uma) hora, coloque isto: return doAddAccountBanishment(getPlayerAccountId(cid),getPlayerGUID(cid), os.time() + 1*60*60, 12, 7, "Away from keyboard botter") and doRemoveCreature(cid) No lugar de: return doRemoveCreature(cid) E isso é tudo pessoal, aproveitem o código, que por sinal, foi completamente feito por darkhaos com alguma colaboração de Gomgom e uma pequena parte minha, que deixei as frases em Português (BR) ! Editado Julho 14, 2012 12 anos por Guilherme. (veja o histórico de edições)
Postado Setembro 23, 2012 12 anos Onde eu coloco isso msm ? ;x return doAddAccountBanishment(getPlayerAccountId(cid),getPlayerGUID(cid), os.time()+1*60*60,12,7,"Away from keyboard botter")and doRemoveCreature(cid) @edit Arrumei Editado Setembro 23, 2012 12 anos por Slaake (veja o histórico de edições) De boua na lagoa ? *-* Entrada ao Tibia King:27/05/2012 (02:14)
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.