
Alan12
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Alan12 deu reputação a MaXwEllDeN em Aulas de Scripting LuaQuer aprender a programar em Lua? Sugiro que você comece olhando esses tutoriais escritos por Urso Mock, Suricato Notorious e Raposa Skyen Hasus.
Já leu todas as aulas anteriores e acha que você já está apto a criar seus próprios Scripts? Boa! Agora é hora de por suas habilidades em prática. Leia esses tutoriais:
Outros Tutoriais:
Avançado:
-
Alan12 deu reputação a MaXwEllDeN em [Aula 5] Variáveis e Comentários<< Aula 4 - Operadores e Bibliotecas
Variaveis
Aula 5
Olá, bem-vindos a nossa 5ª aula de scripting. Nesta aula iremos tratar de uma coisa indispensável em todos os scripts: Variáveis. As variáveis podem ser entendidas como uma "caixa"que armazena um valor na memória RAM, ou um substituto de um valor, uma igualdade de um valor, como se ela fosse o valor em si.
Toda variável deve ter um nome definido por você, mas existem regras para definí-los: quando for escolher o nome da variável, não use números no começo e nunca use caracteres especiais, como acentos, sifrões ou asteríscos. Use apenas a-z, A-Z e pode-se usar números também, desde que não estejam no começo da variável. Existem também palavras que são reservadas e não podem ser declaradas como variáveis: (if while true nil for repeat until do break return function false in end else elseif or and). Na maioria das vezes, você deve declarar (Dar um valor) a variável, senão ela retornará nil (Vimos isto na Aula 2).
Vamos ao um exemplo de como declarar uma variável.
numero = 27 Repare, eu criei uma variável chamada numero, e ao mesmo tempo ela vale 27, então quando eu for usa-lá em algum lugar eu posso escrever 27 ou então escrever numero. Vamos ao um exemplo em si:
numero = 27 print(numero) print(27) Veja, eu declarei a nossa variável como 27, em seguida a função print irá mostrar o valor dela no caso 27, e em baixo mostra a você o número 27. Ambos irão mostrar a mesma coisa, pois você declarou que numero é 27. As variáveis podem ser modificadas no decorrer do script como o exemplo:
numero = 10 numero = numero * 3 print(numero) print(10) Nesse caso é diferente, vamos por linhas para ser mais fácil. Em sua primeira linha declaramos que a variável vale 10. Logo na segunda linha redeclaramos a variável como sendonumero igual a numero (seu valor atual) vezes 3. No caso ela vai passar a valer 30, pois 10 * 3 = 30. Na terceira linha o script ira mostrar a você o valor da variável, que nesse caso é 30. Na quarta linha ele irá mostrar 10, sim 10 não é 30, mas nós não declaramos ela como 10? Sim, mas acontece que na segunda linha modificamos seu valor. Apenas para ressaltar vamos falar mais uma vez brevemente o que vimos na aula 2. Os tipos de variáveis. Nossas variáveis podem ser de vários tipos. Como vimos acima se chama number (Número), mas temos tambem:
(Curiosidade: Funções são armazenadas em variáveis!) Bem, em OTServ, quando se declara uma variável, como por exemplo o nome numero em um script x ela acaba sendo chamada de variável global, isso quer dizer que apos executar uma vez o script x, quando se executar o script y e chamar a variável sem ser declarada ela será usada com o valor que foi declarado no script x. Normalmente isso atrapalha muito e ainda consome memória do seu PC, pois a variável fica guardada ocupando memória a toa. Existe um modo de evitar isso, esse modo é declarar a variável como local, que no caso quando o script terminar de executar a variável, ela vai ser deletada e não ficará consumindo memória do seu PC. E isso se faz assim:
local texto = "Ola pessoas." --- ou assim local algo Veja que quando declarada local na 3ª linha eu não coloquei = valor, isso se dá porque você declarou ela como local, mas não declarou valor. So se pode fazer isso quando ela é declarada local, depois você pode colocar o valor que quiser, ela apenas está como local mais ainda é nil. Não se preocupem ainda com variáveis locais e globais. Veremos mais afundo na próxima aula. criar um comentário basta iniciá-lo com --. A cada linha do comentário você deve adicionar mais dois - (menos) assim:
-- Ola gente, eu estou comentando!!!!!! -- que coisa o0 -- uhahuahuahuauhauhahu -- oi? ------- eu posso fazer com mais de um porem o minimo é 2 Quando se inicia um comentário ele fica até o final da linha. Pode se fazer comentários com varias linhas sem ter que ficar adicionando -- toda hora, se faz usando [[, assim:
--[[ ahuahuahuhua eu sei comentar em comentarios ]] --- aqui vai seu script Usa-se muito isso para inserir créditos ou explicar algo, mesmo.
Exercício.
Crie um pequeno script que tenha 3 variáveis, que e o valor de cada uma deve ser modificado de alguma forma e insira comentários em cada linha e no final um comentários com + de uma linha usando [[ ]].
Resposta:
Essa aula foi escrita por um urso gordo Mock, todos os créditos são dele.
Aula 6 - Escopo >> Comentarios Essa parte é simples, ajuda quando se esta fazendo um script, ou quando quer explicar alguma coisa no script para uma pessoa que vai ver. São os comentários. Eles servem apenas para você "falar" ou comentar alguma coisa no script. Elas não influenciam em nada do script (Em sua execução). Para
-
Alan12 deu reputação a MaXwEllDeN em [Aula 3] Primeiros Passos<< Aula 2 - Lógica da programação
Primeiros Passos
Aula 3
Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador.
As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas:
Editores + Interpretadores:
SciTE Scintilla [Avançado] OTScript Live! [Recomendado]
Editores:
Notepad++
Interpretadores:
Lua [Oficial]
Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!.
Testando seus scripts!
No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar.
Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela.
Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script:
print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua... (ou não )
O que o script fez? o0
Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes.
Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções.
O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta.
Strings
As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são:
Apóstrofo: Começa com ' e termina com '.
Aspas: Começa com " e termina com ".
Colchete-Colchete: Começa com [[ e termina com ]].
Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==].
As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro.
Exemplo:
print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number.
"1" << Isto é uma string.
Booleanos
Os booleanos podem assumir apenas dois valores: true e false.
true: Valor verdadeiro.
false: Valor falso.
OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora...
Exemplo:
print(true) print(false) print(nil)
Functions
Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções.
Exemplo:
print(function() end) OBS: Não se preocupe com isso ainda!
Tables ou Arrays
São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice).
Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave).
Exemplo:
print({})
Userdata
Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles.
Nil
Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo.
Exemplo:
print(nil)
As funções retornam!
Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor.
Exemplo: print(type(1))
O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number!
Exercícios:
Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela:
Resposta:
Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
Aula 4 - Operadores e Bibliotecas >> -
Alan12 deu reputação a MaXwEllDeN em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada Linguagem de Programação Imperativa ou Programação Procedural Linguagem de Scripts ou Linguagem de Extensão Pequena, Fácil, Leve e Eficiente " Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer ) Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Download].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Somente dúvidas serão aceitas aqui! Comentários que não forem dúvidas serão apagados e os autores serão reportados!
Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
Aula 2 - Lógica da programação >> Script Live By colex.rar
-
Alan12 deu reputação a pernalongaaa em (Resolvido)[DUVIDA] OLD CLIENT para OTCLIENTtem como sim
aki colocar isso tudo certo
vai na pastar modules dps vai game_things
colocar isso thing.lua
-
Alan12 deu reputação a Thayam em [TUTORIAL] Spriting, por onde começar? (completo)Saudações queridos amigos do TK!
Hoje venho trazer um tutorial mais básico porém muito útil. Vejo que algumas pessoas tem vontade de começar a vida em sprites, porém, ficam meio perdidos a como começar, veem em alguns tópicos agente falar sobre Hue, Dithering, AA e pensam "WTF?!". Então venho aqui hoje tentar explicar um pouco melhor sobre alguns conceitos e programas utilizados para tal ação.
Vamos lá!:
Quero fazer sprites, por onde eu começo?!?!
Pixel art é sobre os pixels – simples assim. Esses tipos compartilham um ponto comum: Ter certeza que o seu foco está nos pixels.
Comece devagar – Quanto mais larga a imagem que você está tentando fazer, mais tempo e trabalho levará pra completá-la. Não faça isso, use um canvas size (largura x altura) pequeno.
Um pixel art pode transmitir uma série de informações pelo seu tamanho, você ficará surpreso com o pouco espaço que você precisa se você controlar os pixels corretamente.
Use uma paleta limitada - Se você não pode fazer um bom sprite com 4 cores, usar 40 não vai ajudar. Usar uma paleta pequena é especialmente bom para iniciantes porque te força a ter foco na posição dos pixels e da relação entre grupos de pixels. A paleta original de 4 cores do GameBoy é uma boa escolha para iniciantes, porque você só precisa se preocupar com o valor, e não tons ou saturação.
Programas
Existe uma gama de bons programas por aí para pixel art, muitos desses são gratuitos. Eu uso Grafx2 porque é gratis, mas GraphicsGale, Pro Motion, Photoshop, Pixen e MS Paint são todos boas escolhas. Alguns são mais amigáveis que outros, por isso que eu escolhi algo com atalhos de teclado como grafx2, o que me salvou de muitas viagens para a barra de ferramentas (e fez muito fácil o manuseio de paletas)
Tipo de arquivo
Um erro comum que os novos pixel artistas cometem é salvar suas artes como JPEG/JPG. Esse tipo de arquivo pode ser legal para outros tipos de imagem, ele causa compressão, o que destrói a qualidade de uma peça de pixel art.
Nunca salve como JPG. Salve como PNG ou GIF. Seja cuidadoso assim mesmo, pois alguns programas (como MS Paint) não suportam propriamente o formato GIF, e vão arruinar sua imagem. Nessas instâncias, você vai precisar de um conversor de arquivo (Como o Giffy) se você quiser salvar sua imagem como GIF.
Mas como eu começo a imagem?
É completamente pessoal. Alguns artistas preferem criar o lineart primeiro, e depois vão adicionando cores:
Outros artistas preferem a definição das formas principais com um pincel grosso, e então continuam refinando a imagem até que ela chegue a um nível certo nível:
Ambos os métodos são legais, todos dependem de como você está confortável, ou as especificidades do projeto. O Linework é um bom método se você está traçando uma imagem digitalizada (como foi o caso do exemplo do monstro do mar acima). Se você está começando a imagem no seu programa, e não é um sprite pequeno, definir as formas com um pincel grosso pode ser mais útil.
Ok, mas o que diabos significa AA, Hue (br?) e os outros termos que são usados?
Ok, acomodem-se em suas cadeiras (ou sofás, para aqueles que gostam de utilizar o computador na sala) e vamos nessa:
Termos que devemos, ou melhor, precisamos saber!
Anti-aliasing (AA):
Anti-aliasing é o método de fazer bordas acentuadas parecerem suaves. Você deve estar familiarizado com anti-aliasing, porque um monte de programas e ferramentas faz isso automaticamente. Quando estamos falando sobre pixel art, de qualquer maneira, anti-aliasing significa anti-aliasing MANUAL. Manual AA significa suavizar as áreas acentuadas por posicionamento manual de pixels de uma diferente cor para facilitar a transição. Aqui vai um exemplo:
Acima você vê a mesma imagem sem AA na esquerda e com AA, na direita.
Há várias armadilhas frequentemente encontradas ao aplicar anti-aliasing, que são discutidas na seção "Coisas para evitar”.
Dithering:
O Dithering consiste de diferentes padrões de pixels. É tipicamente usado para facilitar a transição entre duas cores, sem adição de uma nova cor à paleta. É também usado para criação de textura. Nos dias de monitores CRT, o dithering foi particularmente útil porque a tela borrava a área pontilhada e obscurecia o padrão. Agora que monitores LC nítidos é a norma, os padrões não são mais fáceis de esconder, o que significa que o dithering não é tão versátil como era antes. Mesmo assim, o dithering ainda é usado.
A forma mais comum de dithering que você vê é o 50/50 pontilhado, conhecido como 50% de dithering ou o padrão pontilhado.
Como mostrado no exemplo acima, você pode criar vários outros padrões para amortecer ainda mais entre uma cor e um padrão 50% pontilhado.
Esses padrões são mais fáceis de detectar do que um 50% pontilhado, por isso tenha cuidado!
O Dithering estilizado é outra técnica, e é caracterizada pela adição de pequenos formatos no padrão.
O Dithering interlaçado permite que duas regiões pontilhadas se interlacem. É chamado de dithering interlaçado, pois as duas regiões pontilhadas se interlaçam nas bordas. Esse tipo de dithering permite a você misturar dois pontilhados para formar uma gradiente.
O Dithering aleatório é uma versão menos comum do dithering, e não é geralmente recomendado, pois adiciona ruídos de pixel à imagem. Embora tenha algum uso em doses muito pequenas, o dithering aleatório é algo que muitas vezes você vai querer evitar.
Tão útil como o dithering é, muitas vezes é mal utilizado por artistas inexperientes.
O Dithering ruim será discutido mais adiante na seção “Coisas para evitar.”
Grupos de pixels:
O conjunto de pixels é feito a partir de pixels individuais. No entanto, um único pixel é na maioria das vezes quase inútil e sem sentido se não tocar em pixels da mesma cor.
O pixel artista está preocupado com as formas que ocorrem quando pixels de cores similares tocam a si mesmos e convém uma forma opaca, plana.
A maioria dos triunfos e derrotas possíveis no pixel art ocorrem naquele momento exato em que o artista faz um aglomerado de pixels.
-Helm
Nós falamos muito sobre pixels individuais, mais estes são raramente pixels independentes. Um pixel sozinho, isolado, é um pontinho numa tela – é um ruído. Mas pixels não são normalmente encontrados sozinhos, ao invés disso, eles são encontrados fazendo parte de grupos de pixels – grupos de pixels da mesma cor que juntos formam um campo de cor sólida. Enquanto o pixel isolado é nosso bloco básico de construção e a menor unidade, os grupos de pixels são a unidade a qual muitas de nossas decisões sobre posicionamento de pixels se basearão. E enquanto é importante perceber que pixels individuais não são independentes, também é importante perceber que grupos de pixels não são independentes. Como peças de um quebra-cabeça, as bordas de um grupo de pixels determinam o formato do grupo de pixels que ele faz fronteira.
Aqui vai um exemplo de como interferir no formato de um grupo de pixels pode causar efeitos drásticos nos seus grupos vizinhos:
Enquanto pixels solitários são vistos como ruídos, um pixel solitário de uma cor diferente do campo que toca, se usado como AA, pode ser visto como parte do grupo, e é, portanto, a solução dos problemas:
Bom, vou finalizar o tutorial aqui, já ficou bem grande haha
Espero que eu tenho ajudado vocês a enter um pouco mais sobre Sprites, e ter dado a alguns, um norte para começar
Vamos juntos mobilizar esta seção que ta meio down ultimamente haha
Até a próxima pessoal!
Créditos:
Pixelaria (Tutorial)
Thayam (Trazê-lo ao TK)
Way20 (por indica-lo quando comecei minha jornada)
-
Alan12 deu reputação a Thiago Rulexz em (Resolvido)Conta GOD não entra80% das vezes que isso aconteceu comigo... era de 1 a 2...
1... Ou o teleporte levava para um lugar que não existe...
2... Ou o Lugar onde o teleporte te levou tem algo que não tem no cliente...
Como um chão unico de outro cliente... uma sprite sla '-'
-
Alan12 deu reputação a SoulSarti em Como criar seus proprios MODs para RMEBom, acredito que muitos procurem por MODs para o Remere's para facilitar na hora de criar os mapas. Muitas vezes procuramos pois não sabemos como fazer. Vou explicar aqui, como criar suas proprias extensões para o remere's. Não será nada muito avançado e/ou detalhado, mas com esse tutorial, você conseguirá personalizar seu Remere's sem muita dificuldade.
Toda extensão do RME é feita com XML. A parte mais importante é localizar onde está sua pasta de extensões do RME. Para localizá-la, existem dois meios: O primeiro, se seu RME é antigo (v 2.2 ou mais antiga) então provavelmente a pasta de extensões está na propria pasta do RME. Procure sua pasta do RME, abra-a e procure por extensions. Caso seu RME seja mais novo, então abra seu menu Iniciar do Windows, depois clique em "Computador". Na área do endereço (topo da tela, onde está escrito "Computador") clique, apague tudo, digite %appdata% e aperte Enter. Uma pasta se abrirá, com o endereço de "Disco Local > Usuarios > (Seu usuario) > App Data > Roaming. Caso abra apenas a App Data e não abra o roaming, basta abrir a pasta roaming e proceguir. Nela você encontrará várias outras pastas. Procure então pela pasta Remere's Map Editor. Abra-a. Você verá dois arquivos: data e extensions. Abra o extensions.
Bom, agora a parte chata terminou. Agora começa a parte mais chata ainda hahaha
Vocês notarão que existem vários arquivos XML ai dentro. Copie um, e cole ai mesmo. Renomeio com o nome que quiserem. Abram-no e deletem tudo que há dentro dele. Vou explicar agora como fazer a mágica acontecer.
Todo arquivo de extensão de RME, como eu já disse antes, precisa ser XML. Por sua vez, arquivos XML precisam de um cabeçalho. Para esse tipo de arquivo, nosso cabeçalho será o seguinte:
<materialsextension name="extensions by jeff" author="Jeff" description="extensions compilation" client="8.60"> entendendo:
name = nome da sua extensão (não use nomes repetidos, por favor xD)
author = autor da extensão (puro blábláblá)
description = descrição da extensão (mais blábláblá)
client = versões do mapa que a extensão vai "rodar" (Importante: Se você, por exemplo, colocar client version 8.6 e colocar um item de versão maior que 8.6 o rme vai bugar quando você tentar abrir um mapa de versão 8.6)
note que, todos os valores devem ser postos entre " " .
Ok, cabeçalho feito, agora vem a parte chata hahaha
Existem 4 tipos de brush: Terrains (pisos/paredes), Doodads (variedades), Items (items, tipo items, saca?) e Creatures (monstros e npcs).
Por agora, ensinarei apenas como adicionar Terrains e Doodads. Os items e Creatures são fáceis, dá pra aprender sozinho só de ver esse tutorial e ver alguma extension de items ou creatures.
Vamos lá. Para criar um Doodad:
Existem 2 tipos de 'tags' para criar um Doodad. O primeiro, deve ser os detalhes sobre o item e como ele vai ser posto no mapa via RME. Seria como um script .lua . O segundo é literalmente a tag que vai registrar aquele item/brush no remeres, como a tag de um arquivo .lua
<brush name="Lamps" type="doodad" server_lookid="4404" draggable="true" on_blocking="true" thickness="10/10"> <item id="4404" chance="30"/> </brush> name = Nome da brush. No exemplo, é Lamps.
type = aqui é o tipo da brush/item. Acho que não preciso aprofundar aqui, por enquanto.
server_lookid = aqui é como se fosse um looktype. É o look da brush que aparecerá no RME. Use sempre um id que seja sugestivo para a brush. (Seria estranho utilizar o id de uma sword para uma brush que vai colocar grama '-' )
draggable = pra ser sincero, não sei bem pra que serve. geralmente deixo "true" e pronto. hahaha
on_blocking = No remere's, esse item bloqueia a passagem? (É sempre útil saber onde o player pode passar ou não, logo não seja negligente nessa parte e.e' )
thickness = "frequência" na qual o item aparecerá. Quando você pega aquelas small rocks, se você amplia o tamanho da brush, você nota que há alguns espaços vazios. Isso é um exemplo de thickness. Quanto menor a divisão, menos items são randomizados na brush. (Não tenho certeza absoluta se é isso mesmo, mas creio que seja algo parecido)
item id e chance = Aqui você põe os id's que você quer e a chance dele aparecer na brush. Nessa brush, coloquei apenas o id 4404 (lamp). Caso queiram adicionar mais items, apenas copiem e colem essa tag e ponham entre o <brush name ...> e o </brush>. Caso queiram mudar o item utilizando o botão z ou x no rme, utilizem a seguinte tag: <alternate> <item id="ID" chance="CHANCE"/> </alternate>
O chance=" " é a chance do item aparecer. Caso usem o <alternate> </alternate> essa chance será ignorada, até porque o item só mudará caso voce aperte x ou z. Se não usarem o <alternate>, os items que você colocar lá serão postos de acordo com a chance deles e de acordo com o thickness da brush.
Lembram do 2º tipo de tag que precisamos colocar, para registrar no RME? então. Este tipo de tag deve ficar no final do arquivo. Aqui você vai registrar TODAS as tags para aquele tipo de brush. Para os doodads, a tag fica assim: <tileset name="Jeff Nature Extensions"> <doodad> <brush name="Lamps"/> </doodad> </tileset> name = Aqui você põe o nome da "pasta" de doodads. Se você colocar um nome 'aleatório', o rme criará aquela pasta e colocará as brush's nela (recomendo, pois assim você separa suas brush's das brush's "custom" e das criadas por outras pessoas). Se você por o nome de uma já existente, então aquelas brush's irão para a pasta já existente.
brush name = Aqui você põe o nome da brush. Lembram, que a minha era "Lamps"? Então, aqui deve ser o mesmo nome. Tipo, DEVE MEEESMO. Caso ponham outro nome, seu rme vai bugar e n vai abrir as brush's editadas. e.e' Caso queiram adicionar mais brush's para uma mesma pasta, basta colocarem-nas entre o <doodad> e o </doodad>.
Agora, para criar uma brush do tipo terrain, seja ela uma parede ou um piso:
<brush name="bamboo wall" type="wall" server_lookid="3424"> <wall type="horizontal"> <item id="3424" chance="500"/> <item id="3426" chance="100"/> <item id="3432" chance="100"/> </wall> <wall type="vertical"> <item id="3423" chance="400"/> <item id="3428" chance="100"/> <item id="3430" chance="100"/> </wall> <wall type="corner"> <item id="3427" chance="1000"/> </wall> <wall type="pole"> <item id="3425" chance="1000"/> </wall> </brush> Bom, aqui vou ser mais breve.
type = Aqui você põe o tipo da brush. Se for uma parede, então ponha wall. Se for piso, a tag muda, vou mostrar depois.
Note aqui que, para cada <wall type e o </wall>, a tag é diferente. Recomendo sempre manter essa estrutura.
Explicando:
Horizontal = Horizontal Hahahaha (Ids da parede que são > - )
Vertical = Vertical e.e' (Ids da parede que são > | )
Corner = Não sei traduzir isso ao pé da letra, mas é aquela parede que é > _| (e.e')
Pole = Pole Dance Aquela parede em forma de "pino".
Aqui eu recomendo que vocês deixem as chances nesse mesmo "nivel". Não precisa ficar arrumando muito...
Para registrar uma parede, você deve fazer o seguinte:
Ponha isso no final do arquivo:
<tileset name="Jeff Walls/Terrains"> <terrain> <brush name="bamboo wall"/> </terrain> </tileset> Mesmo "esquema" dos doodads, mudando apenas o <doodad> </doodad> por <terrain> </terrain>
Para criar um piso (não ensinarei a por bordas nele, até pra incentivar o uso das bordas pelo raw e evitar o uso do auto-border.)
Vamos lá: a Primeira "tag" é:
<brush name="Dark Common Old Pavement" type="ground" server_lookid="10492" z-order="3401"> <item id="10492" chance="25"/> <item id="10493" chance="25"/> <item id="10494" chance="25"/> <item id="10495" chance="25"/> <item id="10496" chance="25"/> <item id="10497" chance="25"/> <item id="10498" chance="25"/> </brush> Notem que o type aqui é ground e existe aquele z-order. Não faço ideia do que o z-order faça, então recomendo que procurem depois (eu também procurarei, hahahahaha)
os ids do piso devem estar entre os <brush name...> e o </brush> como em todos os outros modelos e o chance também é editável. Caso queiram que um id de piso apareça mais que o outro, ponha o chance dele maior e do outro menor.
A tag para registrar um piso é:
<tileset name="Nome da pasta"> <terrain> <brush name="Dark Common Old Pavement"/> </terrain> </tileset> Mesmo esquema de todas as outras, se quiser registrar mais pisos, apenas ponham suas tags entre o <terrain> e </terrain>
É isso ai. Espero que tenha ajudado um pouco quem não manjava. Desculpem pela falta de paciência no fim do tutorial e por n ter colocado mais cores e tals. Mas espero que tenham entendido tudo. Qualquer erro, duvida ou sugestão, postem aqui. xD
-
Alan12 deu reputação a Guilherme. em Adicionando novas Sprites no TibiaOlá Kingtibianos,
Galera eu vi que tinha muita gente querendo saber como colocar novos sprites no servidor, até achei alguns tutoriais mas não tinham imagens e eram muito vagos, então resolvi montar esse bem explicado e com imagens para facilitar o entendimento de vocês.
Inicio:
- Neste tutorial, você irá aprender como extrair, modificar e comilar o arquivo Tibia.spr.
• Vamos trocar esse sprite -
• Por esse -
1º Passo - Donwload e Instalação;
- Após baixar o SprEditor extraia ele para uma pasta a sua escolha .
- Após extrair vá na pasta do seu Tibia e copie o arquivo Tibia.spr para a mesma pasta onde esta o SprEditor.
2º Passo - Conhecendo o programa;
- Para extrair as imagens do arquivo Tibia.spr clique em "Extract" e para compilar as imagens *.Bmp para *.Spr clique em "Compile";
3º Passo - Extraindo;
- No programa clique em "Extract"
- Agora note q foi criada uma pasta chamada "Sprites" contendo todas as imagens.
4º Passo - Imagens e suas Propriedades;
- Para mudar as imagens abra a pasta "Sprites" e note que as imagens são todas 32x32 e tem extenção *.Bmp.
- A cor rosa nas imagens indica transparência.
- Agora mude a imagen sem ultrapassar o limite de tamanho (32x32).
- Depois de mudar e salvar as imagens que voce quiser vamos para o quinto passo;
5º Passo - Compilando;
- Agora va no programa e clique em "Compile" e espere o processo terminar.
- Perceba que ja esta sendo criado um arquivo chamado "MyTibia.spr"
Pronto agora voce ja tem seu Tibia.spr editado e compilado pronto para usar!
:great:
PS: Comentem e digam o que acharam!
-
Alan12 deu reputação a igorsantana12 em Pokémon Centurion V8.1 Editado Por By:Dudummc<p>Quero Saber se Todo Sistema de cath ta concertado! Se sim EU editarei o Centurion Para POstar Um Com Sistemas inovados e Um client Novo Para os Povão!</p>