Ir para conteúdo

eliaspalermo

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    eliaspalermo deu reputação a henriquesafadao em como abaixar xp do poketibia   
    Va em Lib,configuration, é procure  playerExperienceRate =  é diminua o valor que estive ae . o playerExperienceRate =  deminui tantu o xp do play  quantu a do Pokemon Level
     
  2. Curtir
    eliaspalermo deu reputação a .Smile em Adição no tp scroll   
    function onUse(cid, item, fromPosition, itemEx, toPosition) if getCreatureCondition(cid, CONDITION_INFIGHT) == true then return doPlayerSendCancel(cid, "You can not be in Battle.") end local config = { pos = {x = 987, y = 1029, z = 7}, -- posição que o player vai cair waittime = 1.5 -- tempo de exhaustion em segundos storage = 115818 -- storage do exhaustion } if exhaustion.check(cid, config.storage) then doPlayerSendCancel(cid, "You are exhausted") return false end if(itemEx.itemid == 13576) then doPlayerSendTextMessage(cid, 19, "Voce foi transportado de volta a File City") -- mensagem que sairá quando ele for teleportado doTeleportThing(cid, config.pos) doRemoveItem(item.uid, 1) exhaustion.set(cid, config.storage, config.waittime) end return true end  
  3. Gostei
    eliaspalermo deu reputação a Sanieg em [Resolvido] Npc battle   
    Ta dificil em...
    o erro continua na função doWinDuel
  4. Gostei
    eliaspalermo deu reputação a ViitinG em (Resolvido)Ajuda com pz mapa editor   
    Seleciona a opção para colocar o PZ e segura o botão ctrl e vai passando onde você quer retirar.
  5. Gostei
    eliaspalermo deu reputação a deivaoo em [MOD] Pokedex Window para base PDA [v1.0]   
    Eai galera, blz?
     
    Bom, vim trazer pra vcs a versão 1.0 do mod de pokedex que eu desenvolvi mês passado visando aprendizado no mundo de OTC, com o objetivo também de mostrar que o otclient é flexível suficiente para se fazer muitas coisas sem a necessidade das sources tanto do servidor quanto do client...
     
    Para aqueles que não conhecem, vejam o Show Off desse trabalho. 
    Eu fiz essa versão com o objetivo de não fazer alterações no servidor... Ou seja, tem apenas edições no OTC.
     
     
    Atualizações:
     
    1. Adicionado um pack com 276 imagens de pokemons (16,1MB);
    2. Pokemons shiny tem a exibição da imagem de pokemons normais (para alterar, basta remover
    a linha 75 do arquivo game_pokedex.lua, na pasta modules/game_pokedex de seu client);
    3. Pokedex fecha ao se deslogar do char com ela aberta [créditos a @Soulviling pela ideia];
     
     
    Bom, sem mais delongas;
     
     
    Instalação fácil:
     
    Passo 1. Faça o download do arquivo RAR (download no final do tópico);
    Passo 2. Copie a pasta modules pro seu client;
    Passo 3. "Deseja substituir?" [X]Sim  [  ]Não
    Passo 4. Só vai até o passo 3;
     
    Bom, segue uma imagem ATUALIZADA

     
    Download e Scan
  6. Gostei
    eliaspalermo deu reputação a zipter98 em [Resolvido] Item com dias   
    Pronto, código corrigido (NPC que vende o Saffari Card). Suponho que agora não hajam mais erros.
  7. Gostei
    eliaspalermo deu reputação a zipter98 em [Resolvido] Item com dias   
    Desculpe a demora. Como lhe disse por PM, estava em semana de provas e não tive como scriptear.
    Look:



    NPC que garante entrada a Saffari Zone:
    local tab = {     pos = {x = 768, y = 1007, z = 8}, -- posição x, y, z do local a teleportar o player     cardId = xxx,        --ID do Saffari Card. }   local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg)     if not npcHandler:isFocused(cid) then         return false     end     local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid     if msgcontains(msg, 'teleport') then         talkState[talkUser] = 1         selfSay("Are you sure? To enter in the Saffari Zone, you need a valid Saffari Card.", cid)     elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then         local items = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, tab.cardId)         if #items == 0 then             selfSay("You do not have any Saffari Card in your bag.", cid)             talkState[talkUser] = 0         else             local checkPlayer = false             for i = 1, #items do                 if getItemAttribute(items[i], "vality") and getItemAttribute(items[i], "vality") > os.time() then                     checkPlayer = true                     break                 end             end             if checkPlayer then                 doTeleportThing(cid, tab.pos)                 doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)                 selfSay('Boa sorte no Saffari Zone.', cid)             else                 selfSay("You do not have any valid Saffari Card in your bag.", cid)             end         end     elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then         talkState[talkUser] = 0         selfSay('Okay, Talvez em outra hora.', cid)     end     return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) NPC que vende o Saffari Card: local config = {     cardId = xxx,                --ID do Saffari Card.     price = {itemid, count},     --Preço do Saffari Card. {ID_do_item, quantidade}     days = 30,                   --Validade, em dias, do Saffari Card. } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg)     if not npcHandler:isFocused(cid) then         return false     end     local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid     if msgcontains(msg:lower(), "buy") or msgcontains(msg:lower(), "trade") then         selfSay("You wanna buy a Saffari Card for "..config.price[2].."x "..getItemNameById(config.price[1]).."? Vality: "..config.days.." days.", cid)         talkState[talkUser] = 1         return true     elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then         if doPlayerRemoveItem(cid, config.price[1], config.price[2]) then             selfSay("Here's your Saffari Card!", cid)             local item = doPlayerAddItem(cid, config.cardId, 1)             doItemSetAttribute(item, "vality", os.time() + (config.days * 24 * 60 * 60))             talkState[talkUser] = 0             return true         else             selfSay("You do not have the items.", cid)             talkState[talkUser] = 0             return true         end     elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then         selfSay("OK, bye!", cid)         talkState[talkUser] = 0         return true     end     return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  8. Gostei
    local potions = {     --[potion_id] = percent,           [12347] = 30,     [12348] = 60, } function onUse(cid, item, fromPosition, itemEx, toPosition)     if not isCreature(itemEx.uid) or not isSummon(itemEx.uid) then         return doPlayerSendCancel(cid, "Voce so pode usar potion em Pokemon's!")     elseif getCreatureMaster(itemEx.uid) ~= cid then         return doPlayerSendCancel(cid, "Voce so pode usar potion em seus Pokemon's!")     elseif getCreatureHealth(itemEx.uid) == getCreatureMaxHealth(itemEx.uid) then         return doPlayerSendCancel(cid, "Este Pokemon esta totalmente curado.")     elseif getPlayerStorageValue(cid, 52481) >= 1 then         return doPlayerSendCancel(cid, "Voce nao pode usar isto em duelo.")     end     local health = getCreatureMaxHealth(itemEx.uid) * potions[item.itemid] / 100     doPlayerSendTextMessage(cid, 27, "Your pokemon was healed.")     doSendMagicEffect(getThingPos(itemEx.uid), 172)     doSendAnimatedText(getThingPos(itemEx.uid), "+"..health, math.random(1, 255))     doCreatureAddHealth(itemEx.uid, health)     doRemoveItem(item.uid, 1)     return true end
  9. Gostei
    eliaspalermo deu reputação a zipter98 em [Resolvido] Item com dias   
    Primeiro pedido:
    local days = 30            --Dias premium que serão adicionados. function onUse(cid, item)     doPlayerSendTextMessage(cid, 27, days.." premium days added to your account.")     doPlayerAddPremiumDays(cid, days)     doRemoveItem(item.uid, 1)     return true end O segundo, caso eu tenha acesso a meu notebook, faço amanhã.
  10. Gostei
    eliaspalermo deu reputação a Sanieg em [Resolvido] com npc de batalha.   
    @eliaspalermo, 



  11. Gostei
    eliaspalermo deu reputação a Sanieg em [Resolvido] com npc de batalha.   
    Pronto ele só pode ser usado a cada 24 horas e teste ai creio que vá funcionar apenas edite as mensagens a seu gosto
  12. Gostei
    eliaspalermo deu reputação a Nextbr em Sugestão para novo servidor.   
    Tenta Usar o Executavel  do Pokemon Dash v9 no Servidor PDA ai conforme vem os Erros voce vai adaptando os Scripts do PDA para o Executavel do Pokemon dash v9 "TFS 0.3.6" 
     
    - Eu (Sosinho com Noçao de Scripting) comecei a fazer assim:
    - Peguei o Executavel e as Sources desse Servidor - Link: http://www.tibiaking.com/forum/topic/44734-pokemon-dash-v9-o-melhor-open/
    - Ai Joguei o Executavel em um Servidor PDA "PGalaxy". - Link: http://www.tibiaking.com/forum/topic/41544-pgalaxy-atx/
    - Depois que eu executei o Servidor comecei a fazer as ações dentro do Jogo com o Admin
    - Alguns Sistemas do PDA nao Teve Erro na Distro, e outras teve erro na Distro, ai eu Peguei os Erros e comecei a arrumar os Erros.
    - Isso se Chama "Adaptação"
    - Com as Sources do PDash v9 em Mãos eu e Meu Amigo fizemos as seguintes alterações:
     
    - Adicionamos 2 Novas Raças que nao Tinha no Executavel (Steel e Dark)
    - Adicionamos Pokemon Passivo 100%
    - Adicionamos Anti-Elf Trade algo assim
    - Adicionamos Anti-Divulgaçao
    - Adicionamos PokePlayerFag (Monstro Ataca Summon)
     
    - Meu Trabalho :
    http://www.tibiaking.com/forum/topic/44386-pokemon-dash-advanced-pda-sources-2015/
     
    Bj ;*
  13. Gostei
    Oi. Eu fiz esse NPC para que ele possa deixar mensagens em um bloco de notas para que os administradores vejam. É uma forma de comunicação com os jogadores.
     
    [data/npc/Mensageira.xml]
    <npc name="Mensageira" script="data/npc/scripts/messenger.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="347" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu tenho a função de deixar mensagens para que o administrador possa ler mais tarde, como críticas, ou simplesmente um bom dia. Gostaria de deixar uma {mensagem}?"/> </parameters> </npc> [data/npc/scripts/messenger.lua]
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {}   function onCreatureAppear(cid)            npcHandler:onCreatureAppear(cid)        end function onCreatureDisappear(cid)        npcHandler:onCreatureDisappear(cid)        end function onCreatureSay(cid, type, msg)        npcHandler:onCreatureSay(cid, type, msg)    end function onThink()                npcHandler:onThink()                end function creatureSayCallback(cid, type, msg)       if(not npcHandler:isFocused(cid)) then         return false     end   if talkState[cid] == 1 then         selfSay("A mensagem \""..msg.."\" foi deixada. Obrigado pela contribuicao! Sua mensagem sera revisada por um administrador.", cid) local texto = "" local read = io.open("mensagens.txt", "r") texto = read:read("*all") read:close() local write = io.open("mensagens.txt", "w") write:write(texto.."["..getPlayerName(cid)..", "..os.date("%c").."]: \""..msg.."\"\n") write:close()         talkState[cid] = 0     elseif msgcontains(msg, 'mensagem') then         selfSay("Escreva a mensagem que voce gostaria de deixar. Pede-se rever o texto e escrever claramente o que deseja. Spam causa banimento por IP.", cid)         talkState[cid] = 1     end     return TRUE end   npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())       Aí você deixa ele no templo, sei lá, faz qualquer coisa   Só pra avisar, o mensagens.txt fica na pasta raiz do servidor, lá onde tem config.lua
  14. Gostei
    eliaspalermo deu reputação a Snowsz em (Resolvido)[Resolvido] Erro move1.lua   
    local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") esta pronto!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then if isInArray({"m1", "m2", "m3"}, n) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (t"..n..") esta pronto!") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") esta pronto!") end return true end end end function onSay(cid, words, param, channel) local storage = 918271 if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de um pokemon para usar as moves.") return 0 end --alterado v2.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 if getPlayerStorageValue(mypoke, 212123) >= 1 then cdzin = "cm_move"..it.."" else cdzin = "move"..it.."" --alterado v2.5 end if it == "2" then doPlayerSendTextMessage(cid, 26, "sounds/105.wav") move = movestable[name].move2 elseif it == "3" then move = movestable[name].move3 elseif it == "4" then move = movestable[name].move4 elseif it == "5" then move = movestable[name].move5 elseif it == "6" then move = movestable[name].move6 elseif it == "7" then move = movestable[name].move7 elseif it == "8" then move = movestable[name].move8 elseif it == "9" then move = movestable[name].move9 elseif it == "10" then move = movestable[name].move10 elseif it == "11" then move = movestable[name].move11 elseif it == "12" then move = movestable[name].move12 elseif it == "13" then move = movestable[name].move13 end if isInArray({1,2,3,4,5,6,7,8,9,10,11,12,13}, it) then mLevel = move.level mCD = move.cd mName = move.name mTarget = move.target mDist = move.dist else m = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "t"..it.."") mLevel = tmList[m].level mCD = tmList[m].cd mName = m mTarget = tmList[m].target mDist = tmList[m].dist end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end --if false and getLevel(mypoke) < mLevel then if getLevel(mypoke) < mLevel then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu Pokemon ainda nao sabe usar essa move.") return 0 end if getPlayerStorageValue(mypoke, storage) > os.time() then return doPlayerSendCancel(cid, "You need wait "..(tonumber(getPlayerStorageValue(mypoke, storage)) - os.time()).." second"..((tonumber(getPlayerStorageValue(mypoke, storage)) - os.time()) > 1 and "s" or "").." to cast this spell.") end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (mCD + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "voce deve esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..mName.." novamente.") return 0 end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Voce nao pode atacar em area protegida.") return 0 end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v2.3 end if (mName == "Team Slice" or mName == "Team Claw") and #getCreatureSummons(cid) < 2 then --alterado v2.5 doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return 0 end --alterado v2.6 if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then local target = getCreatureTarget(cid) if isCreature(getMasterTarget(target)) then --alterado v2.6 --alterado v2.5 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v2.6 end end if mTarget == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Nao ha pokemon na mira.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce ja derrotou seu oponente.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > mDist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v2.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, mCD) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..mName.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v2.6 addEvent(doAlertReady, mCD * 1000, cid, newid, mName, it, cdzin) for i = 2, #summons do if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons[i], mName) --alterado v2.6 end end docastspell(mypoke, mName) setPlayerStorageValue(mypoke, storage, os.time() + mCD) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end
  15. Gostei
    eliaspalermo deu reputação a Adriano SwaTT em Sistema: Cassino Slots.   
    Boa noite galera,
    após um pedido aqui no fórum sobre um sistema de Cassino, decidi então criar este e disponibilizar para vocês.
     
    Introdução:
    Bom, este script simula a máquina de Cassino conhecida como Cassino Slots, pra quem não conhece é a máquina que se encontra no spoiler abaixo:
     
     
    Como funciona?
    O jogador precisa escolher 1 (um) dos 10 (dez) itens disponíveis (da para configurar a quantidade de itens) como seu Item da Sorte, e após feito isso, terá que girar a alavanca e torcer para que a máquina sorteie 3 itens repetidos igual ao que o jogador em questão escolheu.
    Para tornar um pouco mais fácil de vencer, criei para que a máquina dê pequenos brindes à quem acertar 1 ou 2 itens dos sorteados (configurável).
     
    Como jogar?
    Para jogar é simples, como desenvolvi todo script em apenas um arquivo, para facilitar na criação, na instalação e até mesmo na jogabilidade, o jogo se baseia na posição em que o jogador está para identificar qual ação executar.
    Selecionar Item da Sorte: com seu personagem virado para baixo (sul), clique na alavanca e automaticamente o item da sorte aparecerá na mesa configurada no script, caso queira outro item, basta ir usando a alavanca até encontrar o item desejado.
    Como Jogar: Após ter selecionado seu item da sorte, que deve estar à mostra em cima da mesa própria, basta virar seu personagem para cima (norte) e clicar novamente na alavanca.
    E se virar esquerda ou direita?: Nada acontecerá, apenas uma mensagem ensinando como jogar será enviada para que o jogador se oriente.
     
    Dicas de instalação!
    Sugiro que quando for criar o mapa para o evento, não faça como do vídeo, pois os itens criados nas mesas não estão com atributos para que não possam ser movidos, sendo assim é provável que jogadores de má fé venham a roubar itens... Faça como a imagem abaixo:
     
    Instalando:
    Basta criar um arquivo na pasta “data/actions/scripts” chamado “cassino_slots.lua” e adicionar o código abaixo dentro:
    Agora em “actions.xml” adicione a tag abaixo:
    Agora basta configurar de acordo com as informações disponíveis no início do script.
     
     
    Vejam o vídeo demonstrativo do Sistema em funcionamento.
     
     
     
     
    Criado por: Adriano Swatt'
  16. Gostei
    eliaspalermo deu reputação a Adriano SwaTT em Sistema: Cassino Slots.   
    Que bom, faça bom proveito.
     
    Boa sorte com seu projeto.
    Até breve.
  17. Gostei
    eliaspalermo deu reputação a Orochi Elf em [MOD] Pokedex Window   
    Terça-feira, ele está prontinho. eu tive uns contra-tempos por causa do colégio e tudo mais..
  18. Gostei
    eliaspalermo deu reputação a SniX em [MOD] Pokedex Window   
    Eu também tava refazendo a minha pra passar o tempo! falta add a img dos poke ;v

  19. Gostei
    eliaspalermo deu reputação a Orochi Elf em [MOD] Pokedex Window   
    Salve galera, bom.. muitos membros me pediram este módulo, então eu resolvi fazer pra ajudar a galera. Seguinte eu terminei a layout, mas ainda não fiz o sistema, o que vocês acham da layout? o que eu mudo? o que eu adiciono? Sugestões por favor kk
     

Informação Importante

Confirmação de Termo