Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/26/14 em todas áreas
-
NetworkMessage Autor: DalvoDescrição: Lib direcionada a manipulação de bytes, feita com intuito de auxiliar nos opcodes para otclient, porém tem uma vasta gama de utilidades. NetworkMessage = {}function NetworkMessage.create(pdata) -- NetworkMessage.create([pdata]) -- @params -- 'pdata': string -- Instancia a classe NetworkMessage, se pdata é fornecido é definido o atributo data igual a pdata e size igual a #pdata return setmetatable({ data = pdata or "", size = pdata and #pdata or 0, pos = 1}, { __index = NetworkMessage })endfunction NetworkMessage:reset() -- NetworkMessage.reset(self) -- self:reset() -- @params -- 'self': table -- Reinicia os atributos do objeto self.data = "" self.size = 0 self.pos = 1endfunction NetworkMessage:setBuffer(buffer) -- NetworkMessage.setBuffer(self, buffer) -- self:setBuffer(buffer) -- @params -- 'self': table -- 'buffer': string -- Define 'buffer' como atributo data if not type(buffer) == "string" then return false end self.data = buffer self.size = #buffer self.pos = 1endfunction NetworkMessage:getBuffer() -- NetworkMessage.getBuffer(self) -- self:getBuffer() -- @params -- 'self': table -- Retorna o atributo 'data' return self.dataendfunction NetworkMessage:getSize() -- NetworkMessage.getSize(self) -- self:getSize() -- @params -- 'self': table -- Retorna o atributo 'size' return self.sizeendfunction NetworkMessage:getRanges(byteCount, signed) -- NetworkMessage.getRanges(self, byteCount, signed) -- self:getRanges(byteCount, signed) -- @params -- 'self': table -- 'byteCount': number -- 'signed': boolean -- Função interna usada para calcular o limite do valor de 'byteCount' bytes, se signed é true reajusta seu valor para signed local min, max = 0, ((256^byteCount) -1) if(signed)then max = math.floor(max/2) min = -max-1 end return -min, maxendfunction NetworkMessage:canRead(size) -- NetworkMessage.canRead(self, size) -- self:canRead(size) -- @params -- 'self': table -- 'size': number -- Verifica se pode ser lido o numero 'size' de bytes, retorna um booleano return (self.pos + size) > (self.size + 1)endfunction NetworkMessage:readBytes(byteCount, signed) -- NetworkMessage.readBytes(self, byteCount, signed) -- self:readBytes(byteCount, signed) -- @params -- 'self': table -- 'byteCount': number -- 'signed': boolean -- Tenta ler 'byteCount' numero de bytes, retorna o valor numerico dos bytes -- se possivel a leitura, e false se não. Se signed é true reajusta valor para signed if self:canRead(byteCount) then return false end local min, _ = self:getRanges(byteCount, signed) local value = 0 for byte = 1, byteCount do value = value + ( self.data:byte(self.pos) * (256^(byte-1)) ) self.pos = self.pos + 1 end return value + minendfunction NetworkMessage:addBytes(value, count, signed) -- NetworkMessage.addBytes(self, value, count, signed) -- self:addBytes(value, count, signed) -- @params -- 'self': table -- 'value': number -- 'count':number -- 'signed':boolean -- Tenta escrever 'value' em 'count' bytes, se 'value' for maior que o numero de bytes -- suporta retorna false. Se signed é true reajusta valor para signed if signed then value = value * 2 end if value >= (256^count) then return false end for byte = count, 1, -1 do local power = (256 ^ (byte-1)) self.data = self.data .. string.char( math.floor(value/power) ) value = value % power end self.size = self.size + count self.pos = self.pos + count return trueend-- Metodos para pegar valoresfunction NetworkMessage:getU8() return self:readBytes(1, false)endfunction NetworkMessage:getU16() return self:readBytes(2, false)endfunction NetworkMessage:getU32() return self:readBytes(4, false)endfunction NetworkMessage:getU64() return self:readBytes(8, false)endfunction NetworkMessage:getI8() return self:readBytes(1, true)endfunction NetworkMessage:getI16() return self:readBytes(2, true)endfunction NetworkMessage:getI32() return self:readBytes(4, true)endfunction NetworkMessage:getI64() return self:readBytes(8, true)end-- Metodos para adição de valoresfunction NetworkMessage:addU8(value) return self:addBytes(value, 1, false)endfunction NetworkMessage:addU16(value) return self:addBytes(value, 2, false)endfunction NetworkMessage:addU32(value) return self:addBytes(value, 4, false)endfunction NetworkMessage:addU64(value) return self:addBytes(value, 8, false)endfunction NetworkMessage:addI8(value) return self:addBytes(value, 1, true)endfunction NetworkMessage:addI16(value) return self:addBytes(value, 2, true)endfunction NetworkMessage:addI32(value) return self:addBytes(value, 4, true)endfunction NetworkMessage:addI64(value) return self:addBytes(value, 8, true)endfunction NetworkMessage:addString(str) -- NetworkMessage.addString(self, str) -- self:addString(str) -- @params -- 'self': table -- 'str': string -- Tenta adicionar 'str', se o tamanho supera dois bytes, retorna false if not self:addU16(#str) then return false end self.data = self.data .. str self.size = self.size + #str self.pos = self.pos + #str return trueendfunction NetworkMessage:getString() -- NetworkMessage.getString(self) -- self:getString() -- @params -- 'self': table -- Tenta ler a string e retorna-la em caso de sucesso, se falho retorna false local size = self:getU16() if not (size and self:canRead(size)) then return false end local str = "" for byte=0, size-1 do str = str .. string.char(self.data:byte(self.pos + byte)) end self.pos = self.pos + size return strend Link da lib3 pontos
-
3 pontos
-
Pokémon Centurion v9 editado por LuizHenriqueSmania [8.54]
Vanshax e um outro reagiu a LuizHenriqueSmania por um tópico no fórum
Olá terráqueos o/ Hoje vim trazer uma edição minha do Centurion,coloquei online chegou a 40 pessoas online.e é minha primeira edição de PokeTibia(primeira para postar) Informações : Minhas edições : Prints : Downloads : Servidor : https://www.mediafire.com/?bsv68d54unf1xia Cliente : http://www.4shared.com/rar/8U22GWdo/Centurion_V8_OT_Client_.html? Creditos : Lordbaxx - pelo centurion v8 Jobby Magalhães - porque o Lordbaxx pediu que colocasse creditos a ele. Cacaiu - por criar o centurion oficial Notle2012 - Pelo pokes falando que eu usei Valeu ae gente,abraço. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Centurion v9.1 editado por LuizHenriqueSmania Editei algumas coisas,segue no spoiler a seguir : Prints : Downloads : Servidor : https://www.mediafire.com/?k93dzmndpzqhaye desculpe por não colocar os items.otb e items.xml Cliente(pode usar o OTCLIENTE,da versão 9.0) : http://www.mediafire.com/download/l5435d95q4lf9mc/CenturionV6+Cliente.rar Lembrando,vou continuar atualizando,talvez até o centurion v10,seilá,vou ir atualizando,podem ir seguindo o tópico,vai atualizar 1 vez por dia,1 vez a cada 2 dias,vou colocando coisas novas,editando o mapa,retirando bugs,balanceando,até ficar top Abraço2 pontos -
Queries e SQL para OTservers
Night Wolf e um outro reagiu a Omega por um tópico no fórum
Esse é um tutorial básico sobre SQL e as funções LUA que são usadas em OTServers. Definição Primeiramente, deve ser útil uma definição de banco de dados: são, fundamentalmente, conjuntos de informações armazenadas em tabelas. Para OTServers, são onde todas as informações sobre as contas e personagens são guardadas. SQL (Structured Query Language) é uma linguagem que é usada por quase todos os bancos de dados (no nosso caso, todos). Quando você envia comandos em SQL para o seu banco de dados, você pode modificá-lo ou extrair valores dele. Query (queries no plural) são consultas ou comandos que são enviadas para o banco de dados. Introdução Para nós, scripters, às vezes é fundamental tirar informações ou mudar valores dos personagens que só estão disponíveis no banco de dados, para isso existe uma biblioteca de funções que já vem com os servidores, a biblioteca db (de database, que significa banco de dados em inglês). Dela, usaremos principalmente duas funções: db.getResult Retorna os valores que foram selecionados em uma query db.query ou db.executeQuery Executa uma query usada para modificar informações no banco de dados. Essa função se chama db.executeQuery na maioria dos servidores, mas também pode ser utilizada como db.query em outros. Em ambos os casos, a query deverá ser usada entre aspas. Queries em SQL Primeiramente, devemos saber como executar queries diretamente no banco de dados. Para isso, faça download de um banco de dados que eu disponibilizei abaixo como anexo. Use também o sqlite studio, que você pode baixar aqui. Assim que você abrir o banco de dados com o sqlite studio você verá que está dividido em duas janelas: a da esquerda de navegação e a da direita com os dados em si (no caso está branco quando abre). Abra a árvore do banco de dados e selecione a tabela players clicando duas vezes. Você verá a estrutura do banco de dados, com os nomes das colunas e o tipo de dados de cada uma (INT, INTEGER, VARCHAR, BOOLEAN, etc). Em seguida, selecione a aba 'Data' para ver os dados que estão na tabela. Lá estarão todos os jogadores cadastrados no servidor, com várias informações. Essa é a aba importante para nós. 1. SELECT Depois disso, vamos tentar executar um primeiro comando no banco de dados: use ALT+E para abrir o editor de queries e digite: SELECT * FROM players Então, aperte F9 e veja o resultado. O que deve acontecer é aparecer toda a tabela players que você já havia visto. Perceba como, em geral, SQL é uma linguagem bem direta: a query que você enviou para o banco de dados significa: SELECIONE * DE jogadores E ela faz isso, com a exceção de que * significa todos os dados da tabela. OBS.: Apesar de quase toda query de SQL estar nesse padrão, ela é uma linguagem que não é case sensitive, logo select * from players Dá no mesmo. Mas fica menos legível, assim utilizamos letras maiúsculas para as palavras-chave dos comandos e letras minúsculas para os nomes de tabelas e colunas. Vamos testar outra query, um pouco mais complicada: SELECT name, level FROM players Dessa vez não selecionamos todos os dados da tabela, apenas o nome e o level de cada jogador. A sintaxe do comando SELECT é: SELECT nome_da_coluna_1, nome_da_coluna_2,..., nome_da_coluna_n FROM nome_da_tabela Assim teremos como retorno os valores dessas colunas para cada elemento da tabela. Tente selecionar apenas o nome e a posição (x, y e z) de cada jogador e confira abaixo. Complicando um pouco mais, vamos ordenar a tabela players por level: SELECT * FROM players ORDER BY level DESC Adicionamos a palavra-chave ORDER BY e DESC. A primeira significa 'ordene por' e a segunda, 'decrescente'. Ou seja, ordenamos nossa tabela com base na coluna level de maneira decrescente. Se você ocultar o DESC, a ordem natural vai ser crescente. Agora vamos filtrar nossos resultados: SELECT name, level FROM players WHERE level > 100 ORDER BY level DESC Assim obtemos apenas os jogadores com level maior que 100 e ordenados de maneira decrescente pelo level. A palavra-chave WHERE significa 'onde' e introduz uma condição para os resultados. Complicando ainda um pouco mais, vamos fazer a mesma coisa, mas para os jogadores com level entre 100 e 200 (sem contar nenhum dos extremos). SELECT name, level FROM players WHERE level > 100 AND level < 200 ORDER BY level DESC Portanto podemos usar AND e OR para escolher melhor os resultados. Para selecionar os extremos, podemos usar os operadores '>=' (maior ou igual) e '<=' (menor ou igual) ou simplesmente: SELECT name, level FROM players WHERE level BETWEEN 100 AND 200 Tente pegar os magic levels dos jogadores com level entre 50 e 100 (excluindo os extremos) e vocação 2 (druids), ordenados pelo level de maneira decrescente. Confira abaixo: 2. UPDATE Nesse ponto, eu recomendo que você faça um backup do banco de dados de teste para que, caso você mexa em algo e não saiba reverter, possa trocar facilmente. Esse é o comando em SQL para alterar informações em uma tabela. Vamos começar com um exemplo simples: mudar o nome de uma guilda. Faremos isso usando o comando UPDATE, cuja sintaxe é: UPDATE nome_da_tabela SET nome_da_coluna = valor Para mudar o nome de uma guilda, precisamos usar o UPDATE, mas se fizermos: UPDATE guilds SET name = 'We Keel You' Estaremos mudando o nome de todas as guildas do servidor para 'We Keel You' (as aspas devem estar presentes sempre que a informação que você está tratando é do tipo string, ou seja, um texto). Agora tente mudar apenas o nome da guilda Ownage para We Keel You. Confira abaixo: Atualize a tabela guilds apertando F5 e perceba que agora a última guilda listada se chama We Keel You. Perceba que a maioria das tabelas tem uma coluna id. Essa é uma coluna importante para reconhecer cada elemento da tabela. OBS.: Prefira sempre trabalhar com números do que com textos. Agora vamos mudar o nome e a mensagem de uma guild: UPDATE guilds SET name = "Bumbum de bebe", motd = "Seja bem vindo!" WHERE id = 2 Agora mudamos, com um UPDATE só, a mensagem (motd) e o nome da guilda com id 2 (Power Abusers). Em alguns casos, queremos acrescentar e não mudar o valor de alguma coluna. Podemos fazer como o exemplo abaixo, no qual todos os jogadores serão promovidos, desde que já não o sejam. UPDATE players SET vocation = vocation + 4 WHERE vocation <= 4 3. INSERT INTO Esse é o comando em SQL para inserirmos dados em uma tabela. Para criar um jogador, por exemplo, podemos utilizar esse comando assim: INSERT INTO players VALUES (1, "Char de Teste", 0, 1, 1, 8, 3, 150, 150, 4200, 114, 92, 0, 0, 0, ...) Ou seja, estamos inserindo na tabela players os valores 1, "Char de Teste" , 0, 1, 1, 8, 3, 150, 150, 4200, 114, 92, 0, 0, 0, etc. Esses valores são inseridos na ordem das colunas, então 1 é o id, "Char de Teste" é o nome e assim por diante. Essa é uma das formas de se usar o comando INSERT INTO, mas existe outra: INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ...) VALUES (valor_da_coluna1, valor_da_coluna2, valor_da_coluna3, ...) 4. ALTER TABLE Esse é um comando um pouco mais complicado porque sua sintaxe varia bastante dependendo do banco de dados. Em OTServers, esse comando é usado principalmente para acrescentar uma coluna em uma determinada tabela. Por exemplo, para criar um sistema VIP pelo banco de dados, poderíamos usá-lo. Sua sintaxe fica assim: ALTER TABLE nome_da_tabela ADD nome_da_coluna tipo_de_dado (restrições e padrões) O tipo de dado define quais dados são aceitáveis como valores da coluna. Por exemplo, uma coluna que conterá nomes deve ter como tipo de dado varchar(255). Esse é um padrão que eu vejo nos servidores e significa que serão aceitos caracteres variáveis com comprimento de até 255. Entretanto, o SQLite ignora qualquer número em parênteses e não define um máximo baseado nisso. O máximo é padronizado para 1000000 de bytes (sqlite.org/datatypes). Procure saber como funciona se você usa outro banco de dados (MySQL, por exemplo). Para um número, use INT (que significa inteiro). Acho que são só esses dois tipos de dados que são comumente usados quando se trata de OTServers. Para mais informações, clique aqui. As restrições são valores que não serão aceitos na coluna, como NOT NULL (para não aceitar valores nulos e facilitar posteriores tratamentos de erros), enquanto padrões são valores que serão inseridos automaticamente na coluna, se nenhum outro for especificado. Por exemplo, ao criar um jogador, vários valores tem padrão (default) 0. Não faz sentido um jogador começar com skull diferente disso, né? Ambas as restrições como valores padrão são opcionais. Exemplo: ALTER TABLE players ADD vip_time INT NOT NULL DEFAULT 0 É possível criar colunas, mas nem sempre é possível deletá-las diretamente. Com SQLite, teríamos que passar todos os dados para uma tabela temporária e, dessa tabela, extrair apenas as colunas que queremos para deletar uma coluna. Portanto, sempre faça um backup quando for usar esse comando. 5. COMANDOS COMPOSTOS Para introduzir essa seção do tutorial, tente esse exercício: selecione o valor do storage 2308 para o jogador "Hulk". Esse comando é mais complicado que os outros pois ele combina dois SELECTs. Perceba que não é possível selecionar o valor do storage diretamente pelo nome, mas é possível determinar o storage pelo id e o id pelo nome. Então temos que acessar a tabela players para selecionar o id do Hulk e depois, com esse id, selecionar o valor do storage 2308. Comandos dentro de outros comandos devem ser usados entre parênteses. Também não podemos ver o skill de um jogador diretamente. Temos que saber seu id e, na tabela player_skills, comparar o número do skill com o id do jogador. Para obtermos os skills de um jogador, podemos executar o seguinte: SELECT skillid, value FROM player_skills WHERE player_id = (SELECT id FROM players WHERE name = "Hulk") Assim conseguindo obter os skills e seus valores do jogador Hulk. Tente mudar o valor do storage com key 2308 do jogador "Hulk" para 10. Confira abaixo. Queries SQL em LUA Agora, vamos voltar ao nosso mundo de scripting LUA. Agora que já sabemos como usar as queries, vamos aplicá-las: que tal criar um ranking com o TOP 10 do seu servidor em uma talkaction? Primeiramente, vamos definir a query SQL que usaremos: queremos os nomes e os levels dos 10 maiores levels do servidor. Tente criar a sua e compare: Sim, existe uma palavra-chave nova nessa query que não foi apresentada anteriormente. LIMIT define um limite de valores retornados. Assim impedimos que nossa lista fique maior do que os 10 que queremos mostrar. Agora precisamos escolher a função que vamos usar no script. Voltando ao início do tutorial, percebe-se que o SELECT deverá ser associado ao db.getResult. Portanto, nossa função principal do script deve ser: db.getResult("SELECT name, level FROM players ORDER BY level DESC LIMIT 10") Colocando isso numa talkaction: function onSay(cid, words, param) -- Salvando os resultados da query em uma variável local query = db.getResult("SELECT name, level FROM players ORDER BY level DESC LIMIT 10") -- Criando uma tabela para passar os resultados local list = {} -- Checando se a query foi mal-sucedida (se ocorreu alguam problema, o código irá retornar verdadeiro e nada será exibido) if query:getID() == -1 then return true end repeat -- Armazenando o nome da linha atual do resultado na variável name local name = query:getDataString("name") -- Armazenando o level da linha atual do resultado na variável level local level = query:getDataInt("level") -- Inserindo a string com o nome e o level na tabela table.insert(list, name.. " - level: "..level) -- Termina o loop se não houver mais resultados ou passa pro resultado seguinte until not query:next() -- Envia a mensagem pro jogador, concatenando os resultados com uma quebra de linha doShowTextDialog(cid, 2148, table.concat(list, "\n")) -- Libera os resultados armazenados query:free() return true end Explicando: Primeiramente salvamos nossos resultados em uma variável chamada query. Para isso, usamos o db.getResult citado anteriormente. Em seguida, criamos uma variável list, uma tabela vazia, que será utilizada para manipular os resultados. A checagem para saber se algum resultado foi obtido pela query é usar o query:getID(). Se ele for maior que -1, então existem resultados obtidos. Começamos um loop repeat para analisar cada linha do resultado Para pegar o "name" da linha de resultado que temos na query, utilizamos o query:getDataString("nome_da_coluna") e salvamos na variável name. Fazemos o mesmo para uma variável level, lembrando que o tipo de dado será Int (inteiro), então utilizamos query:getDataInt("nome_da_coluna") Insere na tabela list um texto do tipo: Eternal Oblivion - level: 300, de acordo com a linha atual do resultado O método query:next() retorna a próxima linha do resultado se houver ou nil. Assim, passamos pra próxima linha ou terminamos o loop Com o texto formado, utiliza-se a função doShowTextDialog para enviar para o jogador que usou a talkaction, juntando (concatenando) a tabela com os resultados com uma quebra de linha ("\n") Liberamos os resultados armazenados pela query e fechamos o script E assim você acabou de criar uma talkaction com o ranking dos jogadores do seu servidor com base no level! Então essa é a base necessária para se acessar o banco de dados através de scripting. O resto depende da sua criatividade. Exercícios 1 - Selecione o maior magic level do servidor 2 - Adicione 5 dias de dias premium para todas as contas 3 - Selecione o nome do líder da guild com id 2 4 - Insira um novo storage com key 71236 e valor 1 para o top level do servidor 5 - Crie uma talkaction que fará com que todos os jogadores sejam teletransportados para uma posição definida, estando offline ou online. W3schools SQL Quiz Fontes Consultadas http://www.w3schools.com/sql/ http://www.sqlite.org/ Considerações Seria injusto não dar os devidos créditos ao , cujos códigos serviram de base para meu aprendizado em relação à SQL e às funções LUA relacionadas. Scan do arquivo DB_Teste.rar2 pontos -
[Killer Up] pvp-e mata player e upar 854+
Soulviling e um outro reagiu a notle2012 por um tópico no fórum
esse sistema funciona assim você mata um player e upa só que vc não upa sozinho upa junto com os seus colegas q ajudou mata player igual os ot 840 que tem pvp-e exemplo todos que atacou test x upo mesmo sendo só notle que mato você vai ter uma lista que pode ser checada você pode ataca ate 5 player e se um deles for morto você vai upa tbm aqui lista a baixo eu ataquei esses 5 players se um deles morre vai sair da lista e vc vai poder ataca outro e se lista tiver com os 5 e vc ataca outro o primeiro da lista sair e vem o novo assim por diante pra instalar vai em data\talkactions\scripts e cria listplayer.lua coloca isso la agora vai em data\creaturescripts\scripts\ cria addplayer.lua coloca isso la agora vai em data\creaturescripts\scripts cria playerkiller.lua coloca isso la e por FIM Esse Sistema é Exclusivo Para o Xtibia, Não autorizo a publicação em outros fórums.2 pontos -
Object Builder
saviomu e um outro reagiu a EdMignari por um tópico no fórum
Object Builder é o programa usado para editar itens, outfits, efeitos e mísseis no cliente. Ele edita e compila os arquivos dat e spr. (Object Builder) Versões suportadas: 8.00 - 10.38Download: ___________________________ Adobe AIR Object Builder 0.2.9 Scan Adobe AIR ___________________________ Sources GitHub2 pontos -
Olá comunidade, O meu nome é Lucas Melo, conhecido como LuquitossML, eu recebo muitas mensagens aqui no fórum de membros que gostariam de auxilio para a criação/edição de uma sprite e outros com interesse de aprender a spritear, como eu não tenho tempo para ajudar todo mundo, decidi fazer um tutorial, neste tutorial eu vou compilar tudo aquilo que você precisa saber para começar a arte da perspectiva 45°. Aqui nós vamos aprender passo a passo para a criação de uma sprite. Tutorial Básico sobre quase tudo aquilo que você precisa saber. Introdução: Definição Geral.No Tibia, assim como todos os jogos, os elementos gráficos são chamados de Sprites. Para criar estes sprites, utilizamos uma técnica de design gráfico conhecida pelo nome de Pixel Art. Pouca gente conhece essa arte, que surgiu com os primeiros videogames. Pixel art significa fazer Arte através da utilização de Pixels. Pixel são os pequenos quadrados que compõe as imagens gráficas de qualquer sistema televisual. A organização correta de pixels pode gerar formas que podem ser reconhecidas como animais, objetivos, fotografias, plantas, animações variadas, etc. Técnicas de pixel artPixel art conta com algumas técnicas diferentes de qualquer outro tipo de arte, por ser uma arte de baixa resolução. Dithering: É o uso de padrões de pixels para se criar a ilusão de que existem mais cores do que realmente se estão sendo usadas. Também é usado para se fazer texturas. Anti-Alias (ou AA): Técnica para se suavisar linhas, usando tons médios para reduzir o contraste entre a cor da linha e a cor que envolve a linha. Sombreamento: O sombreamento em pixel art deve ser feito como em objetos reais, com base em uma fonte de luz. Sombrear a figura das bordas para o centro é um erro bastante comum, chamado de Pillow Shading (ou sombreamento 'travesseiro') Salvando deu Trabalho:Para se salvar um trabalho seu no computador, deve-se usar o formato correto. JPG é um formato que usa um tipo de compressão bom apenas para imagens suaves e contínuas. Se usado no pixel art, causa uma enorme perda de qualidade BMP é um formato que apesar de manter a qualidade, acaba resultando em um arquivo muito pesado GIF e PNG são os formatos mais apropriados. GIF, com uma paleta limitada a 256 cores, é o formato ideal, já que é o menor e dificilmente o pixel art terá tantas cores. Se você usa o programa Paint para fazer pixel art, salve como PNG, pois quando o Paint salva como GIF, ele usa uma paleta de cores padrão, e causará alterações de cores no seu pixel art. Categorias:Pixel art é normalmente dividido em duas categorias. Isométrico é o pixel art que imita uma visão em 3 dimensões, mas que não possui perspectiva. Não-isométrico é qualquer outro tipo de visão como Front View (frente) ou Top View (de cima) Como começar a fazer Pixel Art? Existem vários programas para se fazer Pixel art. O mais simples deles é o conhecido Microsoft Paint, ou como dizem: MS Paint. A interface do Paint, é muito muito simples, e com o tempo você entenderá cada uma das funções que ele é capaz de realizar. Ferramentas Básicas:LUPA - Amplia ou reduz o CANVAS (Área onde se desenha ou Área selecionada). LÁPIS - Ferramente capaz de pintar um pixel por vez. BORRACHA - Apaga o que foi desenhado. LATA DE TINTA - Preenche formas com cores. Controles Básicos. CTRL + A = Seleciona todo o Canvas. CTRL + C = Copiar Canvas. CTRL + E = Abre a Janela de Atributos do Canvas. CTRL + F = Fullscreen CTRL + G = Cria uma grade de pixels nos aumentos de 6x e 8x da LUPA CTRL + R = Abre Janela de Inverter ou Girar o Canvas. CTRL + T = Ocultar Barra de Ferramentas. CTRL + V = Colar Canvas. CTRL + Z = Desfazer ação. Desenvolvimento: Agora que já temos uma abordagem geral sobre o tema, vamos aprofundar nossos estudos. Luz e Sombra na perspectiva 45°.Para quem está começando é essencial ter noção de como a luz se comporta na perspectiva que focamos. De modo simples, a luz tem sua fonte a 45 graus acima do objeto, ou seja, a parte "noroeste" do sprite precisa sempre estar mais iluminado do que a parte "sudeste". Vejamos: Obs: Virar a sprite horizontalmente permite verificar se a luz está se comportando da maneira correta (Vindo de uma fonte que está a esquerda e acima do sprite - ou seja, a noroeste ) Lembrem-se de sempre considerar que a parte sudeste não é totalmente escura. Pois a parte da luz que vem do noroeste e chega até sudeste cruzando o sprite, pode refletir/refracionar e iluminar a parte sudeste, mas lógicamente, essa luminosidade será menor. Uma das regras mais importantes e obrigatórias caso seu intuito seja seguir o padrão Tibia: A luz vem do noroeste, mas mesmo assim, ainda existe luz vinda das demais fontes naturais e refletidas pelas superfícies. Sendo assim, seu sprite recebe luz de todas as direções, mas preferencialmente pelo Noroeste. Anti-Aliasing (AA). Quando trabalhamos com pixels percebemos que as bordas dos desenhos costumam aparentar muito o fato de que os pixels são de fato quadrados. O problema de muitos desenvolvedores gráficos no começo do pixel art, foi justamente no momento em que precisavam desenhar elementos que não seguissem o padrão quadrado dos pixels, como por exemplo Círculos, Esferas, e bordas redondas. Para muitos, a solução desse problema surgiu com a criação da ténica de Anti-Aliasing ou simplesmente AA. O AA foi um grande avanço no desenho de formas esféricas ou outras que precisassem passar a idéia de uma superfícia lisa, sem irregularidades. Mas como isto é possível se todo sistema televisual utiliza PIXELS para formar gráficos? A resposta é simples: O AA utiliza pixels que misturam as linhas com o plano de fundo em que elas estão. Quando isto é feito, nossos olhos não conseguem distinguir as irregularidades dos pixels. Em primeiro lugar devido ao tamanho dos pixels e segundo lugar devido a uma boa suavização de bordas. Vejam no exemplo: http://img507.imageshack.us/img507/8484/aaexampleok2zl9.png Obs: Créditos da imagem: Galiant Na esquerda da 2° imagem, vemos o circulo formado de vários pixels pretos. Suas bordas estão "cruas" e sem AA. Assim, mesmo no aumento menor é possível perceber as falhas de suas bordas redondas. Na direita da imagem vemos o mesmo circulo após a aplicação da técnica de Anti-Aliasing. E agora, no aumento menor, não se pode mais ver as falhas das bordas. Como fazer Anti-Aliasing? O Anti aliasing é simples apesar de não parecer. Tudo se baseia em 3 passos: 1 - Observar primeiro o desenho que se quer suavizar. 2 - Observar o fundo no qual este desenho está inserido. 3 - Adicionar cores que simbolizam a mistura das cores do desenho, com o seu fundo. No exemplo acima (dos circulos) tinhamos um circulo PRETO, num fundo BRANCO, então apenas adicionamos tons de CINZA (PRETO + BRANCO) para suavizar a borda. No caso de uma sprite, o AA é feito internamente, ou seja, é feito dentro do outline/lineart da sprite, isso é feito utilizando no caso tons mais escuros nas partes cerrilhadas da sprite. Vejamos: Como podem ver na direita, a disposição dos pixels escuros nas partes mais cerrilhadas é o chamado AA, não é necessário que seja utilizado apenas preto para se fazer o Anti-Aliasing. Exemplo: "Ahh luquitos, eu quero fazer algo roxo, como eu faço AA nele?" Simples, apenas faça os passos iniciais para se fazer uma sprite: Faça um outline (contorno do sprite) Comece a pintar. comece a fazer o AA. (no caso do meu amigo da sprite roxa, utilize tons roxos escuros nas partes cerrilhadas da sprite) Logo depois do AA pronto faça a Iluminação, no caso, Luz e Sombra. Depois de todos esses passos, veja se não há mais nada para arrumar e "Voilá" Sua sprite está pronta. Conclusão: O Investimento do Tempo e Esforço. Trabalho em pixel art é demorado e muitas vezes de difícil processo. Quanto mais tempo você gasta trabalhando, e, em seguida, um pedaço de refino, Melhor será sua aparência. Isso muitas vezes pode levar horas, mas as recompensas valem a pena. Se você não está preparado para investir o tempo em seu trabalho, Ele não ira fluir, independentemente do número de tutoriais que você lê. Nada da certo na primeira vez? As primeiras interações com o seu outline/lineart ou imagem (sprite) sombreada pode muitas vezes ser frustrantes. Não desanime, mesmo os erros aparentemente mais hediondos podem ser editados em algo decente. Uma vez que a última versão de sua sprite é completa, sentar e dar uma boa olhada nela é essencial. Este reajuste geralmente divide-se em um simples ciclo de 3 etapas: 1 - O que aparentemente há de errado? 2 - Como posso corrigir? 3 - A fixação dele. O uso de referências. Muitas vezes, você pode compensar a falta de conhecimento sobre algum objeto através de imagens. Estes podem ser encontrados a partir de uma variedade de fontes, a mais imediata a ser através de um motor de busca na internet.Você também pode encontrar cores novas e interessantes a partir de fotografias e arte dos outros pixel. Lembre-se que o plágio direto, incluindo a edição do trabalho de outras pessoas, é distintamente ilegal. Espero que o tutorial tenha sido útil para alguém, caso o tutorial tenha uma grande repercussão e o pessoal mais duvidas, eu irei continuar atualizando ele com um conteúdo mais aprofundado sobre o tema. Obrigado a equipe do Xtibia pelo espaço. Atenciosamente, LuquitossML.1 ponto
-
Introdução I - Baixar os arquivos necessários II - Configurando seu banco de dados III - Editando seu servidor IV - Configurando um website V - Erros comuns I - Baixar os arquivos necessários Primeiramente, você terá; que baixar o software onde você colocará seu website e seu banco de dados. Recomendados: WAMP - XAMPP - VertrigoServ Segundo, agora você; terá que baixar o servidor (OTServ). Podemos encontrar uma variedade enorme aqui mesmo: LINK ( http://www.xtibia.com/forum/forum/596-downloads-de-otserv/ ) Agora, baixe o website (se for gesior, baixe de acordo com a versão do seu servidor): Recomendados: Modern AAC - gesior AAC - Znote AAC (todos podem ser encontrador aqui mesmo no XTibia - http://www.xtibia.com/forum/forum/581-downloads-de-websites/ ) II - Configurando seu banco de dados Agora iremos começar a configurar seu banco de dados. Caso use WAMP Caso use XAMPP Caso use VertrigoServ Criando um banco de dados (PhpMyAdmin) Pronto, você já tem seu banco de dados configurado. III - Editando seu servidor Para ele funcionar, a única coisa que você precisa é modificar seu banco de dados Caso queira utilizar IP Fixo, veja esse tutorial ~~> http://www.xtibia.com/forum/topic/232510-usando-ip-fixo-no-ip/ Vá até a pasta de seu OtServ e abra seu "config.lua" com o Bloco de notas. Agora seu servidor já está pronto para ficar Online IV - Criando um website Primeiramente: WAMP - Você irá colocar seu site na pasta c:\wamp\www XAMPP - Você irá colocar seu site na pasta c:\xampp\htdocs VertrigoServ - Você irá colocar seu site na pasta c:\vertrigo\www (ou caso esteja na pasta de instalação padrão C:\Program Files (x86)\VertrigoServ\www ) A respeito do ModernAAC ModernAAC - Modo 1 (Sem Instalador) ModernAAC - Modo 2 (Com Instalador) gesior AAC (com instalador) Znote AAC PS: Caso alguma informação esteja incorreta, por favor, me envie uma MP para corrigir a mesma. Changelog:1 ponto
-
Introdução I - Criando conta No-Ip II - Criando um Ip Fixo III - Utilizando no No-Ip I - Criando conta No-Ip Caso não tenha uma conta no No-Ip, abra esse spoiler. Caso contrário, siga ao próximo passo. II - Criando um Ip Fixo Entre em https://www.noip.com/login para fazer o login de sua conta Clique em Create Host Agora configure a seu gosto o IP e clique em Add Host : III - Utilizando o No-Ip Clique em Download Client no menu a esquerda ou acesse esse link https://www.noip.com/download Clique em Download Now e instale o DUC No-Ip Deixe marcada a opção Launch DUC No-Ip e entre com seus dados: Após logado, clique em Edit Hosts e selecione os que deseja que fique com seu ip. Agora clique em Save: Agora apenas use seu IP e seja feliz. Créditos: No-Ip DUC MatheusGrilo1 ponto
-
[ALL VERSIONS] Mudando IP com HexEitor
Shadow Phantom reagiu a Roksas por um tópico no fórum
Iaae galera, sussa? Hoje irei ensiná-los a mudar o IP de qualquer cliente usando o HexEditor, mais especificadamente o Cygnus. Vamos lá! Mudando IP com HexEditor Bom galera, primeiramente vocês deverão abrir o cliente desejado com o HexEditor (link para download no final do tópico). Vá em File > Open e abra o cliente. Em seguida verão todo o código fonte do cliente, todas traduções etc. Ok, agora para editar o IP dele, vamos procurar pelo IP que já está nele, você deve saber qual é, caso contrário vá até o fim do tópico e verá dicas para descubrir. Se for cliente de Tibia comum, o IP será o da CipSoft, agora vamos procurá-lo. Abra algum Editor de Texto (bloco de notas/MS Word) e digite o IP do cliente atual, vamos digitar isso: cipsoft Agora você seleciona, e copia. Mas por que isso? No CTRL+F do Cygnus HexEditor não é possível digitar corretamente, então copie de um Editor de Texto e cole lá no CTRL+F. Muito bem, após colar, aperte Enter para procurar, procure até encontrar uma sequência de IPS quase iguais e juntos, no caso da CipSoft vamos encontrar: Para mudar, não pode apagar nadinha, você clica entre o ponto (.) e a letra t, e digita o seu IP e perceberá que vai substituindo letra por letra. Os pontos separam cada IP, são 10 IPS para colocar, você não pode errar se não nem funciona! 1º IP: tibia05.cipsoft.com 2º IP: tibia04.cipsoft.com 3º IP: tibia03.cipsoft.com 4º IP: tibia02.cipsoft.com 5º IP: tibia01.cipsoft.com 6º IP: login05.tibia.com 7º IP: login04.tibia.com 8º IP: login03.tibia.com 9º IP: login02.tibia.com 10º IP: login01.tibia.com Vai substituindo um por um com o seu IP, um exemplo preenchido: Caso sobrem letras do IP que você substituiu, você as substitui com pontos (....) Entre cada IP deve ter pelo menos 1 ponto (.), caso contrário o IP é muito grande e você deve trocá-lo para um menor, o máximo é de 19 caractéres por IP! Agora que já mudou o seu IP, aperte CTRL+F e procure: 124710459426827943004376449897985582167801707960697037164044904862948569380850421396904597686953877022394604239428185498284169068581802277612081027966724336319448537811441719076484340922854929273517308661370727105382899118999403808045846444647284499123164879035103627004668521005328367415259939915284902061793 Substitua por: 109120132967399429278860960508995541528237502902798129123468757937266291492576446330739696001110603907230888610072655818825358503429057592827629436413108566029093628212635953836686562675849720620786279431090218017681061521755056710823876476444260558147179707119674283982419152118103759076030616683978566631413 Após isso, vá em File > Save e prontinho, só abrir e se divertir Não encontrei o IP do cliente no HexEditor, oque eu faço? Caso for o cliente do PDA Slicer, abra-o com o Cygnus, aperte CTRL+G e cole [b]"1c62f0"[/b], sem as aspas, assim você irá encontrar a sequência de IPS para substituir! Se for Pokemon Nibe é igual do PDA Slicer Se for Tibia normal, é só dar CTRL+F e digitar "cipsoft" sem as aspas. Download Cygnus HexEditor Scan Cygnus HexEditor1 ponto -
Weto Showoff
ShinySprite reagiu a eltoo por um tópico no fórum
Nenhuma delas está disponível para usar. Algumas sprites feita no decorrer da minha experiência. Atualizações:1 ponto -
Alissow Server
Fir3element reagiu a comedinhasss por um tópico no fórum
Alissow Server Provavelmente vocês estão pensando "mas que diabo de OT é esse?", afinal, já faz 1 ano desde que a ultima versão foi lançada. A penúltima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso. By Alissow Comedinha XedeguX Objetivo do projeto: Criar um servidor com base na versão mais atualizada do tibia com vários sistemas onde o mapa é feito para exploração com um grande nivel de RPG. Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest Monstros: -Total monstros: 15000+- Cidades: -10 Cidades -220 Houses+- Raids/Invasões: -Rat -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth -Orshabaal Spells: -Magias balanceadas parecidas com a do tibia global Changelog https://github.com/comedinha/Alissow/wiki/Changelog Imagens Download Servidor: GitHub Tamanho: ~10 MB Data Pack TFS 1.1 Atenção - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - As estatuas de offline que ficam no templo não funcionam por serem enfeites - Todos os addons são vendidos - Para usar os portais você primeiro deve explorar a área indo até ela - Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem - Se vocês perceberem o Alisson deu retired do mundo otserv e não participou dessa versão O Servidor está inacabado. Muitas coisas que foi planejado fazer nele não foram completas. Mas inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7) E algumas coisinhas que não são tao importantes mas estavam planejadas por nós e no futuro podem ser adicionadas como warzone, quests, mais npcs e outros.1 ponto -
Galeria De LuquitossML
Lucasmml reagiu a Alexclusive por um tópico no fórum
Até tatuado o maluco é! Ele ta pelado? kkkkkkkkkkkk1 ponto -
Minhas fotografias [iPhone]
Tonynh reagiu a Alexclusive por um tópico no fórum
Trilha de hoje cedo e uma foto com a GoPro:1 ponto -
OTClient\data\images Lá vai ter uma imagem chamada background, ai para Substituir Só você colocar uma imagem no Formato PNG de seu Gosto com o mesmo tamanho da que ta ai e Pronto..1 ponto
-
two headed hunchback of Notre Dame ;D1 ponto
-
Revivendo meu tópico com algo recente desta vez 2 Headed Giant1 ponto
-
Esse cliente abre em outro editor? Já verificou se a opção "extended" está selecionada?1 ponto
-
1 ponto
-
Avatar Jacob Hemphill
DuuhCarvalho reagiu a Tonynh por uma questão
Algo assim? http://i.imgur.com/9Kofqot.png1 ponto -
Avatar Jacob Hemphill
DuuhCarvalho reagiu a Tonynh por uma questão
Bom, como é para o avatar... Fiz exatamente nas dimensões desse seu atual. Uma imagem do tamanho que você pediu provavelmente seria redimensionado, então eu mesmo redimensionei e deixei no tamanho correto =) Saca só a tattoo do rapaz rs http://i.imgur.com/KytDJLY.png Quem sabe uma v2 não te agrada também, só alterei a tipografia. http://i.imgur.com/whKMGab.png1 ponto -
1 ponto
-
ali em "Sha1" Troque por "plain" Faça outra account e veja se ainda ta com o problema?1 ponto
-
Manda o Teu configuration.lua que está em data/lib1 ponto
-
1 ponto
-
[FRANCE] LegerianOT 8.0 Rl Map, 8.5 graphics, custom client. Harsh Anti-Bot (Start May 2, 18:00 CET)
heavy2 reagiu a legerianot por um tópico no fórum
Website: Legerian.net Launch date: May 2, 18:00 CET. (a Friday) LegerianOT is hosted in a dedicated server in France. The performance of the dedicated during beta is low to keep the costs down. The performance will be a lot better a few days before the launch! Also, if you create character during the beta days, it will be deleted before the launch! When the "beta" text in the header is gone, it's safe to create account/character without having them removed.(After April 30) About LegerianOT: The energy building this game have come from anger of botters and how nice it would be if a game could be without them. And without botters, the game doesn't have to be adapted to handling cheating players, etc limitations. If you plan to bot, we advise you to not, you'll only waste your time trying! Thanks to that we keep the game clean, we can reward players with powers as they level up, in another way than tibia.com does! Already at level 70~ here, you'll have the fire-power of a level 100 in tibia.com! Legerian is designed to be a game full of options, and things to do. There's hundreds of quests, and mysteries to explore! There are several areas that you need to get access to before entering, for example Okolnir, or why not Goroma? You can't just go there on demand, you must earn it! The best part, Legerian is certainly NOT a download&run server! Actually even the sources of Legerian is to 70% made by Legerian Staff! We borrowed structure from TFS, a free version that had barely no functions in it. But that's exactly what we wanted! a source that had nothing. A good server isn't made of which one got most fancy functions. A good server is a server that have exactly the amount of fancy stuffs, that's going to be needed! Everything else is just a waste of space and in many cases, waste of CPU. The website of Legerian is too built from scratch by Legerian Staff. And thanks to that both game and website was designed/created by the Legerian Staff, we have the ability to fix and update things exactly like we want, as everything is written in our own code way! So we don't have to waste time researching how things works, we already know every inch of the whole game and website! And we from Legerian Staff, guarantee you a bug-free game environment! if you ever would come across a bug, you'd get rewarded for reporting it! The report system is unique and very easy and cleaver to use! You can see your previous reports on your account login, and you can also see if it have been fixed or not. You find all information you need about reporting things on your account-page. We also guarantee you to keep botters away! If you ever find a botter, don't kill him, report him! We take botter-reports very serious and will deal with that as soon as we see there's an report about it! But we in Legerian Staff hope you'll never have to report a botter, we hope we can keep them away from the game before anyone see them. Game Information: Basic: 8.0 with 8.5 graphics 8.0 Map shape updated to 8.5 graphics spell damages between 7.7 - 8.0 magic level req instead of lvl req on spells No level req on EQ/Weapons 20% exp bonus in shared party exp modern bless system (all bless works like aol) no stamina system for hunting limitations Experience: You gain 1x from all monsters, but you need less experience per level to advance. For example you level 20 times as fast at level 10 than in tibia.com! And at level 50 you'll level 5 times as fast. And at level 100 you'll level 2.5 times as fast! See the unique experience table here. Skills: The skills works in same way as the experience. You'll start with skilling 25 times as fast as tibia.com. And it decrease for every skill. Which means you can get started really fast, but will face the true RPG pretty soon! Magic: The magic works in same way as the experience. Your magic starts at 15 times as fast on tibia.com. And it decrease for every magic level you get. Training Dummies: There's places in the game that offers training in a safe environment. But to being able to train, you must earn training time! You gain training time by being online, and you gain it much faster if you're hunting creatures. So you can't just go to trainers for free and expect getting 100/100 skills with no efforts! Read more about training time and system here. Loot: You'll loot items twice as often than on tibia.com! However you might loot money four times as often! Client: To play Legerian you need the Legerian Client! You find the client at downloads. PVP: You gain redskull when you enter your 4:th frag. A redskull last for 14 days. One frag last for 6 hours. You'll be banished when you reach your 6:th frag. Banishments by killing last for 14 days. Raids: All of the 8.0 raids are in the game. Monsters in raids may drop some rares that normal creatures doesn't. For example, Amazon set. The raids happens in their real locations, so for example Ferumbras will spawn on his own island, in his own tower. Creature behaviour: Monsters doesn't use melee if they're fleeing, and you are able to lure them into corners. Also if you reach a fleeing monster, it will stop for a moment, just as in tibia.com! Vocations notice: Paladins are supposed to use arrows/bolts. Knights are supposed to use UH runes. Supply notice: Runes/Potions are stackable. When picking up items, they will auto-stack in your backpack. Houses: You can view all houses on the website. You buy them in the website and you'll gain access to the house with 10 minutes! Game Guarantee: We garantuee a bug-free ingame environment and in case one would be found, you will be rewarded for reporting it. Host: LegerianOT is hosted in a dedicated server in France. The uptime is 24/71 ponto -
Pokemon Take Down World
gabrielbsales reagiu a leonardo0202 por um tópico no fórum
Venho apresentar alguns sistemas de Take Down World. Para correção de Bugs. O server está instavel mas vamos realizar mais testes. Podem entrar: http://takedown.servegame.com http://takedown.forumeiros.com http://takedownbr.webnode.com Sistema de Moves Em Take Down World os treinadores podem escolher os golpes de seus pokemons. São 4 Golpes básicos, que já estão inseridos em todos os pokemons, 7 golpes para adicionar, 1 golpe para TM e a Habilidade. Os 4 Golpes básicos são padrão de todos os pokemons do Server, são utilizados para upar, pois muitos pokes ganham golpes em leveis altos, dificultando o Up. Após upar o level necessário para usar o golpe, seu char vai receber um item, com esse item pode adicionar esse MOVE ao Pokémon. Há a possibilidade de comprar no mercado com NPCs os golpes por 100 dollars. Após inserir o golpe, ele vai estar na sua barra de atalhos. Há um item para verificar os golpes que o Pokémon pode aprender. Há também o campo de TMs, que segue a mesma regra, só que é com os itens TM. Após inserido. Tanto os golpes quanto os TMs são listados pelo item CELULAR, que já é entregue ao player quando inicia a sua jornada. As habilidades são RANDOMICAS, os pokemons aprendem cerca de 60 tipos diferentes e existem as passivas e ativas. EV's System + Vitaminas São Pontos adquiridos pelo esforço por upar em determinado respaw por muito tempo. Eles são representados por cartões, cada um representa um atributo, que melhora conforme for utilizando. Sp. Ataque Sp. Defesa Defesa Ataque Speed HP A pergunta é: Como conseguir esses EVs? Eles são itens dropados de pokes de ultima forma e só podem ser utilizados em pokes de ultima forma. Os EVs melhoram os atributos básicos do Pokémon ATK, Sp. ATK, DEF, SPEED, HP... A imagem mostra a Dex do Pokémon e do seu SP.ATK antes do IV de Sp.ATK: Agora na imagem a seguir mostra após o uso do item: Melhorou 1 ponto, isso ocorre sempre que utilizar um EV. Pode ser utilizado 500 EVs em cada Pokémon! Egg System Existe o Day Care, um local onde podemos deixar os pokemons para uparem e gerarem Eggs. Para gerar Eggs é necessário que os pokemons compartilhem pelo menos 1 tipo de egg Group, podemos verificar isso na PokeDex. Se forem compatíveis e ficarem as 24 horas em seu Day Care é possível gerar Eggs. Para chocar o Egg é necessário Stones. Após utilizar algumas Stones o seu Egg vai nascer e gerar um Pokémon com NATURE + IVS + Golpes novos (Se der sorte). Nature – Uma característica nova que somente os eggs possuem, ela define um atributo forte e um atributo fraco – O Forte recebe bônus de +50% e o fraco de -50%. Golpes – Os eggs ainda podem vir com golpes que somente eles possuem. IVs – Pontos Extras que o poke recebe, sendo randômicos de 1 até 250 (Sendo o speed até 80). Hold Itens Os hold são itens equipáveis que você pode usar em duelos e hunts. Cada hold tem sua própria habilidade especial, depois que se usa uma hold em um Pokémon você só pode usar de novo outra hold, após 3 minutos, e o efeito dela dura alguns segundos, lembrando que alguns holds fogem dessa regra. São aproximadamente 30 HOLDs com habilidades diferentes. Temos 16 Hold Itens, em forma de Gems que agem em diferenciados tipos de Pokémon: Melhora o sp. ataque dos pokemons. Temos também alguns Hold Itens de formas variadas que agem de diferentes formas: Como conseguir Hold Itens? Muito fácil, o NPC Josh disponibiliza missões que como recompensa vem as Holds Itens. Atenciosamente, Equipe Take Down World - Lock1 ponto -
E evitaria de dar aquele bug das valkries de carlin sumirem se descerem muito1 ponto
-
Contagem Regressiva
Hudsin reagiu a ferreira998 por uma questão
A própria contagem teda a resposta erá só clicar em cima. Link: contagem regressiva grátis para seu site1 ponto -
Otimização do servidor
gabisaoo reagiu a Fir3element por uma questão
na teoria, criar spawns gigantes pois iria diminuir o tamanho dos arquivos1 ponto -
Abre o Remeres Map Editor, Vá em "File/preferences/Client Version", e Desmarque, o "Check File Signatures", e Marque a opção 8.54 e procure o client, logo após salve e feche, e abra o remeres pela sua pasta world, e talvez peça o client denovo, ai vc acha e já era.... RECOMENDO USAR: RME 1.1.10 E não esquece do items.otb e items.xml na pasta do Remeres, "C: / ArquivosDeProgramas / RemeresMapEditor / data / 854"1 ponto
-
[Encerrado] Onde encontro vps por 25,00 ?
VitinhoBright reagiu a grilado13 por um tópico no fórum
Não testei, não me pergunte se é confiável, não me pergunte se é bom. Apenas achei com esse preço R$ 19 ~~> http://www.hostinger.com.br/hospedagem-vps R$ 30 ~~> http://vpsbrasil.com/?id=vpslinux R$ 35 ~~> http://www.########.com.br/semidedicado.php R$ 40 ~~> http://dedicadosbr.com/vps-windows-para-jogos-online/1 ponto -
items.xml
Lalaloopsy reagiu a EdMignari por um tópico no fórum
A mensagem informa qual é o erro. Até mesmo a linha onde o erro se encontra.1 ponto -
1 ponto
-
@Junior Uma coisa que aprendi aqui no XTIBIA: "Ao invés de dar o peixe, ensine a pescar". Você entregou uma configuração pronta para ele sem ao menos, dizer as alterações, muito menos o que significa as alterações. -- As alterações foram: 1. sqlType = "mysql" PARA -> sqlType = "sqlite" 2. encryptionType = "sha1" PARA -> encryptionType = "plain" 1. Mudou do banco de dados mysql(web) para banco de dados sqlite(local/na sua maquina) 2. Mudou o tipo de armazenamento das senhas das contas. sha1 é mais seguro do que plain. OBS: Tente mudar isso aqui ip = "Seu ip" para ip = "localhost" Abraços1 ponto
-
Logo para time
Omega reagiu a Pokerangers por uma questão
Galera, não vão brigar, por favor! Quanto mais logos variados, melhor, eu gostei deste. Se quiserem fazer outro logo, eu estou disposto a aceitar, e ficarei muito grato por toda a atenção e ajuda que estão me dando, de verdade, obrigado. Só peço que não briguem, Novas propostas são sempre bem vindas!1 ponto -
Quanto flood. Os dois estão reportados, se querem brigar, vão brigar fora do tópico do amigo .. E HeelSpy, quando for criticar, critique algo construtivo que ajude os usuários a avançarem...1 ponto
-
[Arquivado]VictorWEBMaster
VictorWEBMaster reagiu a coriel por um tópico no fórum
Sinceramente, esse cara é muuuito foda! Todo probleminha que aparece no meu site, não necessariamente só no site, ele consegue resolver o meu problema! O cara é simples e humilde pra caraaalho! Eu o promoveria com certeza! Att1 ponto -
1 ponto
-
[GESIOR] VictorWEBMaster 2019v
VictorWEBMaster reagiu a Alexclusive por um tópico no fórum
Amigo, crie um tópico com sua duvida na seção: Pedidos e dúvidas - Websites. Este tópico é para resolver/reportar coisas relacionadas ao Website em si. Na seção certa vão te atender melhor.1 ponto -
[Pedido]Como Pegar o dat/spr da PXG
AnjoCelestial reagiu a Wend ll por uma questão
Está sim é de Abril Agora *--*1 ponto -
Basta arrastar os arquivos para dentro do programa. Se arquivos .obd, arraste para lista de objetos. Se for arquivos de imagem, arraste para lista de sprites.1 ponto
-
Ok, qualquer dúvida mande private. Abraços. [Reportado á moderação - pedido/duvida sanada]1 ponto
-
Edo Tensei Nto Ultimate
erenking123 reagiu a Mateusoo por um tópico no fórum
Baixei o seu servidor aqui, e estou testando, achei um problema aqui, vou resolver e posto o script quando estiver 100% no seu servidor. Abraços. ~Edit Então cara, testei aqui no seu servidor e deu certo, POREM não consegui fazer pra poder ter varios summons a depender do level da pessoa, depois vou estudar um pouco esse caso e ver se consigo arrumar isso, então eu defini para o player ter no maximo 3 summons do edotensei, você pode mudar no script a qualquer hora, vou postar o script pronto e você testa ai amanha, eu já testei aqui no seu servidor e funcionou, segue o script: --Edo Tensei System - By: Mateuso --Table config deve conter o ID do corpo e o nome do monstro que será sumonado a partir daquele corpo --[idcorpse] = {monster = "Nome do Monstro com a primeira letra MAIUSCULA"} local config = { [2806] = {monster = "Sasuke"}, [5984] = {monster = "Rat"} } local maxedo = 3 --Aqui você coloca o maximo de summons do Edo Tensei por player. local vocations = {1,2,3,4}--Tabela com vocações permitidas --Aqui deve conter todos os ids dos corpses que estão configurados na table config / EXTREMAMENTE NECESSARIO local listcorpses = {2806, 5984} function onUse(cid, item, fromPosition, itemEx, toPosition) if(isInArray(listcorpses, itemEx.itemid)) then --Verifica se o corpse está na lista de corpses local vocation = getPlayerVocation(cid)--Obtem a vocação do player if(isInArray(vocations, vocation)) then--Verifica se o player tem vocação para usar local monster = config[itemEx.itemid].monster --Indica o nome do monstro que será sumonado local plevel = getPlayerLevel(cid) --Verifica o level de player local summoncount = getSummonCount(cid) --Verifica a quantidade de summons que o player possui print(summoncount) print(plevel) if(summoncount < maxedo) then --Se a quantidade de summons do player for menor que a quantidade maxima if(doPlayerRemoveItem(cid, item.itemid, 1)) then --Se for removido 1 ITEM de fazer o Edo Tensei doConvinceCreature(cid, doCreateMonster(monster, toPosition)) --Cria a criatura e transforma ela em summon do player doRemoveItem(itemEx.uid) --Remove o corpse da criatura do chão doSendMagicEffect(toPosition, 4) --Manda um efeito sobre o corpse doCreatureSay(cid, "EDO TENSEI", 19) --O player fala o texto end else--Se a quantidade de summons for maior ou igual ao maximo doPlayerSendTextMessage(cid,22,"Você não consegue ter mais summons.")--Diz que player não pode ter mais summons end else doPlayerSendTextMessage(cid,22,"Você não possui vocação para usar o Edo Tensei.")--Diz que player não tem vocação para usar end end end --Function getSummonCount(cid) By: Mateuso --Função que obtem a quantidade de summons que o player possui function getSummonCount(cid) local array = getCreatureSummons(cid) local count = 0 for _ in pairs(array) do count = count + 1 end return count end Testa ai e me diz, amanha aguardo noticias. Grande abraço e boa sorte. Se te ajudei, manda um REP+ ai.1 ponto -
Atualizações || Sky's Heart
LucaSAyreeS reagiu a akira021 por um tópico no fórum
Nesse tópico será postada todas as atualizações e novidades do projeto, assim todos poderão acompanhar a evolução do Sky's Heart. Atualização: 13/02/2014 (Quinta-Feira) - Sistema de Atributos. Sistema de Atributos: Atualização 15/02/2014 (Sábado) - Descrição das Classes. Classes e Evoluções: Atualização 17/02/2014 (Segunda-Feira) - Monstros Versão 1.0 Show off Sprites - Versão 1.0 Atualização 19/02/2014 (Quarta-Feira) - Monstros Versão 1.1 Show off Sprites - Versão 1.1 Estas são as ultimas atualizações do projeto, assim que possível irei postar detalhes dos demais sistemas, espero que gostem... Atenciosamente Akira, Obrigado. Adicionado a descrição de todas as classes, assim como suas evoluções. Logo irei postar mais fotos e videos, aguardem.1 ponto -
BrenoNeto ShowOFF
BrenoNeto reagiu a Wingardium por um tópico no fórum
mediano ASEOIUHEASIUOHEASOIHU1 ponto -
10.37 Melhor RL Map Baseado 1.0! NEW Roshamuul, novas missões e correção de erros! Open-source!
LiloBambam reagiu a 99bd81ay2q por um tópico no fórum
O seu pessoal continua logando pelo ip do no-ip e voce usa 127.0.0.1 no ipchanger e não esquece de liberar a porta 7171 do firewall.1 ponto -
System Item Summon.
Killua reagiu a DuuhCarvalho por um tópico no fórum
O system item summon funciona assim: Ao dar use em 'X' item, no caso eu use o item : , Você summona uma criatura aleatoriamente. E ao dar use Novamente você remove a criatura . vá em data / actions / scripts... Crie um arquivo.lua e cole isso dentro : local monsters = {"Demon", "Rat", "Orc", "Medusa", "Dragon", "Ferumbras"} -- todos os monsters que podem ser summonados. local time = 1 -- tempo em minutos para usar o item novamente. local storage = 10923 -- storage qualquer, que não esteja em uso. function onUse(cid, Item, fromPosition, itemEx, toPosition) local pos = getCreaturePosition(cid) local summon = getCreatureSummons(cid) if (table.maxn(summon) < 1) then if getPlayerStorageValue(cid, storage) - os.time() <= 0 then local mst = monsters[math.random(#monsters)] doConvinceCreature(cid, doCreateMonster(monsters[math.random(#monsters)], pos)) doPlayerSendTextMessage(cid, 22, "Você summonou uma Criatura!") setPlayerStorageValue(cid, storage, os.time() + time*60) for _, pid in ipairs (getCreatureSummons(cid)) do doSendMagicEffect(getCreaturePosition(pid), 15) doCreatureSay(pid, "Vou Te Ajudar", TALKTYPE_ORANGE_1) end else doPlayerSendCancel(cid, "Você só pode usar esse item a cada "..time.." Minuto(s).") end elseif (table.maxn(summon) > 0) then for _, pid in ipairs(getCreatureSummons(cid)) do doCreatureSay(pid, "Tchau", TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(pid), 2) doRemoveCreature(pid) end doPlayerSendTextMessage(cid, 22, "Você Removeu A Criatura.") end return true end obs: tudo que você deve configurar , está explicado no script. Agora vá em data / actions / actions.xml... e coloque a tag : <action itemid="4870" script="Nome do Arquivo.lua" /> -- itemid = Id do item, no caso ta o item que mostrei no inicio. Demonstração em Imagens : Simples, porém útil . Sem sono e no tédio saiu isso Abraços.1 ponto -
[Tutorial] Outline
PsyMcKenzie reagiu a Madarada por um tópico no fórum
Olá Xtibianos,meu nick é Madarada e hoje venho lhes trazer um tutorial básico de spriting.Pretendo elevar o nível de nossos spriters e por isso todos os meus tutoriais serão minuciosamente detalhados do começo ao fim.Algumas pessoas podem achar este tutorial desnecessário e muito simples,porém vamos lembrar que muitos membros estão iniciando e não sabem por onde começar então vamos engatinhando até aprender a andar e talvez até correr. Enjoy. Antes de começarmos quero deixar claro que : Neste primeiro tutorial iremos abordar um assunto muito importante que se chama outline.Futuramente virão tutorias de outline de monstros,armas,cenários mais por enquanto apenas humanóide. - Outline - (humanóide) # Outline o que é ? Outline do inglês (linha de fora) é o contorno do sprite l - Criando uma base - Primeiramente devemos localizar e abrir o Ms paint do windows,ele será nossa ferramente principal e nós ajudará em nossa jornada. - Antes de começarmos devemos habilitar nosso abiguinho "miniatura" ele fica no canto superior como na imagem abaixo.Com ele habilitado podemos usar a lupa em resolução máxima e ter uma visão de como está ficando nosso sprite: - Em seguida selecione uma sprite para usar como base,eu uso o citizen por ser bem simples contudo,algumas pessoas preferem fazer uma outline do zero o que eu acho que para um iniciante um tanto avançado.Seguindo o exemplo do citizen pinte o todo de vermelho (por ser uma cor bem saturada para diferir da roupa do citizen) porém, sem atingir as linhas principais que separam as pernas,cabeça,braço e olhos como no exemplo: - Feito isso contorne as linhas as principais de preto (são as linhas contornadas de verde) para limpar o sprite.Pinte a parte interna da arte de branco como no exemplo. ll - Aprimorando sua base - Agora temos nossa base,porém ela ainda é um citizen então iremos criar o nosso próprio personagem.Para isso precisamos nos basear em alguma imagem (se você tem o dom de desenhar pode criar uma roupa para sua base e pular esta parte).Vamos nos fixar em fazer os detalhes mais básicos,por isso eu peguei está de um camponês medieval bem simples: - Como próximo passo iremos analisar a roupa do campones e tentar reproduzi-la em nossa base.Para facilitar iremos copiar a imagem do campones para dentro do paint e coloca-lo de canto,dessa maneira podemos observar a todo instante se a reprodução da imagem está correta: - Iremos começar pelo cabelo,essa parte pode ser fácil falando,mais deve ser feita com atenção para um bom resultado mais tarde.Primeiramente iremos selecionar a cor azul e fazer um rabiscado de cabelo caindo sobre os ombros,aos poucos vamos adaptando ele á cabeça e criando forma. - Na sequência,devemos tirar a margem de erro melhorando o cabelo e arredondando-o de uma maneira coerente à nossa imagem.Os pixels vermelhos devem ser removidos e pintados de branco,e os pixels verdes devem ser adicionados e pintado de azul.Segue abaixo um ilustrativo: - Após feito isso devemos colorir a margem de preto para tornar o cabelo parte da outline.Em rosa estáo os pontos aonde devem ser adicionado os pixels preto: - Com o cabelo terminado agora iremos direto para a cota de malha e mangás da roupa. De início iremos fazer uma blusa na parte superior do corpo. - Com a primeira parte da cota de malha pronta seguiremos para a segunda parte.Vamos começar fazendo pequenas alças nos extremos da blusa,cor cinza para podermos diferir as partes da malha.Aos poucos vamos prenchendo e seguindo com uma gola V. - Finalizando iremos terminar a calça e a bota.Fazendo um traçado curvado vamos dando forma á bota e dividindo a calça. - Por fim adicionamos detalhes na bota dando um pouco de volume e melhorando sua aparência lll - Detalhes Finais - Usando o conta gotas conseguimos pegar o tom da cor exata da roupa do camponês - Finalmente está pronto nossa primeira outline de humanóide Esse foi o #l tutorial básico de spriting (outline) Se gostou da um rep ae tio Até mais próximo tutorial #ll tutorial básico de spriting (perspectiva) Este tutorial foi feito por Madarada Postado em 14.03.20141 ponto -
[Arquivado]Pokémon Universe Online - Um novo Universo está por Vir !
teziik reagiu a pedrowarlock por um tópico no fórum
Namoral cara. Nao e' zuando seu projeto, mas deu uma vontade de rir disso http://imageshack.us/a/img547/2797/qhbp.png1 ponto