Ir para conteúdo
Entre para seguir isso  
Mock

[8.x] Bot Cleanner v.2.0

Recommended Posts

Mock    32
Mock

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

Autor: Mock

Nome do script: Bot cleanner

Versão: 2.0

Testado em: TFS 0.3+

Requerimentos:

Funções >

[spoiler_NAME=getPosByDir(fromPosition, direction, size)]

function getPosByDir(fromPosition, direction, size)
local n = size or 1

local pos = fromPosition
if(direction == NORTH) then
	pos.y = pos.y - n
elseif(direction == SOUTH) then
	pos.y = pos.y + n
elseif(direction == WEST) then
	pos.x = pos.x - n
elseif(direction == EAST) then
	pos.x = pos.x + n
elseif(direction == NORTHWEST) then
	pos.y = pos.y - n
	pos.x = pos.x - n
elseif(direction == NORTHEAST) then
	pos.y = pos.y - n
	pos.x = pos.x + n
elseif(direction == SOUTHWEST) then
	pos.y = pos.y + n
	pos.x = pos.x - n
elseif(direction == SOUTHEAST) then
	pos.y = pos.y + n
	pos.x = pos.x + n
end

return pos
end

[/spoiler_NAME]

Dentre outras que so tem no TFS

 

 

Depois do meu primeiro bot cleanner com 350 linhas, eu venho postar este menor e mais eficiente, na epoca eu não conehcia algumas coisas que reduziriam o script drasticamente, o script com as funções basicas teria 53 linhas com as funções do 1.1 (não foi postado) teria 73 e agora com as novas novidades tem 150 linhas porem desta ves é O BOT

 

[spoiler_NAME=Novidades]

  1. Não presisa por action id onde ele não deve andar
  2. Ele sobe e desce escadas (definir na config)
  3. Não passa onde um player normal não passa
  4. Não deleta itens dentro de houses mesmo sendo sumonado dentro de uma
  5. Você pode definir uma area de quantos sqms depois do sue ponto de nascensa para ele não passar (ponha 10 e ele não passara de 10 sqms de distancia de onde ele foi feito.
  6. Clean bomb (tipo a magia berserk so que limpa em volta do bot)

[/spoiler_NAME]

 

Script!


local config = {
--- velocidade/chances
velocidade = 1000,
--- efeitos
Efeito_normal = 47,
Efeito_block = 31,
BombEfect = 1,
Allow_funnyTalks = TRUE,
funnyTalks = {"lol","Oi","Limpo!"},
Allow_Bombs = TRUE, --- clean bombs (limpa em volta do bot)
----segurança
exclusoes ={6500,9999,2092}, -- ids de itens que não serão deletados
allowFloorChange = TRUE, -- quer que o bot mude de andar?
stairs_up_ids = {1386,1385,1389,3687}, -- ids de escadas pro bot mudar de andar (pra cima)
stairs_down_ids = {459,4834,3219}, -- ids de escadas pro bot mudar de andar (pra baxo)
sqms_de_distancia_do_centro = 15,
}
----- Funções!
function isWalkable2(pos)
local wall0 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=0})
local wall1 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=1})
local wall2 = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=2})
local creature = getThingfromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=255})
if isCreature(creature.uid) == FALSE then
if wall0.uid ~= 0 and hasProperty(wall0.uid, 3) == FALSE and hasProperty(wall0.uid, 7) == FALSE then
if wall1.uid == 0 or (hasProperty(wall1.uid, 3) == FALSE and hasProperty(wall1.uid, 7) == FALSE) then
if wall2.uid == 0 or (hasProperty(wall2.uid, 3) == FALSE and hasProperty(wall2.uid, 7) == FALSE) then
return TRUE
end
end
end
end
return FALSE
end
local function doCleanArea(pos, exclusaos,config)
pos1 = {x=pos.x-1,y=pos.y-1,z=pos.z}
pos2 = {x=pos.x+1,y=pos.y+1,z=pos.z}
for x = 0, math.abs(pos1.x-pos2.x) do
for y = 0, math.abs(pos1.y-pos2.y) do
pos3 = {x = pos1.x+x, y = pos1.y+y, z = pos1.z, stackpos = 255}
local coisa = getThingfromPos(pos3)
pos3 = {x = pos1.x+x, y = pos1.y+y, z = pos1.z, stackpos = 0}
local coisa2 = getThingfromPos(pos3)
doSendMagicEffect(pos3,config.BombEfect)
if coisa.itemid ~= 0 then
if isInArray(exclusaos, coisa.itemid) == FALSE and getTileHouseInfo(pos3) == 0 and coisa2.actionid ~= 500 and isWalkable2(pos3) == TRUE then
doRemoveItem(coisa.uid, -1)
doSendAnimatedText(pos3,"Deleted", math.random(1,255))
end
end
end
end
end
--- vlw jovial essa função foi baseada na sua!
--- http://forums.otserv.com.br/f154/funcao-inscreen-2-0-by-jovial-3363/
function isInArea(center, pos2,radius)
if ((math.abs(center.x - pos2.x) <= radius) and (math.abs(center.y - pos2.y) <= radius)) then
return TRUE
else
return FALSE
end
end
-----Em fim o bot...
local function andar(topos,cento,config)
----- Falando
if math.random(1,12) > 8 and config.Allow_funnyTalks == TRUE then
doSendAnimatedText(topos,config.funnyTalks[math.random(1,#config.funnyTalks)],math.random(1,255))
end

--- Algumas coisas importantes
local maspos = {x = topos.x, y = topos.y ,z = topos.z,stackpos=255}
local oldpos = topos
local changed = FALSE
local getdir = math.random(0,3)
maspos = getPosByDir(maspos, getdir)
Items = getThingfromPos(maspos)
items2 = getThingfromPos({x = maspos.x, y = maspos.y ,z = maspos.z,stackpos=1})
Itempost = maspos
Itempost.stackpos = 0
gnr = getThingfromPos(Itempost)
---- -- or isInArea(cento, topos,config.sqms_de_distancia_do_centro,config)

val = getThingfromPos(Itempost)
if val.actionid == 500 or getTileHouseInfo(maspos) ~= 0 or isWalkable2(maspos) == FALSE or isCreature(Items.uid) == TRUE or isInArea(cento, maspos,config.sqms_de_distancia_do_centro) == FALSE then
if config.allowFloorChange == TRUE then
items2 = getThingfromPos({x = maspos.x, y = maspos.y ,z = maspos.z,stackpos=1})
items3 = getThingfromPos({x = maspos.x, y = maspos.y ,z = maspos.z,stackpos=0})
if isInArray(config.stairs_up_ids, items2.itemid) == TRUE then
doSendAnimatedText(maspos,"UP!", math.random(1,255))
maspos.z = maspos.z-1
local changed = TRUE
elseif isInArray(config.stairs_down_ids, items3.itemid) == TRUE then
doSendAnimatedText(maspos,"DOWN!", math.random(1,255))
maspos.z = maspos.z+1
local changed = TRUE
end
end
if changed == FALSE then
doSendAnimatedText(maspos,"Block", math.random(1,255))
end
if getdir == 1 then
getdir = 3
elseif getdir == 3 then
getdir = 1
elseif getdir == 0 then
getdir = 2
elseif getdir == 2 then
getdir = 0
end

topos = getPosByDir(maspos, getdir)
doSendMagicEffect(maspos,config.Efeito_block)
else
if Items.itemid ~= 0 then
if isInArray(config.exclusoes, Items.itemid) == FALSE then
doSendMagicEffect(maspos,config.Efeito_normal)
local cor = math.random(1,255)
addEvent(doSendAnimatedText, 200,maspos,"Deleted",cor)
doRemoveItem(Items.uid, -1)
topos = maspos
else
topos = maspos
doSendAnimatedText(maspos,"Ignore", math.random(1,255))
end
else
if config.allowFloorChange == TRUE then
items2 = getThingfromPos({x = maspos.x, y = maspos.y ,z = maspos.z,stackpos=1})
items3 = getThingfromPos({x = maspos.x, y = maspos.y ,z = maspos.z,stackpos=0})
if isInArray(config.stairs_up_ids, items2.itemid) == TRUE then
doSendAnimatedText(maspos,"UP!", math.random(1,255))
maspos.z = maspos.z-1
local changed = TRUE
elseif isInArray(config.stairs_down_ids, items3.itemid) == TRUE then
doSendAnimatedText(maspos,"DOWN!", math.random(1,255))
maspos.z = maspos.z+1
local changed = TRUE
end
end
topos = maspos
end
end
if math.random(1,5) == 1 and config.Allow_Bombs == TRUE then
doCleanArea(topos, config.exclusoes,config)
end
doSendMagicEffect(maspos,config.Efeito_normal)
addEvent(andar, config.velocidade, topos,cento,config)
end
---- Ativação
function onUse(cid, item, frompos, item2, topos)
if getPlayerGroupId(cid) > 3 then
local cento = topos
addEvent(andar, config.velocidade, topos,cento,config)
return true
else
return false
end
end

 

Agora salve em um arquivo .lua na pasta actions e agora a tag e por sua conta você pode definir para ativar o bot ao usar uma alavanca ou um actionid... isso depende do jeito que vocÊ quiser (lembrando que eu puis para players com groupid acima de 3 ou seja apenas CM/AMD pode liga-lo, se nao quiser e so mudar.

Config!

local config = {

--- velocidade/chances

velocidade = 1000,--- efeitos

Efeito_normal = 47,

Efeito_block = 31,

BombEfect = 1,

Allow_funnyTalks = TRUE,

funnyTalks = {"lol","Oi","Limpo!"},

Allow_Bombs = TRUE, --- clean bombs (limpa em volta do bot)

----segurança

exclusoes ={6500,9999,2092}, -- ids de itens que não serão deletados

allowFloorChange = TRUE, -- quer que o bot mude de andar?

stairs_up_ids = {1386,1385,1389,3687}, -- ids de escadas pro bot mudar de andar (pra cima)

stairs_down_ids = {459,4834,3219}, -- ids de escadas pro bot mudar de andar (pra baxo)

sqms_de_distancia_do_centro = 15,

}

---Esta e a velocidade do bot, 1000 equivale a 1 sgundo ou seja ele ira dar 1 passo a cada 1 segundo basta mudar.

---Este efeito normal é o magic efect o mesmo usado em spells, o padrão e de um energy

---Este efeito apenas irá sair quando o bot encontrar uma parede ou algo que ele nao possa passar assim como actionid 500

---Bomb efect ele vai soltar 1 clean bomb em um tempo aleatorio e este bomb ira soltar um efeito e só o definir ai.

---esses 2 linhas e para caso você queira que o bot fale algumas coisas asveses, porem tem 1 limite de 9 letras, para definir as palavras ponha-os na tabela sempre usando " Aspas , virgula e dentro da chave como ta o padrão

---Ponha dentro desta tabela os IDS de itens que você não quer que o bot delete (simplesmente ignore) sempre separados por virgula.

--- ja esplicado

---Aqui é o seguinte, supondo que perto de onde o bot ira nascer (finja que você usou uma alavanca) a 10 sqm dali tem um evento e tenha alguns itens no chão e nao podem ser deletados p nao estragar o evento, e so por este numero = a 10 pois se ele passa de 10 sqm de distancia de onde ele nasceu ele não ira para lá ele ficara preso em um quadrado imaginario.

 

 

 

Video do bot cleanner [2.0] em ação

[ame]http://br.youtube.com/watch?v=zOX4Eaxd9fQ[/ame]

 

ps: limao server morreu xD

não liga p ele

Editado por Mock
Alguns bugs no topico

Compartilhar este post


Link para o post
Cabral    2
Cabral

BOT Cleaner Versao 2.0

Melhor versao De Todas

Como Sempre Altor: Mock

Parabens Veio Gogo Trabalhar Pra NASA

Compartilhar este post


Link para o post
Mock    32
Mock

@cabral

sem pagar pau plis :P

 

xD zuera

ow cabral se vc ja pois o script no seu ot copia dinovo pq eu mudei 1 parada (1 letra) no script pq ele n tava subindo escada direito.

Compartilhar este post


Link para o post
MiB    0
MiB

@ Mock

 

Muito bom o seu sistema, mas peço que tome muito cuidado. Seu script é muito copiável para outros fóruns, pois muitos copiam por preguiça e esse já vem com 98% do tópico pronto no script. Peço que, quando fizer um script, retire os "---" de cada explicação e deixe exclusivamente para nós, pois, você mesmo disse que excluiu 350 linhas. Poderia ser mais. Lembre-se que leva menos memória de carregamento com script menor, ou senão, não teríamos funções como doCreateTeleport, mas sim, tel = doCreateItem; doChangeTeleportDestpos.

 

Também, poderia atualizar um vídeo dessa versão?

 

Andei verificando e você substituiu dois caracteres por texto? Efeito 31 por efeito_block? Poderia colocar, ao invés de 31, colocar CONST_ME_STUN, pois daí teria a situação e, se num futuro Update o número desse SLEEP mudar, o efeito não muda, mas o número, como aconteceu do 8.0 para o 8.2 (no MESSAGE_INFO_DESCR, do 18 para o 24) e no 8.2 para o 8.4 (mesma mensagem, 24 para 25).

 

Você usa muita variável. Lembre-se que LIB não é só biblioteca das funções, mas biblioteca de variáveis. Poderia ter reduzido o script ainda mais fazendo as pessoas adicionarem no data/actions/lib/actions.lua.

 

Você faz funções e ações evoluídas, mas pulou o básico da formatação de script. Mesmo assim, parabéns pelo sucesso.

Compartilhar este post


Link para o post
Mock    32
Mock

Sim acontece que CONST_ME_STUN = 31 e não tem problema eu colocar 31 assim como as cores do animated text que variam de 1 a 255, eu não ligo muito de clonarem meu script contanto que ponha que eu quem fiz.(porem isso é apenas enfeite do script pq o bot não presisa de magic efect ele pode funcionar sem nem 1 efect, deixa ocmo 255 que não vai aparecer nem um efeito :P)

Vou fazer o video entao :P

sobre usar variavel eu usei as das ocnfigps pro povo fazer como quiser. mais mesmo assim eu uso mta mesmo :P

 

sobre as funções é so tira-las de la e por na lib se presisar.

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

Nossa, você é rapido em, terminou e postou nem deu tempo de dizer pra add algumas funçôes a mais =], Parabens pelo topico e pelo script os dois estão otimos =]

Compartilhar este post


Link para o post
jamis    0
jamis

mt loco mano gz

Compartilhar este post


Link para o post
Grilo    2
Grilo

Bem maneiro, muito legal mesmo, da pra modificar os efeitos ne ? o do foguim heuahe! abraçoo

Compartilhar este post


Link para o post
PoSo    0
PoSo

Lendo o nome do tópico eu achava que era um Limpador de Botters, mas mesmo assim ficou muito bom.

Parabéns pela ideia,

Abraços.

Compartilhar este post


Link para o post
goiabinha    0
goiabinha

Nossa. muito bom

bem criatovoo

=]

aprovadoo

Compartilhar este post


Link para o post
Mock    32
Mock
Bem maneiro, muito legal mesmo, da pra modificar os efeitos ne ? o do foguim heuahe! abraçoo

sim o do video e um fogo mais o do script e um energy vo grava um video dele.

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

caraca Mock :o

esse ae foi..

foi..

purz..

foi !RoX!

caraca O.o nunca pensei que lua scripting chegaria a esse ponto :o

perfect!

parabééns!

Hail Mock~~

Plx!

 

flws~~!

Compartilhar este post


Link para o post
celinhoxp    0
celinhoxp

Apenas uma palavra, inovador, realmente Mock, seus scripts supera todos os outros, realmente não duvido que vá para NASA [ Risos ;s ]

Gostei bastante, meus parabens, e com certeza será muito útil, agora queria saber uma duvida, ele também lipa deads [ dead human, dead rat e etc ]

 

Abraços(Y)

Compartilhar este post


Link para o post
Mock    32
Mock
Apenas uma palavra, inovador, realmente Mock, seus scripts supera todos os outros, realmente não duvido que vá para NASA [ Risos ;s ]

Gostei bastante, meus parabens, e com certeza será muito útil, agora queria saber uma duvida, ele também lipa deads [ dead human, dead rat e etc ]

 

Abraços

sim qualquer item que da pra mover ele com um player.

Compartilhar este post


Link para o post
aleff02    0
aleff02

Gostei Bem Eficiente ;D

 

Melhor do q o comando

 

/clean isso ja esta bem ultrapassado parabens ;D

Compartilhar este post


Link para o post
BenGo    0
BenGo

alguem pode faxer o negocio pra mim colocar no actions.xml eu nun manjo muit bem nessas coisa... e parabens muito legall esse script tomara que vc fassa outros melhores!!

Compartilhar este post


Link para o post
BenGo    0
BenGo

pow to vendo q ninguem vai em ajduar certo??

Compartilhar este post


Link para o post
Bryan™    0
Bryan™

aqui ele fica parado e não anda x.x e também não remover, to usando a ultima versão do TFS (crying nao sei oque x.x)

Compartilhar este post


Link para o post
Wolowizard    0
Wolowizard

Caraaamba ;]

Que TutoriaaaL [aah, se todos os Tutoriais fossem assim :]]

Sem Falar no Otimo Script ;]

Mas acho que ele anda pouco e etc.

e Melhor o Velho /clean :]

Compartilhar este post


Link para o post
Henke Rula    4
Henke Rula

kra, tb estou com o mesmo problema do Bryan

ele cria o bot mais nao limpa e fica só falando as palavras principalmente block

 

uso Tfs 0.3.5 Crynsom Dansom

 

se puder ajudar agradecemos

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×