Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/01/14 em todas áreas

  1. RodriigoRobson

    Pokemon Dash Com Sources

    • Pokemon Dash Com Sources • Servidor Usado Para Base • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informaçoes • • Ediçoes • • Erros • • Prints • • Download Server + Sources + Client • • http://www.4shared.com/rar/qQ2QOHQsce/PDA_COM_SOURCES.html? • Creditos • - Nextbr - LordBaxx - Slicer - Brun123 - Bolz
    6 pontos
  2. Dbko

    [Arquivado]Ntofo V2

    Bom Dia Boa Tarde e Boa Noite Galerinha Do Xtibia NOVIDADES NTOFO V2 SERVIDOR ESTÁ PASSANDO POR ALGUMAS MODIFICAÇÕES ANTES DE VIM AO XTIBIA O QUE MUDOU DO V1 PARA O V2 1º Servidor vai vim com umas novidades que vocês Nunca penssou que alguem fosse postar no xtibia bunshin com nome ja editado servidor 2º Systema Attack Speed Treinando fist quando chega em 75 ele começa bater mas rapido e chegando á 100 bate 2 hit em 1 segundo 3º Foi Adicionada Algumas Vocations Como Tobirama Raiakage Kabuto Tsunade Orochimaru E entre Outros Editado ás house pill potions graduação Tbm Tem o Npc Do Tobi Que Troca 6 Coração por uma outfit configurado espero que alegri á muitos Em Breve Ntofo V2 No Xtibia Ateciosamente, Luan Mello
    3 pontos
  3. 2 pontos
  4. Junior001

    Alguns tutoriais de Modern AAC

    Boa Noite Pessoal hoje resolvi fazer um video tutorial ensinando algumas coisas vi muitas dúvidas em relação oque vou ensinar por isso resolvi fazer então ta ai. Alguma outra dúvida ? deixe nos comentarios para eu estar fazendo 1 video ou até mesmo um tutorial por escrito ai para vocês, Espero que gostem! OBS: Desculpem pelos erros ortográficos. Creditos: Junior Silva
    2 pontos
  5. Benny

    [X] TUTORIAL - SIGN SAINT SEIYA

    Saudações ÉkzTibianos. Hoje trago para vocês um tutorial de uma sign do "Saint Seiya". Antes, vamos colocar um preview, não é ? =) Bem legal né rsrs. Mas .. vamos direto ao ponto. Para começar, selecione sua render. Depois, dê um "CTR+J" e vai movendo até que ele preencha a imagem toda. Bem, digamos que a base já está pronta, vamos começar com o "tratamento". Primeiro, um mapa de degradê (lembre de usar as configurações de layer /\ ) Depois, um photo filter Agora, um hue / saturation Após tudo isso, aperte "CTR+SHIFT+E" duas vezes, e na segunda camada criada aplique um "filter > blur > motion blur , coloque em 10px", e coloque o blend mode para "lighten". Aperte "CTR+SHIFT+E" novamente, e aplique um "filter>sharpen>sharpen edges". Epa, ficou legal ein ? vamos melhorar mais a imagem. Crie uma nova camada, preencha ela toda de preto, e com a ferramenta "Brush" crie um ponto de luz para dar foco a uma certa área da sua arte. Depois, é só adicionar as bordas, e pronto. Eu adicionei também a tipografia, mas é opcional.. Bem, chegamos ao fim. Alguns dos recursos utilizados neste tutorial, não tem um resultado bom em outras artes .. se a sua for uma dessas, tente somente mudar o blend mode, e chegar em um resultado que te agrade. Download : FONTE + PSD Espero que tenham gostado Abraços, Beeny
    2 pontos
  6. Killua

    Dice Arena

    Dice Arena Esse evento foi postado para o Script de Terça, para ver os outros scripts de terça, clique aqui. Como o evento funciona? Um número configurado de jogadores deve permanecer em posições configuradas (Igual na annihilator). Quando todas as posições tiverem ocupadas, o primeiro jogador puxa a alavanca, levando todos para dentro da Arena. Dentro da arena, tem um dado que, quando usado, sorteia um monstro. Quando os jogadores matam o monstro, um loot cai no chão (Quanto menor o número do dado, mais forte será o monstro e melhor será o item que dropa). - Se já tiver gente dentro da arena, outro time não poderá entrar. - Uma vez dentro da arena, cada jogador só pode rodar o dado uma vez. - Cada jogador só pode entrar na arena uma vez por dia (tempo configurável). - Os monstros e loots são configuráveis. Vídeo do evento (obrigado ao por me ajudar a gravar) Instalação Lib Actions Creaturescripts Movements Globalevents Configuração A configuração é feita inteiramente na lib, nesta tabela: dice_cfg = { positions_ = {{x = 164, y = 17, z = 7}, {x = 164, y = 18, z = 7}}, arena_pos = {x = 501, y = 141, z = 7}, wait_ = 60*60*24, max_time = 1800, numbers = { [1] = {"Orshabaal", "Morgaroth", "Ferumbras"}, [2] = {"Demodras", "Juggernaut"}, [3] = {"Demon", "Behemoth"}, [4] = {"Dragon Lord", "Hydra"}, [5] = {"Dragon", "Cyclops"}, [6] = {"Rotworm", "Rat"} }, noob_item = {2158, 10}, pro_item = {2160, 5}, arena_frompos = {x = 491, y = 125, z = 7}, arena_topos = {x = 512, y = 144, z = 7} } Em positions_, coloque as posições que os jogadores devem ficar para poder puxar a alavanca (Pode por quantas quiser). Em arena_pos, coloque a posição da arena (Pra onde os jogadores vão quando puxarem a alavanca). Em wait_, coloque o tempo que o jogador deve esperar para entrar na arena novamente (em segundos). 60*60*24 = 1 dia, aconselho deixar assim. Em max_time, coloque o tempo máximo que os jogadores podem permanecer na arena (em segundos (após esse tempo, eles serão teleportados para o templo)). Em numbers, coloque o nome dos monstros que podem vir dependendo do número sorteado pelo dado (quanto menor o número, mais forte devem ser os monstros). Em noob_item, coloque o {id, quantidade} do item que dropa dos monstros mais fracos/médios Em pro_item, coloque o {id, quantidade} do item que pode dropar dos monstros mais fortes/médios Em arena_frompos, coloque a posição do canto superior esquerdo da arena. Em arena_topos, coloque a posição do canto inferior direito da arena. Coloque NO-LOGOUT TOOL na arena inteira. Siga as imagens para facilitar a configuração: Se alguém se dispuser a fazer um mapa pro evento para eu disponibilizar para download, eu agradeceria. Espero que gostem do evento. Download do evento: Dice Arena Event por Killua.rar
    1 ponto
  7. Fala meus queridos XTIBIANOS como vão ? Vim aqui hoje postar o Global vendido na "Empresa" CHAITOSOFT por quase R$ 200,00. É complicado ficar vendendo isto sem modificações para todos por quase 200 mangos não é? Vários amigos meus não gostaram do atendimento e suporte da empresa, no entanto trago aqui para vocês ele completo como é vendido, porque de graça é MAIS GOSTOSO! Não gostou? FOD*-SE, não baixa, compra! O que contém ? #Características - Warzones 1, 2 e 3; - Task system, com bosses e ranks; - Bank System, sem bug de remover dinheiro grátis; - Atalho para banuta 100% Tibia Global; - Montaria Water Buffalo com Leench system; - Gray Island 100% identico ao global (veja as fotos, tem quest de acesso pras hunts e tudo); - Demon outfit com addons; - Venore 100% com novo visual (veja as fotos); - Monstros 9.83 funcionando; - Trainer offline com estátuas funcionando; - Acessos gray island 100% identico ao global; - Todas montarias; - Taming system funcionando 100% para todas montarias; - Peso do mapa: 98MB; - Raids Automáticas (Script); - Premio system level 120, 150 e 200; - Database completa + Shop Pronto (DB FULL); - Wrath of Emperor (Mapa-quest); - Zao e New Banuta Piece (Mapa); - War System com escudos (Script); #Especializações da Distro - TFS 0.3.7 - SVN VERSION; - Versões: 9.8 até 9.83 - Suporte para war system com escudos; - Não verifica a versão de items.otb; - Sem erros de mapa pesado como "compile to 64bits"; - Não permite divulgação de servidores, sistema embutido; - Push de longe modificado para 1 segundo; #Sistema VIP - VIP System - account inteira, totalmente configurado ao servidor; -3 cidades vips; - Armas vips padrões - 3 armas para knight, 1 rod/wand para druid e sorcs, 1 arrow para paladins, 1 bota hibrida de soft e boots of haste e 1 helmet que protege 20% de todos efeitos arm: 40 e ainda speed +20; - Se possuir um site, te damos toda a base de shop para adicionar; Observações: O Download contém: - Servidor completo - SOURCES PARA LINUX DEBIAN/UBUNTU - TUTORIAL DE COMPILAÇÃO BY [MKBRABSOLUTE] - DATABASE .SQL COMPLETA DA VERSÃO E SHOP Créditos: MKBRABSOLUTE GUSTAVO FERREIRA CHAITOSOFT
    1 ponto
  8. fortation

    [RE-UPADO] Wodbo Hunter

    VENHO TRAZER O MEU SERVER ARRUMADO E SEM BUGS NAO QUIS MAIS ABRIR MEU SV ENTAO VO POSTA OQ TEM NELE: Kame Vocation Raditz Vocation C16 Vocation & Muito Mais... Shenron Novas Transforms Novas Spells Fusoes melhoradas (Todos, Escrever: fusion) Escreva "Transform" Ou Escrever: transformar. Taxa de equilibrio (Aproximadamente 90% dos Skill) Monstros Dividido com "nivel" Armas Melhoradas e Com porcentagem de leveL ARRUMEI TODOS OS BUGS MENOS DO BOL (AOL) QUE EU N CONSEGUI E TAMBEM TODOS OS BUGS DO SITE. SS DO SITE : DEPOIS EU COLOCO SS's DO SERVER ! DOWNLOAD's : Cliente: https://www.mediafire.com/?gob4q7ksfj0w39h Server : http://www.mediafire...klkkxzgbwl9am0n Site : http://www.mediafire...b6f4eks2qlf8bsi Creditos : CRAZZY (PELO MAPA) EU (POR ARRUMAR OS BUGS MAPA E SITE) MEU IRMAO (POR ME AJUDAR NO SERVIDOR) MATHEUSVIDALOKA (PELO CLINTE) TE AJUDEI ME DA 1 REP++ AEW CUSTA NADA! * 11/02/2014 - CLIENTE RE-UPADO. NEM SABIA QUE TINHA QUEBRADO O LINK MALS.
    1 ponto
  9. Fir3element

    goback.lua - Call rápido

    ve qnt ta os valores dessas config no config.lua: timeBetweenActions timeBetweenExActions
    1 ponto
  10. HenrikDiamond

    Como Colocar Shiny Stone !

    Tambem tem essa maneira galera: Abra o arquivo data/actions/scripts/evolution.lua Adicione esta linha nele Abra seu actions.xml, procure por evolution, apos achar coloque o id 12415 na frente dos outros, ficando assim: 12415 = Id da shiny stone Agora abra o configuration.lua, procure por poevo. apos achar desca um pouco e achara as stones com seus ids, adicione este la shiny = 12415 12415= id da shiny stone Agora suba a pagina um pouco e coloque isso abaixo do ultimo pokemon que evolui: Agora sua Shiny Stone nao e uma action, é uma pedra de evolução! "-" Se nao entendeu comente que eu explico alguma coisa.. Se ajudei REp + ---Agora é so ir trocando o id de 12415 pelo id da sua shiny stone
    1 ponto
  11. 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 local ids = {{12149, 12150, 12151}, 2200} local feathers = ids[1] local str = "" local check = 0 local storage = 91821 if msgcontains(msg:lower(), "trade") or msgcontains(msg:lower(), "troca") then for i = 1, #feathers do if str == "" then str = "1 "..getItemNameById(feathers) else str = str..", 1 "..getItemNameById(feathers) end end if getPlayerStorageValue(cid, storage) > -1 then selfSay("You already traded with me.", cid) talkState[talkUser] = 0 return true else selfSay("Do you want trade "..str.." for 1 "..getItemNameById(ids[2]).."?", cid) talkState[talkUser] = 1 return true end elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then for i = 1, #feathers do if getPlayerItemCount(cid, feathers) > 0 then check = check + 1 end end if check == #feathers then selfSay("Thank you!", cid) for i = 1, #feathers do doPlayerRemoveItem(cid, feathers, 1) end doPlayerAddItem(cid, ids[2], 1) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true else selfSay("Hey, you don't have all the feathers.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then selfSay("Ok, good bye!") talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
    1 ponto
  12. hmn achei esse em outro forum acho que é oque você quer: 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 playerHaveItems(cid, itemid) local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do if getPlayerItemCount(cid, items) <= 0 then return false end end return true end function doPlayerRemoveItems(cid, itemid, count) local items = type(itemid) == "table" and itemid or {itemid} for i = 1, #items do doPlayerRemoveItem(cid, items, count ~= nil and count or 1) end return nil end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "trocar") then if playerHaveItems(cid, {12149, 12150, 12151}) then doPlayerRemoveItems(cid, {12149, 12150, 12151}, 300) doPlayerAddItem(cid, 2200, 1) else selfSay("Você Não tem os itens necessarios.") end end return true endnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vá em Data/Npc/Nomedonpc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Nomedonpc" script="trocaitems.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="169" head="114" body="86" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {trocar} para trocar 3 items por 1."/> </parameters> </npc>
    1 ponto
  13. local items = { [2282] = {2283, 1}, [2281] = {2285, 1}, [2280] = {2286, 1}, [2279] = {2287, 1}, } local exhaust = 3 function onUse(cid, item, frompos, item2, topos) if cid == item2.uid then if getPlayerStorageValue(cid, 3278) <= os.time() then doCreatureAddHealth(cid, (getCreatureMaxHealth(cid)*0.3)) doCreatureSay(cid, "Uff...", 19) doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, 3278, os.time()+exhaust) else doCreatureSay(cid, "Espere "..exhaust.." segundos!", 19) end elseif items[item2.itemid] then doPlayerAddItem(cid, items[item2.itemid][1], items[item2.itemid][2]) doCreatureSay(cid, "Combined herbs!", 19) doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) else doCreatureSay(cid, "You can not combine these herbs!", 19) end return true end
    1 ponto
  14. MaxxSilva

    Como Colocar Shiny Stone !

    <item id="12287" article="a" name="Shiny Stone" plural="Shiny Stones"> <attribute key="description" value=" a descrição do item" /> Colocou nos itens?? Tenta dar /i e o id do item e se vc deu reload n vai funffa msm E outra coisa muitas vezes ja vai ter um item com esse msm id nos itens ai vc tem que substituir apaga a tag do item que tava la e adiciona a shiny stone
    1 ponto
  15. Lordbaxx

    Pedido remeres (pokemon)

    Qual sistema operacional vc está usando? se for WinXP, Game Over
    1 ponto
  16. Testa aew!! Distro+Dlls Download Se der Certo Já Sabe oque fazer u.u Qualquer erro ou se o problema persistir me avise.
    1 ponto
  17. Opa galerinha, tranquilo ? Bem, hoje eu resolvi sair um pouco do "normal" e trazer um banco de imagens gratuitas. Andei procurando e achei "corbis" o site perfeito para trazer para vocês. Além das imagens serem gratuitas, eles cumprem o que prometem com seu slogan : "Corbis - Qualidade Premium de banco de fotografias e de ilustrações" O site conta com um sistema de busca incrível, demonstrarei tal abaixo. Como podem perceber existe uma variedade enorme de imagens que estão disponíveis para todos. Gostou, quer acessar ? É só clicar no link abaixo. Espero que tenham gostado do segundo tópico de hoje, rs. Abraços, Beeny.
    1 ponto
  18. VictorWEBMaster

    Gesior para TFS 0.1

    Cara, to com meu gesior já para TFS 1.0... Porém estou testando..
    1 ponto
  19. eltoo

    Weto Showoff

    GRoaarr!!
    1 ponto
  20. sheyks

    10.37 Epic Real MAP REALEASE!

    Downloads: Realx64 Datapack [10.37]: Mediafire / 4Shared Scan Virustotal: Virustotal Realx64 Datapack [10.37] Ip Changer: http://static.otland.net/ipchanger.exe [Requirements:Microsoft .NET Framework 3.5.] Tibia Client 10.37: http://static.tibia.com/download/tibia1037.exe RME Map editor for this map: RME 3.0 Beta 6 If you cant run the server and get error try to install this: 64x bit: http://www.microsoft.com/download/en/details.aspx?id=14632 Also you maybe need this to: http://www.microsoft.com/en-us/download/details.aspx?id=40784 For website, here is Gesior for TFS 1.0: Gesior TFS 1.0 creditos: Dark ShaoOz quem mais tiver participação nesse projeto deixe mensagem que eu colocarei seus devidos créditos!!! Não colocarei créditos meus pq apenas peguei o servidor traduzi e estou trazendo para o xtibia!!!
    1 ponto
  21. Extraia o arquivo na sua pasta do otc. Arquivo: http://www.mediafire.com/download/yg0d1f2rur6dsa9/game_pokedex.rar Vai em lib/pokedex system e substitua por isto:
    1 ponto
  22. Killua

    Anti Nuke System

    Ainda hoje, muitos servidores são nukados com MageBomb (mass log de Account Manager)... Por este motivo, vou compartilhar um script, que eu otimizei, que impede esse tipo de mass log. Basta criar: AntiNuke.lua em data/creaturescripts/script e colocar esse código: -- Anti Mage Bomb System otimizado por Killua - XTibia.com local config = { max = 3, -- Quantos acc manager o mesmo ip pode logar de uma vez acc_name = "Account Manager", -- Nome do account manager ip_banishment = "false", -- Se logar mais acc manager do que o permitido, leva ban? "true" ou "false" banishment_length = 20 -- Quantos dias o ip fica banido? } local accepted_ip_list = {""} -- lista dos ips permitidos a logar varios acc manager, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(cid) if (#getPlayersByIp(getPlayerIp(cid)) >= config.max) then if config.ip_banishment == "true" then doAddIpBanishment(getPlayerIp(cid), banishment_length * 24 * 60 * 60) end doRemoveCreature(cid) end return true end function onLogin(cid) if getPlayerName(cid) == config.acc_name then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) then return true else addEvent(antiMC, 1000, cid) end end return true end Em data/creaturescripts/creaturescripts.xml, coloque essa TAG: <event type="login" name="antinukemc" event="script" value="AntiNuke.lua"/>
    1 ponto
  23. Quais as diferenças entre JPG, GIF, PNG, EXIF e outros formatos de imagem? Com tantos formatos de imagem, às vezes é difícil decidir qual é o melhor para cada aplicação. Cada uma das extensões possui características próprias, sendo indicadas para situações diferentes. O JPEG é mais utilizado na web por seu pequeno tamanho, mas o PNG é mais versátil e recomendado para uma qualidade um pouco maior. Alías, falando em qualidade, o EXIF e o TIFF fazem bonito, mas possuem problemas de compatibilidade com programas comuns, então não existe um formato que seja "bom em tudo". Conheça os mais comuns utilizados atualmente e quais as suas características mais marcantes. JPEG/JFIF (Joint Photographic Experts Group) Formato padrão da grande maioria dos usuários, possui uma altíssima taxa de compressão capaz de fazer com que um papel de parede com resolução Full HD (1920x1080) ocupe apenas 100 KB em disco, mas isso só é possível porque a compressão joga fora parte da qualidade. Em vários casos, em especial nas páginas da internet, o tamanho menor do arquivo supera a desvantagem da perda de qualidade, mas este não é o formato recomendado para quem deseja fidelidade nos detalhes de suas fotos e imagens. Isso não torna o JPG ruim, já que possui um excelente nível de compressão - ele apenas é menos indicado para essas situações. GIF (Graphics Interchange Format) Formato desenvolvido pela CompuServe antes do JPEG para os antigos computadores de 8 bits. Na época, esta era uma boa solução devido às limitações de qualidade dos monitores e dos modems de conexão discada. Em imagens web que não necessitam de muita qualidade, o GIF passa a ser uma opção melhor do que o JPG tanto pelo maior nível de compressão quanto por oferecer cores mais vivas, mas está caindo em desuso devido à popularização do PNG e TIFF, que são mais versáteis e compatíveis com a maior velocidade da internet disponível atualmente. BMP (Windows Bitmap) Se o JPG pode ser considerado 'o MP3 do mundo das imagens', o Windows Bitmap pode ser comparado ao WAVE. Ele preserva todos os detalhes do arquivo original, mas gera arquivos finais bastante grandes por não utilizar nenhuma compressão. A extensão utilizada é .BMP ou .DIB (Device Indepedent Bitmap) e não suporta transparência, sendo mais comuns em computadores com Windows. PNG (Portable Network Graphics) Desenvolvido para suprir as limitações do formato GIF, suportando milhões de cores em vez das poucas centenas do formato anterior. Suporta também fundo transparente, compressão sem perdas e até animações, embora não nativamente. Para animações é necessário salvar como APNG (Animated Portable Network Graphics), que funciona de forma muito semelhante ao GIF, mas com um nível de compressão maior (também usa LZW) e alta qualidade. PSD (Adobe Photoshop Document) Muito utilizado por profissionais da área de design, o formato PSD é indicado principalmente para usuários das versões do Photoshop por possuir suporte a máscaras, modo CMYK, camada de texto, canais alfa e outras ferramentas avançadas. Muitos profissionais da área preferem salvar a imagem original em PSD para manter a estrutura original e gerar outros formatos (como JPEG, PNG, assim por diante) conforme a necessidade. Para arquivos maiores o Photoshop utiliza a extensão .PSB (Photoshop Big), que é capaz de salvar um arquivo de até 300 megapixels, sendo uma das melhores opções do mercado para armazenar o original de imagens criadas e depois convertê-las para o meio que será utilizado, sendo tanto PNG para web quanto TIFF para situações onde a qualidade é altamente necessária. TIFF (Tagged Image File Format) Considerado por muitos como o melhor formato de imagem de alta qualidade para se trabalhar, o TIFF utiliza compressão sem perdas, mas é preciso lembrar que ele não aumenta a qualidade automaticamente. É necessário utilizar o TIFF desde o começo, pois abrir uma imagem em JPG e salvá-la em TIFF não alterará absolutamente nada. EXIF (Exchangeable Image File Format) Bastante similar ao TIFF, suporta 8, 16, 24 e até 48 bits de cores, portanto, é altamente recomendado em situações onde a qualidade final da imagem é muito mais importante do que o tamanho do arquivo, como em imagens médicas, por exemplo. Algumas câmeras digitais de alta qualidade salvam a captura em EXIF para não jogar fora nenhum detalhe. Mas se o EXIF é tão bom, por que não constumamos achá-lo com frequência na web? Basicamente porque existe mais de um tipo, não sendo um formato padronizado. Isso faz com que alguns programas, como os navegadores, não o suportem nativamente, deixando-o restrito a aplicações específicas. RAW Utilizado principalmente em câmeras digitais utilizando compressão sem perdas ou com quase nenhum desperdício de informação. Visto como uma excelente opção para os fabricantes por sua alta qualidade, sofre do mesmo problema do EXIF, que é a falta de um padrão que normalize todas as imagens no formato RAW. WEBP Desenvolvido pelo Google em 2010, o WEBP traz a proposta de fazer com que as imagens fiquem até 40% menores do que o JPEG sem sacrificar a qualidade. Segundo a empresa, cerca de 65% de todo o tráfego da internet é composto por imagens, das quais mais de 90% são JPEG, então a mudança para esse formato diminuiria o tráfego mundialmente e diminuiria os custos de armazenamento das empresas. Muitas vezes visto como o futuro formato padrão da internet, no papel o WEBP supera de longe os JPEGs, mas como é comum no mundo da informática, a simples superioridade técnica do WEBP não o tornará padrão, já que o JPEG já faz parte do cotidiano da maioria das pessoas. Comparativo JPG versus GIF versus PNG Para ilustrar o que foi dito acima, colocamos imagens de uma paisagem nos formatos mais utilizados na web para mostra a diferença entre um e outro. Confira! JPEG 100% Qualidade - 305 KB JPEG 60% Qualidade - 55 KB JPEG 20% Qualidade - 29 KB PNG 100% Compressão - 401 KB PNG 50% Compressão - 406 KB GIF - 127 KB Créditos. Pedro Cipoli
    1 ponto
  24. Obrigado, eu que agradeço. Obrigado meu querido, estou de volta =D. Breve postarei mais coisas da ChaitoSOFT e mais coisas de otserv, respondendo dúvidas e cia. Um Abraço.
    1 ponto
  25. Alexclusive

    Minhas fotografias [iPhone]

    Bom, depois de muito tempo, venho aqui postar um foto de TOMORROWWORLD pra vocês: E outras recentes agora rs: Por hoje foi isso hehe, depois posto outras! Abraços e um agradecimento a todos que me acompanham aqui!
    1 ponto
  26. LuckOake

    Aprendendo A Scriptear

    Olá galera. Muitos de vocês que são iniciantes em scripting tem certa dificuldade para criar scripts, uns por falta de ideias, outros por realmente não conseguirem montar nada. Por isso, resolvi fazer esse tutorial simples e claro. Aprendendo a Scriptear Introdução: Bom, primeiramente, você já se perguntou "por quê quero scriptear"? Se sim, legal, mas chegou à uma resposta? Se não, pense nisso. Tente chegar à algo que te inspire, seja observando trabalhos de scripters mais conhecidos e habilidosos ou simplesmente querendo criar novas coisas para ter seu nome conhecido. Sem uma inspiração você não vai avançar, acredite em mim. Começando no mundo dos scripts: Quando você tentou aprender a scriptear pela primeira vez, o que você fez? 95% das pessoas responderiam: "Eu li tutoriais". Tudo bem, mas será que isso é certo? Posso te assegurar que não. É claro, ler um tutorial abre sua mente para a parte teórica de scriptear, mas nada muito grande, de pouco adianta a teoria se você não entende a prática. Como praticar: Vou compartilhar com vocês uma experiência de vida. Eu tenho um server que está atualmente fechado para reformas, mas antigamente, eu necessitava sempre de inovar para agradar os players, só que os scripts que eu queria nem sempre estavam disponíveis na net. O que eu fazia? Simples, procurava scripts que possuiam as funções que eu precisava e ia juntando os pedaços até formar o que eu queria. Não, nunca funcionava de primeira, tinha vez que eu levava umas 2 horas para montar um script não muito avançado. Resultados da prática: Com a prática dita acima, você aprende as funções (como elas funcionam, o que significam, etc), aprende a estrutura de um script (if, else, end, etc), e o principal, aprende a criar. Moral: Não leia tutoriais apenas, pratique à partir do que você já conhece. Exemplo disso: Você conhece as cores azul e vermelho. Se você juntar as duas, você conhecerá uma nova cor, a cor roxa. Ou seja, juntando seus conhecimentos você obtêm mais sabedoria. Aprendendo a Imaginar Introdução: Bom, o maior problema de todo scripter é a falta de idéias, mas nem todos sabem resolver isso e encalham, alguns até desistem. Como resolver? Mas antes de tudo, vamos ao por quê. Por quê não tenho ideias? Você provavelmente já se perguntou isso. Se não, SE PERGUNTE. É importante. Parte das pessoas diriam que é porquê tudo já foi inventado, mas acredite, isso tá errado. Eu mesmo tinha essa visão, mas aprendi a imaginar, mesmo que às vezes seja difícil. Você não tem ideias bem provavelmente porquê você não tentou ter. Ou se tentou, fez da maneira errada. Então como ter ideias? Cara, você mora num universo que provavelmente está dentro de outras imensidões que seres humanos como nós são incapazes de compreender, mas fiquemos na Terra mesmo. O que tem na Terra? Muitas coisas, e a cada dia são criadas mais e mais coisas. Observe o mundo ao seu redor, se você prestar atenção em cada detalhe, verá que existem objetos, pessoas e até ambientes que você nunca imaginava que existisse. Você, tendo um pingo de criatividade, pode criar na sua mente um paraíso inteiro à partir de um simples campo de futebol. Moral: Você aprende a imaginar à partir do que já existe, isso é fato, mas com isso, você pode muito bem tirar uma base da sua imaginação ou até mesmo da realidade e criar um sistema que não existe, afinal, muitas coisas ainda não existem. Conclusão Final Você aprende praticando, e com a prática você evolui, mas para praticar você precisa de uma inspiração, e a partir da inspiração você tem ideias, e a partir das ideias você pratica, e com a prática você evolui, e fica nesse ciclo infinito. --------------------------------------------------------------------------------------------- Obrigado galera, espero que vocês tenham entendido o que eu quis dizer. Att. Luck Oake
    1 ponto
  27. Hoje vamos dar continuidade as aulas. Aprenderemos Lógica, Algorítimos e Organização, que para mim são as coisas básicas que TODO programador deve conhecer. Lógica de Programação O que é Lógica de Programação? é uma sequencia de pensamentos com fim de atingir determinado resultado. E esses pensamentos, podem ser usados para construir uma sequencia lógica, afim de executar uma ação da maneira mais simples o possível. Isso é o conceito básico de lógica de programação. Algorítimos Agora começa a parte divertida. Algorítimo é uma sequencia de comandos(instruções) para executar tal ação, como uma receita que sua mãe usa para fazer bolos. Quaisquer sequencias de instruções podem ser consideradas algorítimos. "Algorítimo de Chupar uma bala". • Pegar a bala • Retirar o papel • Chupar a bala • Jogar o papel no lixo Todos algorítimos devem ser simples e objetivos. Organização Essa é uma parte realmente "importante": (O Mock deveria ler isso todo dia, falo mesmo) Endentação: Endentação, identação ou edentação, é o espaçamento no inicio de qualquer paragrafo, afim de diferenciar e melhorar a visualização dos escopos do algorítimo. Código sem indentação (Na verdade ele tem, mas eu tirei para usar de exemplo) function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Código com identação: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Dá para perceber uma diferença bem grande na parte de visualização, certo? Nomenclatura: Essa é outra parte importante que poucos prestam atenção. Você deve criar os códigos para os OUTROS (mesmo que você não for liberar ele), e você deve imaginar que TODO mundo não entende nada de programação. Por isso, você deve usar nomes simples e sugestivos. Você NUNCA deve usar nomes assim: local var_que_solta_raio_lasers_e_panz = 12 Tente sempre ser sugestivo, nomes mais simples: local quantidade_de_stones = 12 Comentários: Essa é uma das partes mais importantes, na minha opinião. Sempre que for começar alguma ação ou escopo, comente no final da 1º Linha o que ele faz, como ele faz e por que ele faz. Como eu já disse, você deve pensar que está programando para pessoas leigas. Sem comentário: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) local value = tonumber(getPlayerAchievById(cid, achievid)) if value == -1 then return true end if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Com Comentário: function doPlayerAddAchiev(cid, achievid) local pid = getPlayerGUID(cid) -- declaração da variavel com GUID do player. local value = tonumber(getPlayerAchievById(cid, achievid)) -- Declaração da váriavel que irá conter o valor do Achiev. if value == -1 then return true end -- Se o valor for 0, então ele irá retornar true e irá parar o código aqui. if value == 0 then db.executeQuery("INSERT INTO `achievements` (`player_id`, `achievement_id`, `value`) VALUES ('"..pid.."', '"..achievid.."', '1');") end -- Se ele for 0, então ele irá mudar o valor para 1. if (tonumber(getPlayerAchievById(cid, achievid)) >= achievs[achievid].qt) then -- Se o valor for maior ou igual ao valor da tabela, então ele irá executar o escopo. doPlayerSendTextMessage(cid,22, 'Você recebeu a conquista "'..achievs[achievid].name..'"') db.executeQuery("UPDATE `achievements` SET `value` = ".. -1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") doPlayerAddAchievPoint(cid, achievs[achievid].pt) else -- Se não, ele executará esse escopo. db.executeQuery("UPDATE `achievements` SET `value` = ".. (tonumber(getPlayerAchievById(cid, achievid))) + 1 .." WHERE `player_id`= " .. pid .. " AND `achievement_id`= " .. achievid .. ";") end doPlayerSave(cid) return true end Finalização Espero que tenham gostado dessa aula, tentei ser direto e simplório. Porém eu falei só sobre o básico, só a ponta do iceberg. Quem tiver mais interesse, o google tem milhares de apostilas sobre Algorítimos de Lógica de Programação. Link da primeira aula: http://www.xtibia.com/forum/topic/201079-aulas-basicas-com-o-sr-iunix-1-lua-o-que-e
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...