domingo, setembro 19, 2010

Criaçao De Macros

I - Introdução:

Vamos começar dizendo que o Guru das Macros é Cogwheel. Caso queira ir fundo no assunto, eu sugiro a leitura de seu post nos fóruns internacionais (que inclusive foi fixado pela Blizzard), e depois vá ao site dele. Existem outros jogadores que criaram guias específicos, mas eles repisam o que outros guias já disseram.

Hoje é dia de introdução: O que é uma macro? Segundo a definição de Cogwheel, "macro é um slash command". Mais acuradamente, uma macro é um ou mais comandos, possivelmente incluindo-se parâmetros de funcionamento (limitadores de várias formas e funções), estabelecidos de tal forma que possam ser atribuídos a uma só tecla de atalho (Key Binding).

Então, a melhor coisa que poderíamos colocar aqui é uma lista completa desses comandos, certo? Bem, eu tenho más notícias e então boas notícias, mas depois dessas eu tenho mais más notícias:

A má notícia - não existe uma listagem definitiva.
A boa notícia - você pode fazer a sua listagem ( e esse guia pretende explicar como).
E a má notícia de novo - você somente poderá ter acesso aos comandos, você não terá acesso a uma lista de possíveis (ou requeridos) parâmetros.

Primeiro de tudo - a extensão máxima de uma macro é limitada em 255 caracteres, espaços, vírgulas e mudanças de linha contam como tal. Se você precisar de mais, será necessário escrever um script. E sim, eu eventualmente pretendo iniciar o leitor em scripts, mas isso será feito em passos lentos e fáceis.

Segundo - uma macro interrompe o jogo. Isso significa que o jogo PAUSA enquanto a macro é executada.

Essa é a principal razão do porque os jogadores não podem querer uma "macro que caste algo, aguarde o GCD (Global Cooldown) e caste de novo", esse tipo de macro irá falhar sempre - o relógio do jogo (cooldown e todo o resto) para aguardando a macro chegar ao final. Duas coisas precisam ser ditas aqui. O que pausa é o relógio do SEU COMPUTADOR, ou seja o servidor continua funcionando, os mobs continuam te batendo, etc..., ou seja, se você fizer uma macro que não acabe, o seu char ficará pausado, sem que a macro chegue no final enquanto o jogo continua no servidor. E segundo, é muito difícil que a Blizzard "conserte" isso, pois essa mecânica de evitar casts instantâneos um seguido do outro, é a melhor mecânica para evitar boots, que são programas de computador que jogam sozinhos.

Terceiro - Durante essas "aulas" eu estarei tentando deixar claro quando eu estiver falando de macros propriamente ditas e quando eu estiver dando um exemplo. Para diferenciar um do outro, eu usarei o blockquote e negrito quando estiver falando de macros, assim ela parecerá assim para o leitor:
/petattack [modifier:alt,nohelp,target=focus] \
[modifier:alt,nohelp,target=focustarget] \
[nohelp,target=targettarget] \
[nohelp,target=mouseover] \
[nohelp,target=mouseovertarget] \
[harm,target=targettarget] [target=target]

Adicionalmente é importante ressaltar que a quebra de linhas é importante para uma macro. Porém por causa da formatação do blog, algumas linhas podem aparecer quebradas para o leitor mas a macro deve ser escrita junto. Então eu usei um recurso comum para programadores que é o backslash "\", esse é um atalho usado por programadores que diz ao leitor que "a próxima linha deve continuar nesta linha", ou seja, quando copiar a macro, tire o backslash e junte as linhas. Na macro acima se ela fosse escrita no jogo ela estaria toda em uma linha só, é só prestar atenção onde tem os backslashs "\".

Oh - e apenas mais um lembrete antes de começarmos. A macro acima foi a que postei no BBB's e que iniciou esse guia aqui. Ela foi feita para hunters, mas funciona para qualquer classe que tenha pet, minion, elemental, demônio ou shadowfriends. Viu, eu continuo sendo um priest.

II - Lição 01 - o básico que todo jogador ignorava, inclusive eu:

No capítulo anterior eu disse que é frustrante descobrir que você terá que fazer sua própria lista de comandos. Mas, apesar de não existir uma lista de comandos definitiva, se você foi curioso e leu o guia do Cogwheel's, viu que ele e alguns outros, compilaram uma lista bastante completa desses comandos.

Mas antes de entrarmos nesse mérito, você precisa saber algumas coisas pequenas para depois colocar tudo junto. Basicamente sobre terminologia. Para começar uma macro é um comando. Por exemplo:

/oom

Você pode ou não ter usado esse aqui, ele manda uma mensagem de voz e de texto no jogo e um gesto visual, assim todos do seu lado sabem que você está sem mana (OOM - Out of Mana). Dito isso, toda macro tem sua estrutura que é:

{comando}{opções}

Agora é necessário pausar o guia e explicar um pouco sobre programação de computadores. Sim, programação, isso porque uma macro é, antes de tudo, um pequeno programa. Quando você escreve um programa de computador, é necessário que se tenha na cabeça uma certa analogia para evitar falhas. Seu computador é, em muitas maneiras, uma criança de três anos de idade. Você não chega para seu filho de 3 anos de idade "Vá lavar as mãos" e espera sentado para ver se tudo sai conforme o esperado de um adulto. Para uma criança de 3 anos, as seguintes instruções são necessárias a fim de que ele volte com as mãos limpas, sem acidentes: "Vá ao banheiro, abra a água fria, depois a quente, molhe as mãos, a frente e as costas delas, ponha um pouco de sabão nas mãos, mas não muito, esfregue as mãos uma na outra, não deixe de esfregar nenhuma parte molhada, deixe fazer bastante espuma, não brinque com a espuma, ponha as mãos embaixo da torneira de novo, esfregue elas uma na outra, desligue a água quente, desligue a água fria, pegue a toalha, seque as mãos, se espirrou água na pia seque a pia com a toalha, ponha a toalha de volta de onde você a pegou, e volte para a mesa." Ou seja, na maioria das vezes ele fará exatamente o que você pediu e não fará o que você não pediu. Assim, parte de descobrir o que dizer e não dizer parte de sintaxe - a seqüência de palavras e símbolos que o computador compreende ou que seu filho entenda. Mais uma analogia para ajudar você a entender - se alguém lhe pede uma coca-cola, você pode usar o contexto para perguntar se ela quer um refrigerante qualquer ou exatamente uma coca-cola, isso desde que você saiba o que é uma coca-cola e que saiba que as vezes coca-cola é usada como sinônimo de refrigerante. No caso do seu computador: se ele tiver uma definição exata de coca-cola, é isso que ele trará a você, se ele não tiver definição alguma, nada vai acontecer.

(n.t.) Esse parágrafo é chato de ler, mas talvez o mais importante do texto inteiro, principalmente para aqueles que, como eu, nunca programaram um computador. Eu sempre reclamava que minhas macros criadas por mim mesmo e não copiadas da net não funcionavam, isso porque eu pressupunha que o computador sabia o que eu queria dizer a ele, quando na verdade ele não sabia. É mais fácil ensinar você a falar do jeito que o computador entende do que ensinar o computador a entender o que você quer dele.

Voltando, alguns comandos não permitem nenhuma opção - o exemplo que demos acima é um deles. Alguns comandos tem uma LIMITAÇÃO. Alguns deles são mais flexíveis, mas chegaremos a eles. mas vamos continuar com a sintaxe. Nós vamos dividir a parte de {opções} em duas subcategorias: condicionais e parâmetros.

Como iremos falar de condicionais mais pra frente, porque na verdade é a parte que irá fazer seus neurônios virarem uma pasta fumegante, mas ainda assim é importante saber o conceito. Uma condicional é basicamente um comando mais ou menos assim "se o que estou dizendo é verdade, acione o comando". Voltemos ao exemplo de lavar as mãos. Analisemos o comando "se espirrou água na pia seque a pia com a toalha", isso é uma condicional, o que você disse é "se a pia molhou, seque, se não molhou não seque". A idéia é simples, os detalhes que a fazem complexos, imagine se a pia já estivesse molhada antes? O computador secaria? O comando somente diz se a pia molhou, não diz se foi a criança que molhou, se já estava molhada, ou se choveu e molhou. Nessas condicionais que reside o verdadeiro poder das macros. Mas a complexidade deixaremos para mais adiante.

Parâmetros são, basicamente, limitadores da macro. Eles restringem e explicam o comando. Se você apenas digitar /say e nada depois disse, nada vai acontecer no jogo.

Agora se você disser:

/say Vixe Maria o tanker morreu

Agora sim, você abre a janela de chat e aparece sua mensagem digitada na tela pra todo mundo saber que o wipe está a caminho.

Agora, para a MAIORIA dos comandos, o único parâmetro permitido é target (alvo) - seja o seu target no momento, ou um outro especificado no comando. Sem exageros aqui, você não pode fazer uma macro "não esse target aí, eu quero aquele que estou guardando de reserva pro caso de dar merda".

Secure commands são os únicos comandos que a Blizzard permite o uso:

cast a spell (lançar uma magia ou habilidade)
use an item (usar um item)
change your action bar page (mudar a página da sua barra de comandos)
affect your target in ANY way (afetar o seu alvo de QUALQUER forma)

E os chamados "secure commands são os únicos que permitem condicionais em seus parâmetros. É desnecessário dizer que, a maioria das macros criadas e que são efetivas no jogo são aquelas que usam os secure commands.

Como foi dito acima, não existe uma lista definitiva dos comandos, mas Cogwheel listou a grande maioria deles, que reproduzo abaixo:

#show
#showtooltip
/assist
/cancelaura
/cancelform
/cast
/castrandom
/castsequence
/changeactionbar
/clearfocus
/cleartarget
/click
/dismount
/equip
/equipslot
/focus
/petagressive
/petattack
/petautocastoff
/petautocaston
/petdefensive
/petfollow
/petpassive
/petstay
/startattack
/stopattack
/stopcasting
/stopmacro
/swapactionbar
/target
/targetenemy
/targetfriend
/targetlasttarget
/targetparty
/targetraid
/use
/userandom

E abaixo a lista completa de condicionais, mais uma vez cortesia de Cogwheel:

help - Pode castar spell benéfico no alvo
harm - Pode castar spell maléfico no alvo
exists - Se o alvo existir
dead - Se o alvo estiver morto
stance:0/1/2/…/n - Em uma stance
stealth - Se o char estiver em Stealth
modifier:shift/ctrl/alt - Apertando e segurando o botão
button:1/…/5/ - A macro só é ativada se o botão do mouse estiver apertado
equipped: - o tipo de item está equipado (item type pode ser o espaço do inventário, item type, ou item subtype)
channeling: - Channeling o spell nomeado
actionbar:1/…/6 - Seleciona a página da barra de comandos
pet: - O pet/minion/elemental está presente
combat - Em combat
mounted - Auto explicativa
swimming - Auto explicativa
flying - Mounted ou em flight form E no ar
flyable - Em uma zona onde voar é permitido
indoors - Auto explicativa
outdoors - Auto explicativa
party - Alvo está na sua party
raid - Alvo está na sua raid/party
group:party/raid - Você está em um dos grupos de uma party/raid

Lição nº 02 - complicando um pouco (ou muito) as coisas! #*@#!**&$

Aqui as coisas começam a facilitar um pouco, pois vamos colocar o que eram apenas conceitos em prática. Nós iremos fazer agora nossa primeira macro. Ou mais de uma. E depois nós vamos usá-la e ver se ela funciona. Acreditem, algumas pessoas simplesmente se esquecem de passos importantes na hora de fazer uma macro.

Para facilitar a leitura desse guia eu sugiro que você logue na sua conta de WoW e vá para algum lugar tranqüilo, mas que possa testar as macros. Se você tem lvl alto, vá até a floresta ao lado de stormwind.

Todos os guias pedem para você abrir a sua janela de chat e digitar /m ou /macro para trazer a janela de gerenciamento de macros para a frente da tela.

Como o autor desse guia e o blog em que ele está hospedado, eu tento não colocar nenhuma imagem no blog para não poluir muito ele e a abertura dele ficar limpa e clean, de sites de WoW cheio de imagens estou cansado, difícil é achar conteúdo.

Mas para explicar algumas coisas nada melhor que uma imagem ilustrativa:















Quando é digitado /macro, não é essa imagem aí em cima que o jogador visualiza. Somente aparece a grande janela do lado direito denominada "Create Macros". E todas as caixas na parte de baixo dessa caixa estão vazias. Ah, e o "New" é da mesma cor que o "Exit", ou seja, o jogador pode clicar nele. A fim de ficar com a tela do jogo igual a tela acima colada, clique em "New" ali embaixo.

A primeira coisa que o jogador deve fazer ao criar uma macro é criar um ícone e um título para ela. E outra coisa, você pode repetir o mesmo ícone e título, apesar de eu não recomendar, quantas vezes quiser. Mas nunca pode usar o mesmo conjunto de ícone e nome juntos duas vezes.

Veja que na caixa principal, aquela que abre quando o jogador digita /macro, existe a possibilidade de fazer uma macro Geral (general) e uma para o char específico (character).

Então vamos criar uma macro passo a passo: Clique no botão "new", nomeia a macro como "teste", e neste momento, escolha qualquer ícone que achar legal EXCETO o ponto de interrogação vermelho (ele é especial e será explicado depois), após nomear e escolher o ícone, clique OKAY.

A caixa vai desaparecer. Mas uma parte da janela original ficou com a borda vermelha indicando que você pode clicar nela. No momento ela está vazia e é ali que as macros são digitadas. Vamos fazer uma macro simples, realmente simples, digite:
/cast fade

(n.t.) O escritor original deste guia era um priest e portanto a maioria das macros é direcionada à classe. No caso, faça uma macro simples, pegue o mais básico dos seus spells (Seal of Crusader do Paladino, Demon Skin, etc) e faça a macro:

/cast nome da magia ou habilidade
Pronto a macro está criada. A fim de usar ela, arraste o ícone dela para o local onde antes ficava a habilidade na sua barra.

(n.t.) Eu farei esse guia inteiro com os exemplos dados pelo autor original, você terá que adaptar o guia ao seu uso. Por exemplo, o fade é uma magia que se usa no próprio char, assim, troque essa magia para uma semelhante da sua classe a fim de que os testes funcionem. Se ela for usada num alvo idem, se tiver cooldown idem, etc, etc, etc.... Ou seja, adapte a macro ao seu jogo e a sua classe, se eu for ficar exemplificando cada macro para cada classe, não termino antes do lançamento do Wrath of the Lich King.

E agora você testa a sua macro. Clique nela, ou aperte o botão correspondente nela se você remapeou o teclado. A magia é castada. Nussa. É verdade, essa é sempre a primeira reação que temos ao usar uma macro, ainda que simples, A MACRO REALMENTE FUNCIONA.

Porém a macro tem um só comando ainda, não usamos os falados parâmetros, condicionais, etc. Vamos adicionar então a primeira condicional na macro. Eu quero que a magia que estou colocando ali (fade) somente seja castada quando estiver em combate. É irritante clicar sem querer em um botão e castar uma magia ou uma habilidade com um cooldown significativo e na hora de realmente usar ver que ela foi castada por erro.

Assim, minha macro ficaria:

/cast [combat] fade

Mas que raios!!!! Colchetes?????? hahahah, eu estou indo passo a passo. Vejam bem, a parte de sintaxe ainda não acabou, mas estou tentando colocar um pedaço de cada vez e conforme vão surgindo as necessidades. Na linguagem, de macros do WoW, TODAS as condicionais devem vir [entre colchetes]. Como toda regra tem sua exceção, essa também tem. Todas as condicionais, MENOS UMA, tem que vir [entre colchetes], mas isso nos veremos quando explicarmos o mecanismo de /castsequence. Esse comando causa tantas frustrações e dúvidas que vamos guardar ele para um capítulo específico.

Da macro acima podemos tirar a seguinte conclusão: Comandos sempre vem antes de condicionais que sempre vem antes de parâmetros. Agora complicou de vez.

Na verdade o que a macro acima faz é dizer ao jogo: "se eu estiver em combate, caste fade, caso contrário não faça nada". Assim o comando deve vir antes (para que o computador saiba o que fazer se a condicional for encontrada) verificar se a condicional é verdadeira ou falsa (a fim de desencadear o parâmetro) e por último, verificado o que fazer e quando fazer, finalmente desencadear a ação.

Explicando o funcionamento de uma macro: não a sintaxe, mas já aviso que vamos ter que voltar a ela mais pra frente, mas ainda necessário para que você saiba lavar as mãos. Em uma macro de diversas linhas, cada linha é independente. É isso mesmo, o que uma linha faz tem zero de efeito DIRETO na linha seguinte ou anterior (com uma exceção é claro, que citaremos mais pra frente). Quando você inicia uma linha, você acabou de resetar o padrão acima, você precisa colocar um novo comando, incluir quaisquer condicionais que queira levar em consideração, e incluir os parâmetros.

Se você colocar na linha seguinte um ponto e vírgula ";" você está dizendo ao computador que o comando, apenas o comando, é o mesmo da linha anterior. Como o jogador somente tem 255 caracteres disponíveis é sempre bom ter isso em mente.

Então, para que estamos falando de linhas múltiplas, oras, porque este guia é passo a passo, então vejamos como a macro pode ser expandida:

/cast [nocombat] resurrection
/cast fade

Oras, não é interessante, acabei de colocar dois spells que estão SEMPRE na barra de um priest, mas quando um é usado o outro não pode ser usado, ou seja, a macro acabou de economizar espaço para você, dois spells e um botão, com duas condicionais. Se estiver fora de combate ele casta ressurrection e se estiver em combate casta fade. Mas analisando bem a macro você notou algumas mudanças na macro.

Primeiro foi removido o [combat] do fade e colocado a condicional [nocombat] na frente de ressurection. Bom....a linguagem da macro vai, normalmente, tentar executar CADA LINHA de uma macro. Assim dito, a Blizzard não quer que ninguém consiga criar uma macro metralhadora, que é apertada uma vez e faça tudo pelo jogador (simplificar é uma coisa), como castar 4 DOTs instantâneos por exemplo. Assim, se uma linha desencadeia um cooldown (e todos os spells e habilidade tem um cooldown mínimo de 1 segundo definido pela Blizz) todas as outras linhas que tenham que esperar o cooldown não funcionarão. A macro vai tentar conseguir uma mensagem de "esperando o cooldown" do servidor, e irá para a próxima linha. Isso é verdade até para spells e habilidade que APARENTEMENTE não tenham cooldown em sua descrição. Assim, se você estiver em combate e castar a sua macro sem o [nocombat], você receberá uma mensagem de erro dizendo que você está em combate e que o ressurection não pode ser castado, na verdade a mensagem apenas dirá que você está em combate, o resto tem que ser deduzido pelo jogador.

Viu só, o computador apenas pode fazer uma coisa de cada vez. Assim a ordem tem que ser: dizer para castar o spell; começar o cooldown; checar a validade das condicionais (se está ao alcance do spell, se o alvo não está morto, se você não está correndo); começar o cast da habilidade ou retornar a mensagem (out of range, cannot do that while in combat, etc.). Só depois disso tudo a nova linha se inicia. Mas ops, o cooldown da primeira linha ainda não acabou, por isso não pode ser castada a nova habilidade.

Mesmo assim a macro acima irá funcionar. E o porque? Porque eu disse a ela que só execute a primeira linha SE E QUANDO você não estiver em combate. Assim se você estiver em combate ela falha automaticamente e passa a segunda linha sem esperar o cooldown, se não estiver em combate ela casta o ressurection e esse, como tem de esperar o cooldown, não inicia pelo que disse no parágrafo anterior.

Complicado, sim, mas a manha vem com o tempo. O que a macro fez foi perguntar no primeiro spell: "a condicional é verdadeira? se sim caste o spell, se não ignore o resto da linha e passe para a próxima delas.

Segunda alteração, meio óbvia e já citada acima. Coloquei o "no" antes da condicional. Isso porque toda condicional aceita o "no" antes dela. Assim do mesmo jeito que a primeira macro dizia "se eu estiver em combate caste fade", a segunda diz "se eu não estiver em combate caste ressurection".

Terceiro - porque a condicional foi movida? Ou seja, não podia ter continuado a /cast [combat] fade na primeira linha e DEPOIS a ressurection na outra linha sem a condicional? Sim poderia, e a macro teria funcionado perfeitamente. Mas vamos introduzir algo extremamente útil para macros, e como isso já foi citado anteriormente, está na hora de trazer ele para o guia.

Voltamos à lição anterior, a lista de comandos e as ressalvas de que ia citar sobre o ponto de interrogação mais para frente e sobre dois comandos que SÃO AFETADOS por outras linhas.

Se a primeira linha de sua macro for #show ou #showtooltip E VOCÊ ESCOLHEU o ponto de interrogação como ícone da macro, o ícone que irá aparecer em sua barra de ferramentas é o do primeiro parâmetro que será castado, a fim de exemplificar e mostrar a diferença do #show do #showtooltip, vamos primeiro atualizar nossa macro:

#showtooltip
/cast [nocombat] resurrection
/cast fade

Abra também a janela de macros, clique na sua macro e mude o ícone que você escolheu pelo ponto de interrogação.

Agora olhe para o seu botão na sua barra de ferramentas. O que você vê? Sim, o ícone de ressurrection. Mas tente entrar em combate. Pronto, o ícone muda automaticamente para o segundo parâmetro, qual seja, fade. Os comandos #show e #showtooltip não afetam nenhuma linha, mas é afetado por todas as linhas. Assim se a condição da primeira linha é verdadeira (não estou em combate) mostra o ícone do primeiro parâmetro, se a condição da primeira linha muda para falso (você ataca alguém) o ícone muda para o segundo parâmetro.

Vá lá testar e se divertir um pouco.

Pronto, você está de volta e quer me mandar 1.000.000 de golds no meu char pela ajuda que estou te dando aqui. hahahahahahahaha

Voltando ao guia. Qual a diferença dos comandos #show e #showtooltip? O primeiro somente mostra o ícone, o segundo é um ícone e uma ferramenta. Se você passar o mouse sobre o ícone que estiver aparecendo no momento, ele vai mostrar os atributos do spell ou habilidade como mana, cooldown, rank, etc. Ou seja, aquela caixinha é chamada de tooltip.

Pronto, você tem uma macro útil pronta. E não somente se você é um priest, siga os mesmos passos com outra classe e char, mas mudando os spells e aplique o que aprendeu aqui. Veja qual o spell que você usa em combate e um que não usa em combate e faça o mesmo teste. Assim que a macro estiver pronta, renomeie ela. Siga os mesmos procedimentos que você fez para mudar o ícone e mude o nome dela para o nome que você quiser. Mas a fim de melhorar ainda mais a sua jogabilidade, vamos remapear o seu teclado para atribuir uma tecla do seu teclado a ela, assim você sempre poderá clicar nela, ou apertar o botão do teclado para iniciar a macro.

(n.t.) Neste ponto eu sugiro a leitura desse meu post aqui para que você entenda a eterna e interminável discussão de Clickers e Pushers.

Assim que a macro estiver pronta, puxe ela para uma de suas barras de ferramentas, não precisa ser na padrão, pode ser em uma lateral mesmo. Caso você não saiba habilitar as barras de ferramentas auxiliares, clique em "esc", clique em "interface" clique em "tollbars" e habilite tudo menos o "lock toolbar", pronto, todas as barras de ferramentas do WoW estão aparecendo na tela. Você eventualmente pode mudar elas de lugar, rearranjar botões, mudar a cara delas, tudo com o auxílio de Addons específicos para as barras de ferramenta, mas isso é trabalho para outro post.

Para remapear o seu teclado, será necessário clicar "esc", depois em "Key Bindings". Você verá a descrição da barra de ferramentas do lado esquerdo e as atribuições do teclado àquela barra. A primeira coisa que se nota é que cada espaço (slot) da barra pode ter atribuída pelo menos duas teclas ou botões do mouse. A segunda coisa importante aqui é que, da mesma forma que a macro, você pode atribuir um botão no teclado no geral (ele vai funcionar para todos os seus chars) ou pode fazer isso para um char específico. Eu prefiro fazer sempre específico, pois cada classe joga diferente da outra.

Agora role a tela até achar qual foi o slot que você atribuiu à sua macro novinha, caso se confunda, refaça o caminho de abrir cada uma das barras e fazê-las aparecer na tela, automaticamente voce irá perceber qual barra é a de baixo, qual a do lado e qual a outra.

Escolha o slot correspondente, clique com o botão esquerdo no primeiro botão vermelho e aparecerá “Press key to bind command", selecione a tecla do teclado que você quer que corresponda à sua macro nova, clique neste botão, clique em "confirm" e TARÁÁÁÁÁÁÁÁ´seu teclado acaba de ser remapeado. Toda vez que você clicar na tecla escolhida ela acionará a macro.

Pronto, a primeira lição acaba aqui, é bastante coisa para ler, estudar, entender e testar. O resto do guia vem ainda essa semana.

Espero que gostem.

Abraços

Nenhum comentário:

Postar um comentário