Jump to content

Okuz

Member
  • Content Count

    98
  • Donations

    0.00 BRL 
  • Joined

  • Last visited

  • Days Won

    1

Okuz last won the day on March 9

Okuz had the most liked content!

Community Reputation

50 Sábio

About Okuz

  • Rank
    Membro Iniciante
  • Birthday 02/23/1991

Profile Information

  • Genre
    Masculino
  • Cidade / UF
    Brasil
  • Interesses
    Official Behaviors

Contact Methods

  • Skype
    lucas.oliveira853

Recent Profile Visitors

3,985 profile views
  1. Muito bem, conforme o @Mihael já disse, não é uma boa prática você abrir vários tópicos sobre o mesmo assunto, pois isso é contra as regras e você poderá ser punido por flood. Tente sempre agrupar as informações pertencentes a um mesmo assunto no mesmo tópico e defina a estrutura do tópico da maneira mais clara possível, dessa forma você facilita e muito a vida das pessoas que irão ajuda-lo(a). Você já é a segunda ou terceira pessoa que eu ajudo em menos de 3 dias com o mesmo problema, vocês ignoram as mensagens de erro da console! NÃO FAÇAM ISSO! 1) Conversão dos comandos de script do emulador "antigo" para o emulador "novo". https://forum.brathena.org/index.php?/topic/10110-resolvido-npc-brathenacronuseathena/ 2) Hoje em dia, os cabeçalhos de NPC não usam mais o número para referenciar uma sprite, no lugar é utilizada uma constante que remete a este número. http://nn.ai4rei.net/dev/npclist/ 3) Não existe nenhuma mapflag chamada "water" e o script tenta fazer uso dela. Isso significa que ou falta um .patch/.diff pra editar o código fonte de modo a implementar essa mapflag personalizada. 4) Você não pode setar mapflags de PvP e GvG, no mesmo mapa, simultaneamente. 5) Tente substituir, no seu arquivo SQL, o seguinte trecho (não tenho certeza se vai funcionar, não testei!): ) TYPE=MyISAM; por: ) ENGINE=MyISAM; PS: Se você não souber inglês, basta utilizar o Google Translate. Grande parte dos [Error] e [Warning] são autoexplicativos e você consegue resolve-los apenas interpretando a mensagem. Att, _Okuz_.
  2. Olá thopa0000, Como já informei em outro tópico, por favor poste imagens da sua console do map-server para verificarmos se é exibido algum erro no momento em que você está tentando iniciar um diálogo com o NPC. Att, _Okuz_.
  3. Olá thopa0000, Algum erro na console do map-server? Se possível tire print da console e poste para analisarmos qual erro é exibido ao conversar com o NPC. Sobre a tabela, basta copiar o conteúdo em um arquivo de texto comum e salvar com a extensão ,sql. Este arquivo deverá ser importado para o seu banco de dados (mesmo procedimento de importar a tabela main.sql) para que a tabela fique disponível para manipulação. Att, _Okuz_.
  4. Olá thopa0000, Este script que você encontrou está bem desatualizado e possui uma lógica um tanto quanto redundante. Recomendo que você busque outro script igual ou similar na seção de downloads do fórum. Att, _Okuz_.
  5. Olá Rotciv18, Dê uma lida neste guia disponibilizado na Wiki do rAthena, ele está em inglês, porém explica o procedimento completo de se adicionar um item:https://github.com/rathena/rathena/wiki/Custom_Items A única parte que você tem que se atentar, conforme citado pelo @Katsura, é que para visuais as bitmasks são: Ou seja, se você quiser um item visual que ocupe os slots do topo e do meio, você terá que somar os bits. Ex: 1024 + 2048 = 3072. Isso significa que no campo loc do database, se você colocar 3072, o item irá ocupar os slots apontados anteriormente. Att, _Okuz_.
  6. @orkut compreendo, além disso, não são literalmente erros... é que trata-se de um script bem antigo, construído com uma lógica um tanto quanto peculiar e utilizando comandos bem antigos. Hoje em dia temos formas bem melhores de programar as mesmas lógicas, com comandos muito mais intuitivos, conforme a minha última versão do mesmo NPC. xD Att, _Okuz_.
  7. Só pra constar, identifiquei alguns erros e realizei algumas alterações no script, segue o Changelog: Alteração dos escopos de algumas variáveis; Alteração da sintaxe do menu para utilizar o comando select no lugar do comando menu, em razão de Labels que são criadas e não são reaproveitadas; Implementação dos comandos enable_items e disable_items, de acordo com o funcionamento dos scripts de encantamento oficiais; Correções gramaticais em alguns diálogos e demais ajustes diversos; Seção de configurações movida para o final do arquivo. As alterações estão presentes nessa versão aqui, se você puder testar e me dizer se está funcionando de acordo eu e outros membros do fórum agradeceríamos muito. //============================================= //== Script ~ Cronus || Encantador global ===== //== Versão: ================================== //== 1.8 //== Autor: =================================== //== _Okuz_ || CinquentaeUM || Vulthoom //============================================= prontera,150,150,3 script Mago Negro 4_M_REPAIR,{ mes .npc$; mes "Gostaria de refinar o seu equipamento, usando um tipo de magia negra desconhecida?"; next; mes .npc$; mes "Você vai precisar de " + .item_amount + "x - " + getitemname(.item_id) + "."; mes "Deseja usar os meus poderes mágicos?"; next; if (select("Sim","Não") == 2) goto S_Cancel; mes .npc$; mes "Se seu equipamento tiver algum refinamento ou cartas, será tudo perdido no processo."; mes "Selecione o item que você quer encantar."; next; set .@option, select(getequipname(1) + ":" + getequipname(2) + ":" + getequipname(3) + ":" + getequipname(4) + ":" + getequipname(5) + ":" + getequipname(6) + ":" + getequipname(7) + ":" + getequipname(8) + ":" + getequipname(9) + ":" + getequipname(10) + ":" + "Eu mudei de ideia."); if (.@option != 11) callsub(S_Check, .@option); else goto S_Cancel; // Arg(0): option index. S_Check: if (getequipisequiped(getarg(0))) { disable_items; set .@item, getequipid(getarg(0)); mes .npc$; mes "Deseja encantar: " + getitemname(.@item) + "?"; mes "Lembre-se que você só pode ter ^FF0000UM^000000 desse item no inventário."; next; if (select("Sim","Não") == 2) goto S_Cancel; if (!countitem(.@item)) { mes .npc$; mes "Você não tem nenhum item. Volte depois."; close; } else if (countitem(.@item) > 1) { mes .npc$; mes "Você tem itens demais. Volte com apenas UM."; close; } else if (countitem(.item_id) < .item_amount) { mes .npc$; mes "Você não " + getitemname(.item_id) + " suficiente. Volte aqui quando tiver " + .item_amount + "x - " + .item_amount + "."; close; } if (.sys == 1 && getitemslots(.@item) > 0) { mes .npc$; mes "O equipamento não pode conter nenhum slot."; close; } mes .npc$; mes "Okay, vamos lá!!!"; next; set .@chance, rand(1,.rate); nude; delitem .item_id, .item_amount; delitem .@item, 1; //+5 if (.@chance == 1) set .@addpart,4823; else if (.@chance == 2) set .@addpart,4823; else if (.@chance == 3) set .@addpart,4823; else if (.@chance == 4) set .@addpart,4823; else if (.@chance == 5) set .@addpart,4823; else if (.@chance == 6) set .@addpart,4823; //+4 else if (.@chance == 7) set .@addpart,4823; else if (.@chance == 8) set .@addpart,4823; else if (.@chance == 9) set .@addpart,4823; else if (.@chance == 10) set .@addpart,4823; else if (.@chance == 11) set .@addpart,4823; else if (.@chance == 12) set .@addpart,4823; //+3 else if (.@chance == 13) set .@addpart,4823; else if (.@chance == 14) set .@addpart,4823; else if (.@chance == 15) set .@addpart,4823; else if (.@chance == 16) set .@addpart,4823; else if (.@chance == 17) set .@addpart,4823; else if (.@chance == 18) set .@addpart,4823; //+2 else if ((.@chance == 19) || (.@chance == 20)) set .@addpart,4823; else if ((.@chance == 21) || (.@chance == 22)) set .@addpart,4823; else if ((.@chance == 23) || (.@chance == 24)) set .@addpart,4823; else if ((.@chance == 25) || (.@chance == 26)) set .@addpart,4823; else if ((.@chance == 27) || (.@chance == 28)) set .@addpart,4823; else if ((.@chance == 29) || (.@chance == 30)) set .@addpart,4823; //+1 else if ((.@chance == 31) || (.@chance == 32)) set .@addpart,4823; else if ((.@chance == 33) || (.@chance == 34)) set .@addpart,4823; else if ((.@chance == 35) || (.@chance == 36)) set .@addpart,4823; else if ((.@chance == 37) || (.@chance == 38)) set .@addpart,4823; else if ((.@chance == 39) || (.@chance == 40)) set .@addpart,4823; else if ((.@chance == 41) || (.@chance == 42)) set .@addpart,4823; else { specialeffect2 EF_SUI_EXPLOSION; mes .npc$; mes "Bem, isso é muito ruim."; mes "Não consegui encantar seu equipamento."; close2; enable_items; end; } specialeffect2 EF_REPAIRWEAPON; mes .npc$; mes "Parece que tudo ocorreu bem."; mes "Você recebeu um adicional de: " + getitemname(.@addpart); mes "Tome seu item!"; getitem2 .@item, 1, 1, 0, 0, 0, 0, 0, .@addpart; close2; enable_items; end; } mes .npc$; mes "Eu não posso encantar o ar..."; close; S_Cancel: mes .npc$; mes "Okay. Volte quando precisar de algo."; close; OnInit: // ============================================================== // CONFIGURAÇÕES GERAIS set .npc$,"[^0000FF Mago Negro ^000000]"; // NOME DO NPC set .item_id,30019; // ID DO ITEM QUE SERÁ COBRADO set .item_amount,1; // QUANTIDADE DO ITEM QUE SERÁ COBRADO // ============================================================== // CONFIGURAÇÕES DE CHANCE DE FALHA set .rate,42; // EX 1: .rate == 100 = 42% de sair algum enchant, 58% falhar. // EX 2: .rate == 42 = 100% de chance de sair algum enchant, 0% de falhar. // EX 3: .rate == 12 = 100% de chance de sair algum enchant, 0% de falhar. Apenas enchants de nível 5 e 4. // ============================================================== set .sys,0; // Se o equipamento tiver slot, não fará o enchant. // 1 para não encantar se tiver slot, 0 para encantar independente. // ============================================================== } Att, _Okuz_.
  8. Olá orkut, Aqui está, faça bom proveito. PS: Leia o script com atenção, assim você conseguirá identificar as alterações que foram feitas para que num futuro próximo você consiga faze-las por conta. //============================================= //== Script ~ brA || Encantador global ======== //== Versão: ================================== //== 1.7 //== Autor: =================================== //== CinquentaeUM || Vulthoom //============================================= prontera,150,150,3 script Mago Negro 4_M_REPAIR,{ // ============================================================== // CONFIGURAÇÕES GERAIS set .npc$,"[^0000FF Mago Negro ^000000]"; // NOME DO NPC set .item_id,30019; // ID DO ITEM QUE SERÁ COBRADO set .item_amount,1; // QUANTIDADE DO ITEM QUE SERÁ COBRADO // ============================================================== // CONFIGURAÇÕES DE CHANCE DE FALHA set @rate,42; // EX 1: @rate == 100 = 42% de sair algum enchant, 58% falhar. // EX 2: @rate == 42 = 100% de chance de sair algum enchant, 0% de falhar. // EX 3: @rate == 12 = 100% de chance de sair algum enchant, 0% de falhar. Apenas enchants de nível 5 e 4. // ============================================================== set @sys,0; // Se o equipamento tiver slot, não fará o enchant. // 1 para não encantar se tiver slot, 0 para encantar independente. // ============================================================== mes .npc$; mes "Gostaria de refinar o seu equipamento, usando um tipo de magia negra desconhecida?"; next; mes .npc$; mes "Você vai precisar de " + .item_amount + "x - "+getitemname(.item_id)+"."; mes "Deseja usar os meus poderes mágicos?"; next; switch(select("Sim","Não")) { case 1: mes .npc$; mes "Se seu equipamento tiver algum refinamento ou cartas, será tudo perdido no processo."; mes "Selecione o item que você quer encantar."; next; menu getequipname(1),PART1,getequipname(2),PART2,getequipname(3),PART3,getequipname(4),PART4,getequipname(5),PART5, getequipname(6),PART6,getequipname(7),PART7,getequipname(8),PART8,getequipname(9),PART9,getequipname(10),PART10,"Eu mudei de idea.",L_Cancel; PART1: set @part,1; goto M_Check; PART2: set @part,2; goto M_Check; PART3: set @part,3; goto M_Check; PART4: set @part,4; goto M_Check; PART5: set @part,5; goto M_Check; PART6: set @part,6; goto M_Check; PART7: set @part,7; goto M_Check; PART8: set @part,8; goto M_Check; PART9: set @part,9; goto M_Check; PART10: set @part,10; goto M_Check; PART11: goto L_Cancel; case 2: goto L_Cancel; } M_Check: if (getequipisequiped(@part)) { set .@item, getequipid(@part); mes .npc$; mes "Deseja encantar: "+getitemname(.@item)+"?"; mes "Lembre-se que você só pode ter ^FF0000UM^000000 desse item no inventário."; next; switch(select("Sim","Não")) { case 1: if(countitem(.@item) > 1) { mes .npc$; mes "Você tem itens demais. Volte com apenas UM."; close; } if(countitem(.@item) == 0) { mes .npc$; mes "Você não tem nenhum item. Volte depois."; close; } if(countitem(.item_id) < .item_amount) { mes .npc$; mes "Você não " + getitemname(.item_id) + " suficiente. Volte aqui quando tiver " + .item_amount + "x - " + .item_amount + "."; close; } if(@sys == 1 && getitemslots(.@item) > 0) { mes .npc$; mes "O equipamento não pode haver nenhum slot."; close; } mes .npc$; mes "Okay, vamos lá!!!"; next; callsub S_EnchantArmor,.@item,@rate; case 2: goto L_Cancel; } } mes .npc$; mes "Eu não posso encantar o ar..."; close; S_EnchantArmor: set .npc$,"[^0000FF Mago Negro ^000000]"; set @itemid,getarg(0); set @failrate,getarg(1); nude; set @enc_ran,rand(1,@failrate); delitem .item_id, .item_amount; delitem @itemid,1; //+5 if (@enc_ran == 1) set @addpart,4823; else if (@enc_ran == 2) set @addpart,4823; else if (@enc_ran == 3) set @addpart,4823; else if (@enc_ran == 4) set @addpart,4823; else if (@enc_ran == 5) set @addpart,4823; else if (@enc_ran == 6) set @addpart,4823; //+4 else if (@enc_ran == 7) set @addpart,4823; else if (@enc_ran == 8) set @addpart,4823; else if (@enc_ran == 9) set @addpart,4823; else if (@enc_ran == 10) set @addpart,4823; else if (@enc_ran == 11) set @addpart,4823; else if (@enc_ran == 12) set @addpart,4823; //+3 else if (@enc_ran == 13) set @addpart,4823; else if (@enc_ran == 14) set @addpart,4823; else if (@enc_ran == 15) set @addpart,4823; else if (@enc_ran == 16) set @addpart,4823; else if (@enc_ran == 17) set @addpart,4823; else if (@enc_ran == 18) set @addpart,4823; //+2 else if ((@enc_ran == 19) || (@enc_ran == 20)) set @addpart,4823; else if ((@enc_ran == 21) || (@enc_ran == 22)) set @addpart,4823; else if ((@enc_ran == 23) || (@enc_ran == 24)) set @addpart,4823; else if ((@enc_ran == 25) || (@enc_ran == 26)) set @addpart,4823; else if ((@enc_ran == 27) || (@enc_ran == 28)) set @addpart,4823; else if ((@enc_ran == 29) || (@enc_ran == 30)) set @addpart,4823; //+1 else if ((@enc_ran == 31) || (@enc_ran == 32)) set @addpart,4823; else if ((@enc_ran == 33) || (@enc_ran == 34)) set @addpart,4823; else if ((@enc_ran == 35) || (@enc_ran == 36)) set @addpart,4823; else if ((@enc_ran == 37) || (@enc_ran == 38)) set @addpart,4823; else if ((@enc_ran == 39) || (@enc_ran == 40)) set @addpart,4823; else if ((@enc_ran == 41) || (@enc_ran == 42)) set @addpart,4823; else { specialeffect2 EF_SUI_EXPLOSION; mes .npc$; mes "Bem, isso é muito ruim."; mes "Não consegui encantar seu equipamento."; close; } specialeffect2 EF_REPAIRWEAPON; mes .npc$; mes "Parece que tudo ocorreu bem."; mes "Você recebeu um adicional de: "+getitemname(@addpart); mes "Tome seu item!"; getitem2 @itemid, 1, 1, 0, 0, 0, 0, 0, @addpart; close; L_Cancel: mes .npc$; mes "Okay. Volte quando precisar de algo."; close; } Att, _Okuz_.
  9. Olá l4nd, Seu erro é simples, independente da quantidade de loots que o jogador vai retirar da caixa (@aleatoriodrop), você já definiu o item que ele irá receber (@aleatorioitens) antes do laço começar a iteração, pois a variável foi definida FORA DO LAÇO! Dessa forma, a cada iteração do for-loop você continuará com o mesmo item escolhido primeiramente. Além disso, .@i não é um vetor e você não encontrará valor algum (na verdade quando não tem valor algum pra inteiro, assume-se 0 como valor padrão) ao utilizar a seguinte sintaxe: .@i[@aleatorioitens] Você está tentando acessar um índice de uma variável que nem vetor é, percebe o erro? O correto seria você mover a declaração da variável @aleatorioitens pra dentro do bloco do for-loop e, além disso, você também deverá trocar a sintaxe apontada acima para a seguinte sintaxe: for(set .@i, 0; .@i < @aleatoriodrop; set .@i, .@i + 1) { set @aleatorioitens, rand(getarraysize(.itens)); getitem .itens[@aleatorioitens], .qntitens[@aleatorioitens]; } Se você não sabe a diferença entre uma variável e um vetor eu recomendo a leitura deste arquivo: https://github.com/Cronus-Emulator/Cronus/blob/master/doc/Comandos_de_Script_PT-BR.txt Segue também a minha versão do seu script, com a alteração do escopo de algumas variáveis: prontera,150,150,5 script teste132 900,{ // Configurações OnInit: setarray .itens[0], 607, 608, 609, 610, 611; // Id de cada item setarray .qntitens[0], 1, 2, 3, 4, 5; // Quantidade de cada item set .qntdropmin, 1; // Defina quantos itens pode dropar no minimo da caixa set .qntdropmax, 4; // Defina quantos itens pode cair no maximos da caixa end; set .@aleatoriodrop, rand(.qntdropmin, .qntdropmax); // Randomiza a quantidade de itens que pode ser recebido pela caixa for (set .@i, 0; .@i < .@aleatoriodrop; set .@i, .@i + 1) { set .@j, rand(getarraysize(.itens)); getitem .itens[.@j], .qntitens[.@j]; } } Att, _Okuz_.
  10. Okuz

    Up clan

    Olá Skanke, Não testei, fiz aqui rapidão... se você encontrar algum problema estou à disposição. prontera,150,150,5 script Gerente de Clãs#guild_up 4_M_DWARF,{ mes "[Gerente de Clãs]"; if (!getcharid(2)) { mes "Para utilizar os meus serviços você precisa estar em um clã."; } else if (getguildmasterid(getarg(2)) != getcharid(0)) { mes "Para utilizar os meus serviços você precisa ser o líder do clã."; } else if (countitem(.cmgr_item_id) < .cmgr_item_amount) { mes "Você não possui a quantidade necessária de " + .cmgr_item_amount + "x - " + getitemname(.cmgr_item_id) + " para aumentar o nível do seu clã."; } else { query_sql "SELECT `guild_lv` FROM `guild` WHERE `guild_id` = " + getcharid(2), .@guild_lv; if (.@guild_lv >= .cmgr_max_lv) { mes "Não tenho permissão para aumentar o nível de Clãs que estejam acima do nível " + .cmgr_max_lv + "."; } else { delitem .cmgr_item_id, .cmgr_item_amount; atcommand "@glvl +" + (.cmgr_max_lv - .@guild_lv); mes "O nível do seu clã foi alterado com sucesso!"; } } close; OnInit: set .cmgr_max_lv, 12; set .cmgr_item_id, 671; set .cmgr_item_amount, 5000; } Att, _Okuz_.
  11. Depende, você fez 300/150 renewal ou pre-renewal, pois as formulas de dano são diferentes acredito eu. Outro ponto, você aumentou os atributos? Se você aumentou, você fez o cálculo pra saber quanto o jogador vai receber de pontos de atributo do 99 ao 300? É com esses pontos que você vai subir algum atributo até o máximo (ou até onde você achar necessário) pra poder obter um dano elevado de acordo com a fórmula da habilidade que você está utilizando, ou até mesmo o ataque físico. Neste tópico eu explico um pouco sobre este assunto: Att, _Okuz_.
  12. Este erro ocorre porque algum comando de script tentou utilizar um mapa que não está presente no map_index / cache. Infelizmente não sei te dizer em que momento que o erro ocorre, mas certifique-se de que você tem todos os mapas, que o script precisa para ser executado, implementados em seu emulador. Sobre outras questões do jogo, não vou me prontificar porque este é um script bem antigo. A lógica presente nele (do meu ponto de vista) não está boa, acho que na época que o script foi feito não existiam comandos e formas melhores de se fazer isso, porém, hoje em dia há. Para os demais problemas eu recomendo que você estude o básico / intermediário de scripting pois você mesmo será capaz de saná-los. Isso é o máximo que eu posso fazer, desculpe. Att, _Okuz_.
  13. Olá shirazpanro, Sua dúvida foi meio vaga, o que exatamente você quer ajustar? Se você estiver se referindo às fórmulas, você deverá alterá-las direto no código fonte do emulador e isso requer algum conhecimento prévio em programação (C), para que você possa compreender, alterar e recompilar o projeto. Att, _Okuz_.
  14. Olá Dream Catcher, Eu não analisei a fundo a lógica do script, mas vou te ajudar identificar e corrigir alguns erros. O comando getmapxy está esperando como primeiro argumento uma variável do tipo string. Neste caso, a variável passada é do tipo int. Correção: getmapxy(getd(".m$"+strnpcinfo(3)+"$"),getd(".x"+strnpcinfo(3)),getd(".y"+strnpcinfo(3)),1); Um erro interessante, se você reparar bem no script não existem laços (do, while, for), então me perguntei como poderia haver um loop infnito ali. A resposta? Acredito que os gotos, mas não tenho certeza... teste a correção segue abaixo: Correção: L_invincible: freeloop(1); // O jogador é invencível,(que se movem aleatoriamente) getmapxy(.@maplocation$,.@Xlocation,.@Ylocation,1); set .@Xlocation2,rand(5); set .@Ylocation2,rand(5); set .@Xlocation,.@Xlocation+.@Xlocation2; set .@Ylocation,.@Ylocation+.@Ylocation2; if (checkcell(.@maplocation$,.@Xlocation,.@Ylocation,cell_walkable)) goto L_invincible; freeloop(0); npcwalkto .@Xlocation,.@Ylocation; initnpctimer; end; Por último, seguem diversas mensagens de erro se referindo ao mesmo tipo de erro, eventos não encontrados. Não sei ao certo se os eventos deveriam ou não existir, como disse anteriormente não analisei a fundo o script. Portanto, segue a minha sugestão: Correções: case 1: case 2: case 3: donpcevent "::OnPacPoringEnable"; break; donpcevent "#pacporingbonus1"+.@k$+"::OnEnablePacBonus"; donpcevent "#pacporingbonus2"+.@k$+"::OnEnablePacBonus"; donpcevent "#pacporingbonus3"+.@k$+"::OnEnablePacBonus"; Isso é o máximo que eu posso fazer, espero ter ajudado de alguma forma. Att, _Okuz_.
  15. Olá Ferreira, Este script só tem um pequeno probleminha na linha 2, falta um ponto e vírgula ; nela depois da última aspas ". Mude isso: .npc$ = "[Lhz]" // Nome do npc. Para isso: .npc$ = "[Lhz]"; // Nome do npc. Att, _Okuz_.

Seja bem vindo ao Cronus-Emulator.
É sempre um prazer te-lo conosco.
Você pode visualizar nossas áreas de suporte para encontrar suas soluções sem a necessidade de se registrar!
Registrando em nossa comunidade, você poderá conhecer mais sobre nosso projeto, criar tópicos, responder tópicos existentes, baixar milhares de recursos em nosso sistema de downloads, participar de nossa comunidade, customizar seu perfil e muito mais... Se você já possui uma conta, faça seu login - ou crie uma conta. Também temos integração com Google+ e Facebook.

×
×
  • Create New...