Tudo que Guilherme. postou
-
[HTML] Primeira Lição
Como assim quer fazer um Fórum ? Quer criar um Fórum do 0 ? Ou abrir um tipo IPB (TibiaKing).
-
[HTML] Primeira Lição
Vlw, por enquanto é só o basicão mesmo, depois vou ensinar coisas mais avançadas (: Logo postarei novo artigo.
-
[HTML] Primeira Lição
Capítulo: 2/xx Autor: Guilherme. Nível de dificuldade: :staropt: :staropt: :staropt: :staropt: Próxima Aula: - Aula Anterior: Introdução Antes de começar a fazer o primeiro exercício tenha em mente que você aprendeu o básico e reforçou isso com as Convenções da Linguagem HTML citadas abaixo. Convenções da Linguagem HTML Primeiro Exercício Todo documento que você fizer em HTML deve iniciar com o tag: Cabeçalho O cabeçalho de um documento HTML aparece logo após o tag de início do documento, normalmente ele contém informações da página que você está desenvolvendo. Também é necessário uma tag para indicar o início e o término do cabeçalho: Título Você já deve ter percebido que todas as janelas do Windows possuem um título. Este título está localizado na parte superior de cada janela. É possível utilizar um tag para inserir o título na janela. No exemplo abaixo, aparecerá a frase TibiaKing - Tudo Sobre Tibia, OTServ e BOTs no título da janela do browser: Corpo da Página Após o cabeçalho da página, deve aparecer o Corpo. Normalmente este corpo é muito maior que o cabeçalho, pois diz respeito ao conteúdo da página, ou seja, o que realmente irá aparecer em sua home-page. Os tags para abertura e fechamendo do corpo da página são: Quando terminar de digitar o texto, deve-se salvar este documento com extensão HTML. para isto, selecione o menu Arquivo e depois escolha a opção Salvar. Para o nome do arquivo informe o nome desejado, em nosso exemplo foi escolhido o nome ex1.html. Depois clique sobre o botão salvar. Para vizualizar seu trabalho, usa-se qualquer Navegador, sendo os mais comúns: Internet Explorer, Mozilla Firefox, Google Chrome, Safari e Opera. Bom galera, por enquanto é só. Espero que gostem e outro dia faremos nossa próxima aula. Atenciosamente, Guilherme. <HTML> E deve terminar com o tag: </HTML> <HEAD> </HEAD> <TITLE>TibiaKing - Tudo Sobre Tibia, OTServ e BOTs</TITLE> Os tags <TITLE> e </TITLE> devem aparecer entre os tags de abertura e fechamendo de um cabeçalho (<HEAD> e </HEAD>). <BODY> </BODY> Foi falado anteriormente que o Bloco de Notas do Windows, que por ser um editor de textos, pode ser utilizado para digitar um documento HTML. Dentro do Bloco de Notas, digite o texto como mostra o exemplo a seguir, pressionando a tecla <Enter> no final de cada linha. <HTML> <HEAD> <TITLE> Exercício 01 - TibiaKing</TITLE> </HEAD> <BODY> Aprendi a fazer minha primeira Home Page no TibiaKing.com </BODY> </HTML>
-
[Resolvido] Critica, somente critica.
Caras, já falamos com o cool, sem mais brigas(Chingamentos) por meio desse tópico, não vou nem fechar pra ver se vocês conseguem isso por conta própria, caso contrario vão ser alertados.
-
Mais uma BOA do FelipeNeto
Renato da um pulinho ali no msn FAST
-
Mais uma BOA do FelipeNeto
Eu falo errado quanto to com preguiça de escrever ou tenho que falar MUITO RÁPIDO.
-
Brush & Light & Filter
Tópico fechado para evitar desentendimento entre os usuários, caso isso aconteça em outros tópicos, os usuários responsáveis serão alertados. Att,
-
FnBot 1.0.2 [8.72]
É, tentei arrumar aqueles codes abertos mais foi FAIL, ve se tu consegue ae Júlio, e parabéns pelo bot
-
[Sugestão] Seção em Scripting
Pois é, acho que deveria ser criada uma seção sim, onde possamos postar as libs para funcionamento dos scripts e tudo mais.
-
Comprando Summon
Muito bom, bem criativo e o código parece estar impecável.
-
[Gesior Acc] Deathknight Template
Poxa vida, esse layout é FODA! Vou baixar e guardar no Pen Drive ;x
-
[Talkaction] Twitter System
Bom, postei algo parecido com isso em outro fórum de autoria do Mock, mas este não tem nenhuma conexão com o Twitter original, muito bem bolado . REP ++
-
[Resolvido] [URGENTE] Reverse WPT
http://bit.ly/gU6Rst http://bit.ly/h91IRQ Vê se serve...
-
[HTML] Introdução
Capítulo: 1/xx Autor: Guilherme. Nível de dificuldade: :staropt: :staropt: :staropt: :staropt: :staropt: Próxima Aula: Primeira Lição Aula Anterior: - Olá KingTibianos, hoje começo o primeiro capitulo de uma série de aulas e explicações sobre a base de criação de conteúdo da web, o HTML. Bom, vamos ao primeiro capítulo: Introdução Para quem pensa em desenvolver home-pages, programar em HTML é o passo inicial para desenvolver páginas mais complexas, pois mesmo as linguagens mais recentes para desenvolvimento de sites, trabalham sobre um arquivo HTML. Existem milhares de empresas com iteresse em marcar preseça no ramo de Web Design, ainda há puca mão-de-obra capacitada para desenvolver este trabalho. A linguagem HTML é fácil de aprender a programar, até mesmo para quem nunca teve experiência em programação de computador. O curso se adapta tanto para quem nunca tenha programado um computador na vida, quanto uma pessoa com muita experiência de programação. Existem Diversos programas que auxiliam no desenvolvimento de sites, como o FrontPage e o Dreamweaver, mais o aprendizado da linguagem HTML é indispensável para quem deseja fazer e dominar o desenvolvimento de aplicações de banco de dados, por exemplo. Definições Básicas É importante saber que o termo home-page aplica-se a um unico arquivo inicial ou principal. O termo para o conjunto desses arquivos e onde eles ficam é Web Site ou somente Site. Os arquivos HTML necessitam de um programa, chamado Browser, para exibir os documentos do site de maneira visualmente agradável, facilitando a interface com o usuário. Quando um endereço é digitado no browser, ocorre a seguinte operação: HTTP://WWW.TIBIAKING.COM.BR 1.[HTTP] - Ativa o protocolo de transmissão de dados; 2.[WWW] - O endereço faz parte da World Wide Web(WWW); 3.[TIBIAKING] - Endereço específico e único de um site; 4.[.COM] - Categoria do site; 5.[.BR] - Localização do domínio; O protocolo de transferência de hipertexto (http://) ativa um documento que está na World Wide Web, que pertence ao TibiaKing, que é um endereço comercial que se encontra hospedado no Brasil. Após esse sistema, o computador faz uma cópia temporária (em código) no seu computador de cada documento de hipertexto e reconstrói para ser visualizado pelo browser. Um endereço também pode indicar um FTP(Protocolo de Transferência de Arquivo) ou um endereço eletrônico(e-mail), por exemplo: ftp:// ftp.tibiaking.com.br mailto: aluno@tibiaking.com.br Acima, você pode perceber que o endereço termina em .br, pois o arquivo encontra-se hospedado no Brasil. Há um tipo de terminação para cada país, por exemplo: Argentina - .ar Espanha - .es Japão - .jp Rússia - .ru Os computadores localizados nos Estados Unidos, normalmente não possuem terminação (www.microsoft.com, www.berkley.edu), pois a Internet surgiu primeiro nesse país e como no início o era único país a possuí-la não era necessário fazer uma diferenciação. Bom galera, encerro aqui meu primeiro artigo, logo vou trazer mais conteúdo sobre o HTML para nosso fórum, comentem e digam o que acharam! Abraço a todos e meus parabéns a quem teve a coragem de ler tudo até o fim e aprendeu alguma coisa com meu artigo. Atenciosamente, Guilherme.
-
Itens por Talkactions
Bom galera, certa vez eu abri um servidor de tibia 8.55, ai pra incrementar ele resolvi colocar um sistema que faz com que o player compre os Itens VIPs direto do jogo. Funciona assim: Eu disponibilizei no site, a venda de moedas que podem ser usadas para comprar tanto VIP Account, quanto Itens VIP direto do jogo. O jogador que compra as moedas, recebe 100 delas e para poder comprar os itens eu editei uma TalkAction que veio no Baiak Yourots que era uma simples quest por comando, e transformei em uma ótima ferramenta para servidores com sistema vip. Vamos ao Script: Vá em data\talkactions\scripts , e crie um arquivo com o nome desejado e com o final ".lua" (Exemplo: ex.lua) Coloque isso dentro: Edite conforme você quiser, salve e feche. Laranja: ID do iten que vai servir como "moeda" Verde: Quantidade do iten Vermelho: ID do iten que o player vai receber quando usar o comando Azul: Quantidade do iten recebido Roxo: Palavra que aparecerá quando o player digitar o comando Rosa: Mensagem enviada ao player caso ele não tenha o iten ou quantidade neessária para a compra. Agora vá em "data\talkactions\" , edite o talkactions.xml Coloque isso la dentro: Verde: O Que o Player irá falar para usar o comando. ( Exemplo: !armor ) Azul: O Nome do Arquivo que você criou em "data\talkactions\scripts". ( Exemplo: ex.lua ) Créditos: Script: Baiak Lula ( Peguei o script do OT dele então, não tenho Certeza ) Edição e Nova Função: Guilherme. COMENTEM !
-
Adicionando novas Sprites no Tibia
Olá Kingtibianos, Galera eu vi que tinha muita gente querendo saber como colocar novos sprites no servidor, até achei alguns tutoriais mas não tinham imagens e eram muito vagos, então resolvi montar esse bem explicado e com imagens para facilitar o entendimento de vocês. Inicio: - Neste tutorial, você irá aprender como extrair, modificar e comilar o arquivo Tibia.spr. • Vamos trocar esse sprite - • Por esse - 1º Passo - Donwload e Instalação; - Após baixar o SprEditor extraia ele para uma pasta a sua escolha . - Após extrair vá na pasta do seu Tibia e copie o arquivo Tibia.spr para a mesma pasta onde esta o SprEditor. 2º Passo - Conhecendo o programa; - Para extrair as imagens do arquivo Tibia.spr clique em "Extract" e para compilar as imagens *.Bmp para *.Spr clique em "Compile"; 3º Passo - Extraindo; - No programa clique em "Extract" - Agora note q foi criada uma pasta chamada "Sprites" contendo todas as imagens. 4º Passo - Imagens e suas Propriedades; - Para mudar as imagens abra a pasta "Sprites" e note que as imagens são todas 32x32 e tem extenção *.Bmp. - A cor rosa nas imagens indica transparência. - Agora mude a imagen sem ultrapassar o limite de tamanho (32x32). - Depois de mudar e salvar as imagens que voce quiser vamos para o quinto passo; 5º Passo - Compilando; - Agora va no programa e clique em "Compile" e espere o processo terminar. - Perceba que ja esta sendo criado um arquivo chamado "MyTibia.spr" Pronto agora voce ja tem seu Tibia.spr editado e compilado pronto para usar! :great: PS: Comentem e digam o que acharam!
- [Action] Yggdrasil Berry
-
Lottery System
Lottery System 1.0 Vá em data\globalevents\scripts e crie um arquivo chamado lottery.lua, coloque isso dentro, salve e feche: -- Lottery System local config = { lottery_hour = "2 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2527, 7428, 6531, 2160}, -- ID dos Itens Sorteados na Loteria crystal_counts = 500, -- Usado somente se a rewards_id for crystal coin (ID: 2160). website = "no" -- Only if you have php scripts and table `lottery` in your database! } function onThink(interval, lastExecution) if(getWorldCreatures(0) == 0)then return true end local list = {} for i, tid in ipairs(getPlayersOnline()) do list[i] = tid end local winner = list[math.random(1, #list)] local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") else doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return true end Agora vá em data\globalevents\globalevents.xml e adicione essa TAG: Vermelho: Tempo em que a Loteria vai ser executada. Pronto, seu Sistema de Loteria esta terminado!
-
[Action] Yggdrasil Berry
Yggdrasil Berry O que é a Yggdrasil Berry ? Fruto da árvore Yggdrasil, que traz vida ao nosso mundo. Seu sabor é fantástico cheio de vida. Restaura Completamente o HP e a MP. Tirei a Ideia do MMORPG Ragnarok, a yggdrasil é o fruto mais consumido entre os players em PVP ou contra MVPs. Quem Conhece Ragnarok Sabe do que estou Falando ? O Script : Para Representar a Yggdrasil Berry eu irei Utilizar o Item ID:5097(Mango), Claro que voce pode alterar para o ID que voce preferir, mas eu recomendo com items que formam 100 unidades ocupando apenas 1 slot. Primeiro vamos alterar o Nome Mango para Yggdrasil Berry, Abra sua pasta data/items e abra como bloco de notas o items.xml, de um ctrl+f e procure pelo ID 5097 e voce ira encontrar isso: <item id="5097" article="a" name="mango" plural="mangos"> <attribute key="weight" value="180"/> </item> Agora é simples, subistitua o que esta em cima por este: <item id="5097" article="a" name="yggdrasil berry" plural="yggdrasil berrys"> <attribute key="weight" value="180"/> </item> Abra sua pasta data/actions/scripts e crie um arquivo chamado yggdrasil berry.lua e cole o código abaixo dentro dele: Agora é só abrir o seu actions.xml e adicionar esta tag: <action itemid="5097" script="yggdrasil berry.lua"/> Pronto, Agora o Seu OTserv Possui a Yggdrasil Berry Igual ao Ragnarok! CRÉDITOS DEVIDAMENTE COLOCADOS AO SEU AUTOR.
-
[MoveEvent] Dance System
@@@ Sistema de Dança @@@ Video sobre o Script: http://www.youtube.com/watch?v=oMfPYLT829I Bom, então vamos ao script. Vá na pasta data/talkactions/talkactions.xml e adicione isso: Vá até pasta data/lib/function.lua e adicione isso: Vá a pasta data/talkactions/scripts e crie um arquivo .lua e coloque o nome de dancing.lua e coloque isto la dentro : local conf = {} -- // config // --- conf.danceTexts = {"GO GO DANCE!", "DANCE NOW!", "DANCE IS FUNY!"} conf.textSpeed = 1500 -- how fast animated texts is sending? conf.danceSpeed = 100 -- dance speed conf.outfitSpeed = 250 -- outfit changer speed conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits -- // end // -- function dancer(tab) if isPlayer(tab[1]) then local dirs = {[0] = {1,3},[1] = {0,2},[2] = {1,3},[3] = {0,2}} local look = dirs[getCreatureLookDirection(tab[1])] doCreatureSetLookDir(tab[1], look[math.random(1,2)]) tab[2].dancer = addEvent(dancer,conf.danceSpeed, {tab[1], tab[2]}) end end function messager(tab) if isPlayer(tab[1]) then doCreatureSay(tab[1], conf.danceTexts[math.random(1, #conf.danceTexts)], TALKTYPE_ORANGE_2) tab[2].messager = addEvent(messager,conf.textSpeed, tab) end end function outfitChanger(tab) if isPlayer(tab[1]) then if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then outs = conf.outfitFemale else outs = conf.outfitMale end local outfit = { lookType = outs[math.random(1, #outs)], lookHead = math.random(1,133), lookBody = math.random(1,133), lookLegs = math.random(1,133), lookFeet = math.random(1,133), lookTypeEx = math.random(1,133), lookAddons = math.random(0,3)} doCreatureChangeOutfit(tab[1], outfit) tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab) end end backOutfit = {} local backOutfit = {} function onSay(cid, words, param, channel) local pid = getPlayerGUID(cid) if type(events[pid]) ~= "table" then events[pid] = {} end if string.lower(param) == "start" and not(events[pid].dancer) then outBack = getCreatureOutfit(cid) backOutfit[pid] = outBack backOutfit[pid].lookType = outBack.lookType backOutfit[pid].lookAddons = outBack.lookAddons dancer({cid, events[pid]}) messager({cid, events[pid]}) outfitChanger({cid, events[pid]}) elseif string.lower(param) == "stop" and events[pid].dancer then stopEvent(events[pid].dancer) stopEvent(events[pid].messager) stopEvent(events[pid].outfitChanger) events[pid] = {} doCreatureChangeOutfit(cid, backOutfit[pid]) end return TRUE end Pronto! !dance start e vai começar a dançar.. você poderar andar com o dance ativo, o seu character irar andar mudando de ropa, se você parar ele vai ficar fazendo a dance noob! Para dar STOP na dance system fale !dance stop PS: Esse script não tem importancia para um servidor de tibia, unica coisa é a diversão é a criatividade que contém no script, muitos brasileiros em tibia global fica fazendo essa dancinha então bom uso! Caso post em outro lugar colocar os créditos em cima do topico Obrigado! (:
-
[CREATURE] OWNED!
OWNED! O Que Este Script Faz? Ao matar um player, aparecerá uma mensagem em cima do corpo com efeito de animação com o seguinte texto: OWNED! Bom, vamos ao SCRIPT: Vá em data/creaturescripts/scripts/preparedeath.lua e coloque isso: OBS:Se ele nao existir voce cria, mas se existir eu recomendo trokar no nome do script.lua e no login.lua registrar o evento com outro nome. Vá em data/creaturescripts/creaturescripts.xml e ABAIXO desta Tag: <event type="login" name="PlayerLogin" script="login.lua"/> ADICIONE ESTA: <event type="preparedeath" name="onPrepareDeath" event="script" value="preparedeath.lua"/> Agora é só ir em data/creaturescripts/scripts/login.lua e ABAIXO de: function onLogin(cid) ADICIONE ISTO: registerCreatureEvent(cid, "onPrepareDeath") Script Pronto! Desligue seu OT e Ligue de Novo para testar o Script. SCRIPT RETIRADO DE OUTRO FORUM, E ANTES QUE ALGUEM FALE MERDA RECLAME, OS CRÉDITOS ESTÃO DEVIDAMENTE COLOCADOS.
-
Rain System
Rain System Entre em data/globalevents/script/, crie um arquivo com nome rain.lua, cole o código abaixo, salve e feche: local rain = Rain:new() function onThink(interval, lastExecution) local minX = 0 local minY = 0 local maxX = 120 local maxY = 150 local frompos = {x=math.random(minX, maxX), y=math.random(minY, maxY), z=7} local topos = {x=math.random(frompos.x, maxX), y=math.random(frompos.y, maxY), z=7} local effects = { snow = { disteffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICETORNADO }, rain = { disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } } random = math.random(0, 10) if (random == 0) then rain.chance = math.random(10,50) rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) else rain.chance = math.random(20,100) rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, math.random(100, 1000), math.random(100, 350)) end return TRUE end Agora vá em data/globalevents/globalevents.xml e adicione essa TAG: Depois, vá em data/globalevents/lib/, crie um arquivo com nome Rain.lua, cole o código abaixo, salve e feche: -- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end Agora vá em data/globalevents/lib/globalevents.lua e adicione essa TAG: Configurando: O script não necessita de muitas configurações, apenas mude as variáveis como seu gosto: local minX = 0 local minY = 0 local maxX = 120 local maxY = 150 Bom essa configuração muda apenas a posição das chuvas se quiser mudar a densidade da chuva mude a linha rain.chance = math.random(20,100), lembrando não ultrapasse muito do valor 100, pois pode deixar a chuva muito feia. Para entender melhor a função rain:start(positions, effects, duraction, delay) postarei o que cada argumento significa. Para tornar a chuva mais intensa diminua o delay e aumente o duraction e a chance, mais fraca o inverso. Para chuvas mais duradouras aumente o delay e o duraction. Também é possível que o script crie "poças de agua" isso é configurado na linha rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}}. Para aqueles que sabem mexer em script é possível fazer chover meteoros mudando os efeitos e varias outras coisas a sua imaginação. Para mudar de quanto enquanto tempo a chuva ira acontecer devera mudar a tag do globalevents.xml na parte de interval. Considerações finais: Não é aconselhável usar a snow do jeito que está configurado, pois está bem feio, também há um erro que sempre que ocorre uma nova chuva se uma antiga esta acontecendo, a velha para, e a novo começa. É fácil arrumar, porém eu só não arrumei pois isso pode acarretar novos bugs. Screenshot:
-
Feriadão é dia de:
Fuck Yeah !
-
(Resolvido) [Sugestão] Gráficos
Bom, creio que o autor do tópico já está com sua dúvida esclarecida e vou fechar o mesmo para evitar algo mais. Att,
-
Avatar & Assinatura - Gratis
Cara curti os meus, to usando, e editei a Sign, coloquei borda e deixei as cores mais fortes; Valew aê !