Ir para conteúdo

Ryukiimaru

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Ryukiimaru deu reputação a ryel em Projeto RPG Server (Forgotten Realms) TFS 1.2   
    Esse é o projeto "Forgotten Realms Chronicles"

    Esse projeto de Alternative Tibia Server tem a proposta aproximar a variedade do RPG tradicional – Pathfinder RPG e Dungeons and Dragons - e outras mecânicas de jogos como: Albion Online, Tree of Saviors, Elder Scroll: Skyrim, entre outros, no cenário do Tibia. Introduzindo novos elementos para a ampliação de objetivos e que cative os jogadores a sempre interagir com o universo e mercado do jogo. Elementos esses: Variedades de classes e diversas jogabilidades, amplo sistema de craft e recursos, Aprimoramento e encantamento de equipamentos, implementação de profissões, sistema de reinos, control points e hierarquia, bônus diferente para outfits e montarias, valorização das casas, sistema de sleeping, e adicionando, editando e retirando monstros e itens para se encaixar melhor em um universo de RPG fantasia.
     
    28+ Vocações para buildar
    12 Profissões para se especializar
    50+ Recursos para construir itens
    120+ Armas para aprimorar
    50+ Tipos de Armaduras e escudos
    10+ Níveis de Aprimoramentos
    50+ Encantamentos diferentes
    Novos Itens, Monstros, Magias...
     
    Attributes System
    Craft System
    Kingdoms System
    Imbuiment System
    Mining, Chopping, Skinning
     
     
    Pontos de Atributos
    Os atributos irão definir os pontos de vida, mana, defesa, dano e outros aspectos e skills do personagem. Dando uma liberdade maior para cada jogador montar a build do jeito que desejar.
     
    Força, Destreza, Constituição, Inteligencia, Sabedoria e Carisma
     
     
    Class Tree
    As classes serão a base dos atributos iniciais, proficiência em armas, armaduras e magias.  
     
    Classes Iniciais:
    Essas são as quatro classes bases do jogo que irão ditar o estilo e a progressão das promoções.

    Scoundrel Warrior Acolyte Magician  
    Classes Básicas: 
    As classes básicas dividem em dois estilos de jogos distintos da classe inicial, onde define a proposta do personagem.   

    Mercenary Swashbucker Figher Scout Occultist Theologian Wizard Sorcerer  
    Classes Avançadas:
    As Avançadas servem para variar e misturar estilos de jogos, ou manter o mesmo estilo da classe anterior.

    Rogue Ranger Fencer Knight Adept Crusader Battle Mage Shooter Diabolist Cleric Arcanist    
    Classes Especializadas:
    É a progressão final do personagem e onde especializará por completo o estilo de jogo, equipamentos e magias usadas. Suas classes anteriores têm bastante influência sobre a final.

    Assassin Shadowdancer Slayer Duelist Barbarian Guardian Crossbowman Arcane Archer EldritchKnight DemoniacApostle Hell Knight Paladin Inquisitor Mystic Theurge Warlock    
    Profissões
    As profissões servem para definir a facilidade de cada personagem tem para treinar uma skill e a capacidade de poder trabalhar certos materiais.

    Bowyer Laborer Runemaster Weaponsmith Blacksmith Trapper Alchemist Carpenter Armorsmith Cooker Enchanter Tailor  
     
    Todos que quiserem contribuir com ideias, sprites, scripts ou até sugestão para histórias e quests, são muito bem vindos!
     
    O foco do projeto é implementar a diversidade e a interação do mundo 
    de RPG e fazer com que os jogadores se prendam
    aos milhares de objetivos e possibilidades.
     
    Preciso de uma equipe para concretizar perfeitamente esse projeto. Scripters, Programadores, Mappers, Sprinters, Designers, Roteiristas, Moderadores, Tutores e Idealizadores. Todos são bem vindos para fazer parte de Forgotten 
     
    Contato
    Discord:  ryel #7226
    Whatsapp: 13 98875-2287
     
  2. Curtir
    Ryukiimaru deu reputação a Cat em Vamos melhorar o TK!   
    Acho essa discussão muito importante. Mas pra não falar a mesma coisa, vou deixar uma virgula sobre esse assunto para alimentar o debate: Temos aqui uma staff cheia de membros que acessam o fórum diariamente (alguns nem isso) mas não tiram tempo para comentar em 1 tópico. Entendo que todos tem vida fora daqui, mas se cada um de nós comentar em 3 tópicos por dia, a comunidade já vai melhorar pra caramba!
     
    O que custa incentivar os membros que estão participando? Ali na seção de debates por exemplo, todos os dias tem membros publicando ideias de projetos, imagens para show off do que estão produzindo, fora outros conteúdos. Eu já vi tópicos ali com conteúdo bacana que nenhum membro respondeu, o pior é que muitos da própria staff visualizam o tópico e nem comentam. Tem membros que desistem de criar tópicos na seção e me procuram por PM pra pedir minha opinião sobre o projeto, mesmo eu respondendo no tópico deles, podem checar minha imbox.
     
    Não quero tornar pessoal essa crítica à equipe do Tk mas acredito que quem faz isso deveria se tocar, por que estar na equipe, ao meu ver, é ter como obrigação comentar nos tópicos e incentivar os membros. Também acredito que não adianta nada reclamar que os membros estão sendo leechers sendo que esse exemplo não está sendo mostrado, afinal se ninguém comenta em um tópico que tem como objetivo debater, mostrar algum conteúdo ou até mesmo disponibilizá-lo, é claro que a galera vai sair do fórum e entrar apenas pra pegar conteúdo, repito, esse exemplo tem que partir de quem está mais próximo do fórum, a staff.
     
    Sei que to repetindo staff staff staff staff e é até chato, mas eu lembro quando entrei como Suporter no Tk anos atrás, tinha uma seção da equipe com vários guias de como agir em cada cargo, e eu lembro de ler um conteúdo que dizia que os membros da equipe devem comentar, reputar e participar dos tópicos diários ativamente.
     
    Não tem o que comentar? Elogie, reflita sobre o conteúdo e de alguma sugestão construtiva, sempre tem algo que pode ser comentado em todo lugar.
     
    Quero parabenizar o @KotZletY por tomar a iniciativa e fazer essa chamada à comunidade e ás suas demais ações como coord, continue assim bro!
    Também ao @Matk por atender ao meu pedido para ajudar na pág. do tibiaking
     
    E também ao apoio da equipe em geral e dos mappers com o evento Mapper King, ta sendo divertido fazer os mapas haha
     
  3. Obrigado
    Ryukiimaru deu reputação a KotZletY em Vamos melhorar o TK!   
    Hello membros do Tibia King, vocês puderam notar que recentemente tivemos algumas melhorias em nossa comunidade, como por exemplo o nossa nova seção de Classificados, um novo visual para o site, entre outras novidades que vocês podem conferir clicando aqui. Aah! Vale lembrar também que está acontecendo neste momento o evento "Mapper King" organizado pelo membro @Daniel, participe e acompanhe clicando aqui.
     
    Neste tópico gostaria de abordar um assunto importantíssimo a respeito de nossa comunidade: a participação vocês na comunidade! Ou seja, alguns dos membros da comunidade ajudam aos outros, postam conteúdos e contribuem bastante. assim como eu, mas como todos, também tenho minhas ocupações, projetos pessoais e o mais importante, vida pessoal. 
     
    Por isso digo que é essencial o agradecimento e a retribuição de todos que usufruem de tudo que nossa comunidade oferece, mas eu vejo que muitos esquecem de fazer isso, agem como "leechers", apenas sugam o conteúdo e até mesmo pedem ajuda em nossas seções de suporte, é ajudado pelos membros do fórum e nem se quer agradecem pela atenção.
     

     
    O reconhecimento é muito gratificante, as vezes receber um simples "obrigado" já é muita coisa, isso incentiva que as pessoas continuarem ajudando, publicando e criando novos conteúdos para todos. Tente também contribuir com a comunidade, as vezes alguém está com um problema que você já resolveu alguma vez ou até mesmo você já sabe a solução, não custa nada ajudar e compartilhar o seu conhecimento!
     
    Então é isso galera, vamos tentar sempre evoluir e fazer com que essa comunidade maravilhosa seja ainda melhor. Nós da equipe do TK continuaremos fazendo nossa parte, ajudando sempre da melhor maneira. Vale lembrar que estamos com novas ideias para valorizar ainda mais os membros que são realmente ativos, portanto aguardem que novidades surgirão! 
    E você? O que acha, concorda ou descorda? Deixe sua opinião aqui e vamos juntos em busca de uma comunidade melhor!
  4. Gostei
    Ryukiimaru deu reputação a Ryzor em Metamétodos   
    Metamétodos

    Bem, talvez não seja útil a todos (ou apenas não vejam a utilidade disso no começo), mas como já tinha feito um tutorial de POO em lua decidi me aprofundar mais e entrar em um assunto que não tem muita gente que sabe, ter um conhecimento intermediário sobre POO ajuda a aprender isso (saber usar a função setmetatable também), mas apenas um complementa o outro como veremos logo a seguir.


    Porque aprender ?

    Se eu dissesse que isso é necessário para programar eu estaria mentindo, mas pode acabar sendo útil, quem sabe para complementar o conhecimento de POO, mas é como eu já disse no outro tópico, aprende quem quiser.
    Metamétodos


    Metamétodos são (obviamente) associados a metatabelas, esses "métodos" são basicamente os eventos que ocorrem quando Lua (a linguagem) executa algumas operações: subtração, divisão, comparações, concatenações etc. É o que chamam em algumas linguagens de sobrecarregar operador (basicamente é a mesma coisa), cada evento tem um nome, adição é "add", exponenciação é "pow", concatenação é "concat", mais a frente eu cito todos e suas funções. Um exemplo, que caso você já saiba POO já deve ter visto é esse:



    Classe = {} function Classe:new() return setmetatable({}, { __index = self }) end Esse __index, já se perguntou o que ele faz ali ? Ele é um metamétodo também, ele simplesmente mostra que é para procurar indices(seja métodos, atributos, oque for) na tabela self (ou seja, nela mesma), e é por isso que quando você cria uma classe você consegue usar os métodos (não confunda com metamétodos), atributos dela. O 2º parametro da função setmetatable é uma tabela de metamétodos. Exemplo: metatable = {} function String(s) return setmetatable({ value = s or '' }, metatable) end function metatable.__add(a, b) return String(a.value .. b.value) end Veja que eu adicionei o metamétodo __add que se refere ao operador matemático de adição, com esse método você pode fazer isso (a seguir), tente executar e veja o resultado: s = String('Hello') print("Valor de 's' é: " .. s.value) m = s + String(' World') print("Soma de duas Strings: " .. m.value) Agora apague tudo e tente dessa maneira sem o metamétodo: metatable = {} function String(s) return setmetatable({ value = s or '' }, metatable) end s = String('Hello') print("Valor de 's' é: " .. s.value) m = s + String(' World') print("Soma de duas Strings: " .. m.value) Vai resultar em um erro. A partir disso você pode criar muitas coisas ! o exemplo acima (o que funciona) também pode ser escrito dessa maneira: function String(s) return setmetatable({ value = s or '' }, { __add = function(a,b) return String(a.value .. b.value) end }) end s = String('Hello') print("Valor de 's' é: " .. s.value) m = s + String(' World') print("Soma de duas Strings: " .. m.value) Eu pulei linha ali no setmetatable apenas pra ficar mais organizado e de fácil entendimento, não que seja necessário. Basicamente, metamétodos são os métodos que fazem operações em metatabelas lua, agora veja o mesmo exemplo acima mas sem o metamétodo: String = {} function String:new(s) return setmetatable({ value = s or '' }, { __index = self }) end function String:add(s) self.value = self.value .. s.value return self.value end s = String:new('Hello') print("Valor de 's' é: " .. s.value) m = s:add(String:new(' World')) print("Soma de duas Strings: " .. m) O uso ficaria um pouco mais complicado e não daria a liberdade de você fazer isso (em negrito): s = String('Hello') print("Valor de 's' é: " .. s.value) m = s + String(' World') + String(' and ') + String('Universe') print("Soma de quatro Strings: " .. m.value) Soma de quatro objetos String ao mesmo tempo (em negrito) --- A tabela com os metamétodos, toma-se class1 como um objeto de uma classe qualquer e class2 como um outro objeto da mesma classe de class1, ou numero, ou string, ou tabela, ou userdata, ou thread ou qualquer outro tipo de dado lua: As cores não estão ali a toa, Função/Nome = o nome e função do metamétodo; Uso = Como se deve usar; Parâmetros = Quais parâmetros o metamétodo possui; Exemplo = Exemplo de quando o metamétodo irá acontecer. Você pode encontrar todas os metamétodos junto a um exemplo nesse link http://www.lua.org/manual/5.1/pt/manual.html#2.8, mas vou citar alguns exemplos: TV = {} function TV:new(marca, polegadas) return setmetatable({ marca = marca or '', polegadas = polegadas or '' }, { __add = function (tv, n) -- Metamétodo de adição if (type(n) == 'number') then return TV:new(tv.marca, tv.polegadas + n) else return TV:new(tv.marca, tv.polegadas + n.polegadas) end end, __mul = function (tv, n) -- Metamétodo de multiplicação return TV:new(tv.marca, tv.polegadas * n) end, __eq = function (tv1, tv2) -- Metamétodo de igualdade if (tv1.marca == tv2.marca and tv1.polegadas == tv2.polegadas) then return true end return false end }) end tv1 = TV:new("LG", 21) tv2 = TV:new("Philips", 19) tv1 = tv1 + 4 -- Adiciono 3 a tv1 print(tv1.polegadas) -- tv1 fica com 25 polegadas tv2 = tv1 + tv2 -- Adiciono as polegadas da tv1 na tv2 print(tv2.polegadas) tv1 = tv1 * 2 -- Multiplico as polegadas da tv1 por 2 print(tv1.polegadas) if (tv1 == tv2) then print('tv1 é igual a tv2 !') else print('tv1 não é igual a tv2') end tv1 = tv2 -- Agora tv1 é igual a tv2 if (tv1 == tv2) then print('tv1 é igual a tv2 !') else print('tv1 não é igual a tv2') end O exemplo é ruim eu sei, mas to sem criatividade D: Explicação detalhada: Agora uma explicação passo a passo de um metamétodo, vou aproveitar o da TV: __add = function (tv, n) -- Metamétodo de adição if (type(n) == 'number') then return TV:new(tv.marca, tv.polegadas + n) else return TV:new(tv.marca, tv.polegadas + n.polegadas) end end e uma soma qualquer: tv1 = tv1 + 4





    O metamétodo tem 2 parametros, tv e n (você pode escolher o nome que quiser), tv e n referem-se a tv1 e 4 na soma respectivamente, ou seja, o __add (linha 1) vai verificar se o n é um numero (linha 2) e caso for ele vai retornar outro objeto da classe TV , com a mesma marca da tv mas com as polegadas somadas ao numero n (linha 3) , mas caso não for um numero (linha 4) vai manter a marca da tv e somar as polegadas da tv e da TV n (linha 5) . Novamente, as cores (e o negrito) não estão ali a toa.

    Bem é um pouco complicadinho, mas todos (a maioria) dos metamétodos seguem esse mesmo padrão de 2 parametros, ai facilita um pouco

    ---


    Espero que alguém tenha compreendido, tentei ser o mais claro possível, caso contrario eu refaço as partes que estão complicadas,
    Qualquer dúvida, sugestão, critica, só postar !
    Quem quiser pode me enviar sugestões de temas para tutoriais sobre scripting e programação, algum assunto que não entendeu, que não viu no forum ou que faltou algo mais detalhado.




    Creditos


    Lwkass
  5. Obrigado
    Ryukiimaru deu reputação a Ryzor em POO em Lua   
    POO – Programação Orientada a Objeto
    (em Lua)

    Sei que tem muita gente querendo aprender ou com dúvida sobre POO, para quem programa em lua para otservers casualmente vai ser estranho e talvez até desnecessário, mas pra quem quer se tornar um futuro programador ou até mesmo acumular mais conhecimento, é mais do que necessário !


    Porque Aprender ?

    Certo, você aprende o que é POO, sabe aplicar sem dificuldades em lua, mas e ai... onde usar ? Bem, isso depende muito do que você quer, em lua, ao contrário de algumas linguagens, não é necessário saber POO para se programar, mas nada impede de você usá-lo e tornar seu código mais bonito, organizado e de fácil manutenção (Que são algumas das características da POO), resumindo, aprende quem quiser.

    Nota Importante: A POO em lua não é realmente POO - mas, como assim ? - Lua não é naturalmente Orientada a Objetos, porque se caso fosse você já saberia. Em Lua é feita uma "simulação" usando meta tabelas - Mas, OMG, como assim ? meta tabelas ? - calma, calma, isso eu já explico vamos por partes.



    Classe

    Definição: Classe é onde fica armazenado atributos, métodos, é onde tudo acontece na Orientação a Objetos.
    Pense em classe como se fosse uma receita, algo que armazena todas as informações como se fosse uma ficha técnica, trazendo mais para a realidade, pense em classe como nós, seres humanos ou um computador, uma televisão, uma cama, um instrumento musical, cada um tem suas informações próprias e ações próprias.



    Exemplo:

    Código:

    Classe TV Informações/Atributos: Polegadas: 29 Marca: Philips Canal: 31 Ligada: Sim Volume: 35% Ações/Métodos: Ligar Desligar Mudar de Canal Diminuir Volume Aumentar Volume Entendeu ? Isso seria uma ficha técnica de alguma televisão qualquer, e quais ações essa determinada televisão possui, onde informações é a mesma coisa que atributos na POO e métodos é a mesma coisa que ações. Agora vamos trabalhar nessa classe... Vamos começar a escrevê-la usando Lua: Código: TV = {} function TV:new() return setmetatable({}, { __index = self }) end Nota: Explicarei com mais detalhes sobre a função setmetatable() e seus usos em outro tutorial(eu acho), por enquanto use-a dessa maneira Agora é o momento que você olha isso e pergunta - Mas, porque essa tabela ai no começo ? porque usar dois-pontos ? porque new ? Como dito anteriormente, Lua é uma simulação de POO, ou seja, você não vai programar exatamente dessa maneira caso fosse programar em Java, C++, Ruby ou qualquer outra linguagem OO. Mas explicando o porque de cada um: Código: TV = {} Basicamente, essa tabela é onde irá ficar armazenada as informações da classe. Código: function TV:new() return setmetatable({}, { __index = self }) end Entenda TV:new como sendo Classe:método, onde TV é a nossa classe e new é o nosso método e nosso construtor, esse método é o primeiro a ser chamado, é ele que vai construir nossa classe (por isso que se chama construtor).
    Atributo Atributo são as características, as informações de um determinado objeto (não pense em objeto como um computador ou uma mesa, mas sim como qualquer coisa, até seres vivos). Exemplo: Como dito anteriormente, nossa classe possui esses atributos: Código: Polegadas: 29 Marca: Philips Canal: 31 Ligada: Sim Volume: 35% Agora vamos tentar passá-las a lua e adicionar na classe: Código: TV = {} function TV:new(marca, polegadas) return setmetatable({ ligada = true, polegadas = polegadas, volume = 5, canal = 31, marca = marca}, { __index = self }) end Certo, definimos os atributos e quais que queremos que possam ser modificados de começo, agora mais uma explicação aprofundada parte-a-parte: Código: function TV:new(marca, polegadas) return setmetatable({ligada = true, polegadas = polegadas, volume = 5, canal = 31, marca = marca}, { __index = self }) end Onde está colorido possui o mesmo valor, ou seja, se você definir posteriormente marca como LG, ficará: Código: marca = "LG" Para adicionar mais atributos, é só adicionar mais um parâmetro na função (se necessário) e adicionar mais um item na tabela, sendo que o "nome" pode ser qualquer coisa, não precisa necessariamente ser o mesmo nome do atributo, por exemplo, poderia ser assim ao invés do exemplo acima: Código: function TV:new(marca, polegadas) return setmetatable({lig = true, poleg = polegadas, vol = 5, cal = 31,mc = marca}, { __index = self }) end Única coisa que mudaria, seria que ao invés de ser "marca" seria "mc". Lembrando que todos os atributos poderão ser chamados depois. Métodos Métodos são as ações (como dito anteriormente) que podem ser feitas pelo objeto e também são os métodos que automatizam algumas coisas na classe. Exemplo: Como dito anteriormente, a classe possui esses métodos: Código: Ligar Desligar Mudar de Canal Diminuir Volume Aumentar Volume Vamos adicioná-las na classe sem colocar instrução dentro por enquanto: Código: TV = {} function TV:new(marca, polegadas) return setmetatable({ligada = true, polegadas = polegadas, volume = 5, canal = 31, marca = marca}, { __index = self }) end function TV:Ligar() -- Ligar a TV end function TV:Desligar() -- Desligar a TV end function TV:setCanal() -- Mudar de Canal end function TV:setVolume() -- Definir Volume end Porque eu coloquei apenas “setVolume()” ao invés de 2 métodos, um para aumentar e outro para abaixar ? Deixando dessa maneira você pode fazer as duas coisas em um método só ! Agora como cada um é um método da classe, é só adicionar a instrução de cada um: Método TV:setCanal() por exemplo: Código: function TV:setCanal(novocanal) -- Mudar de Canal self.canal = novocanal end TV:setCanal é uma função como qualquer outra, ele tem que simplesmente trocar o canal da televisão. Mas ai você pergunta – e esse "self" ai ? Da onde ele vem ? O que ele é ? - Simples, self se refere a nossa classe (self traduzido, seria algo como "eu", "próprio"), o self seria uma forma de se referir a classe, acessar os atributos e usá-los. Lembre-se, como o self se refere a própria classe, você só pode utilizá-lo em métodos de classe ! Simplificando, usando palavras e cores, o que a função vai fazer é acessar o atributo canal da classe e definir seu valor para o mesmo valor de novocanal E Você pode usar o self tanto para acessar atributos quanto para criar novos a partir de métodos, Simples não ? Depois de definir a instrução de todos os métodos, a classe ficou dessa maneira: Código: TV = {} function TV:new(marca, polegadas) return setmetatable({ligada = true, polegadas = polegadas, volume = 5, canal = 31, marca = marca}, { __index = self }) end function TV:Ligar() -- Ligar a TV self.ligada = true end function TV:Desligar() -- Desligar a TV self.ligada = false end function TV:setCanal(novocanal) -- Mudar de Canal self.canal = novocanal end function TV:setVolume(novovolume) -- Definir Volume self.volume = novovolume end Agora vamos testá-la ! Essa parte fica a seu critério de como fazer o teste, a classe pode estar tanto no mesmo arquivo quanto em outro (ai é necessário chamar usando a função dofile()) O teste é simples, vai ser criado uma nova TV e definida a uma variavel, em seguida será exibido as informações da TV depois modificadas e exibidas novamente: Código: TV = {} function TV:new(marca, polegadas) return setmetatable({ligada = true, polegadas = polegadas, volume = 5, canal = 31, marca = marca}, { __index = self }) end function TV:Ligar() -- Ligar a TV self.ligada = true end function TV:Desligar() -- Desligar a TV self.ligada = false end function TV:setCanal(novocanal) -- Mudar de Canal self.canal = novocanal end function TV:setVolume(novovolume) -- Definir Volume self.volume = novovolume end ---- minhatv = TV:new("LG", 29) -- Aqui eu defino que minha marca é LG e polegadas é 29 print("Minha Televisão é da marca " .. minhatv.marca .. ", possui " .. minhatv.polegadas .. " polegadas, está no canal " .. minhatv.canal .. " e volume " .. minhatv.volume .. "%") minhatv:setCanal(73) -- Mudo o canal para 73 minhatv:setVolume(40) -- Mudo o volume para 40 print("Agora minha TV está no canal " .. minhatv.canal .. " e o volume está em " .. minhatv.volume .. "%") minhatv:setVolume(10) -- Mudo o volume para 10 print("Agora minha TV está no canal " .. minhatv.canal .. " e o volume está em " .. minhatv.volume .. "%") minhatv:Desligar() -- Desligo a tv (mesma coisa que minhatv.ligada = false) if (not minhatv.ligada) then -- Se não estiver ligada print("A TV foi desligada") end


    Muito simples, não ?


    Qualquer dúvida ou sugestão sobre o tutorial é só dizer
    Espero ter sido o mais claro possível

    Creditos
    Lwkass

  6. Gostei
    Ryukiimaru recebeu reputação de KotZletY em [SHOW OFF] Elder Tale Online   
  7. Gostei
    Ryukiimaru recebeu reputação de KotZletY em [SHOW OFF] Elder Tale Online   
  8. Gostei
    Ryukiimaru recebeu reputação de KotZletY em [SHOW OFF] Elder Tale Online   
    E ae pessoas, venho apresentar aqui o projeto Elder Tale Online, que como base principal terá o anime Log Horizon.
     
     
    Pagina: facebook.com/ElderTaleOnline
    Youtube: https://www.youtube.com/channel/UCO_dna2DQWkbCAT3gSr5kBA
  9. Gostei
    Ryukiimaru recebeu reputação de DarkWore em [SHOW OFF] Elder Tale Online   
    E ae pessoas, venho apresentar aqui o projeto Elder Tale Online, que como base principal terá o anime Log Horizon.
     
     
    Pagina: facebook.com/ElderTaleOnline
    Youtube: https://www.youtube.com/channel/UCO_dna2DQWkbCAT3gSr5kBA
  10. Curtir
    Ryukiimaru recebeu reputação de Guivalladao em [SHOW OFF] Elder Tale Online   
    E ae pessoas, venho apresentar aqui o projeto Elder Tale Online, que como base principal terá o anime Log Horizon.
     
     
    Pagina: facebook.com/ElderTaleOnline
    Youtube: https://www.youtube.com/channel/UCO_dna2DQWkbCAT3gSr5kBA
  11. Gostei
    Ryukiimaru recebeu reputação de Chriistian em [SHOW OFF] Elder Tale Online   
  12. Gostei
    Ryukiimaru recebeu reputação de Chriistian em [SHOW OFF] Elder Tale Online   
  13. Gostei
    Ryukiimaru deu reputação a vyctor17 em Lockpick e Fishing OTC   
    Tópico rápido não sei se esta na área errada eu postaria na área de showoff mas não achei, estou trabalhando em um modulo pro Otclient de "lockpick" parecido com de skyrim.
    Embora essa primeira versão esta bem mais simples, basicamente ao usar o "lockpick" em uma Bau ou porta aparece a janela onde você tem que encontrar a posição para o "lockpick" abrir o bau ou porta em questão tentar abrir o bau com a posição errada quebra seu "lockpick". se alguém tiver alguma sugestão principalmente na forma de definir a dificuldade dos baus ou de como a skill de "lockpick" vai alterar a dificuldade pode deixar ai que estou precisando kkk.
     
    Edit: não vou criar outro tópico só pra mostrar isso segue o vídeo aqui a ideia é manter a quadrado verde no peixe para pescar ele a velocidade do peixe e o tamanho do quadrado varia de acordo com a dificuldade do peixe. no caso ali esta bem cru, no caso a barra verde quando chegar no máximo você pegaria o peixe se se deixar ela chegar a 0 você perde o peixe.
     
     
  14. Curtir
    Ryukiimaru deu reputação a Orochi Elf em [Show Off] Pokémon Global (Old Client custom)   
    Fala aí galera, eu gostaria de mostrar a vocês o client do meu servidor. Aqui eu criei algumas aplicações e gostaria da opinião de vocês a respeito.
    Pokémon Global Page
     

     

     

     

     

     

     
     
  15. Curtir
    Ryukiimaru deu reputação a Leohige em The Ruby Server - Base Pokémon TFS 1.2 - 9.80   
    The Ruby Server - Base Pokémon
    Ao olhar as diversas bases que podem ser encontradas aqui no fórum e em outros locais da internet, pude ver que todas elas carecem de qualidade. Todas estas bases são feitas utilizando gambiarras para diversos sistemas funcionarem, e com isso vários problemas surgem, como de sistemas que não funcionam direito, e o mais importante, com um desempenho extremamente baixo, gerando apenas servidores instáveis. Com isso eu decidi que iria começar a desenvolver uma base para servidores relacionados a Pokémon, com dois objetivos. Um dos objetivos é ganhar mais conhecimento em cima da linguagem de programação C++, o outro objetivo é disponibilizar uma base completamente estável, funcional e de fácil configuração e desenvolvimento para servidores de Pokémon, para que mais ótimos trabalhos possam surgir. Este projeto também irá incluir um cliente próprio e estável, junto com um website.
     
    Também planejo criar uma espécie de Wiki para o servidor, cliente e website, com o objetivo de auxiliar quem for desenvolver em cima deste servidor, e também aqueles que pouco entendem do assunto relacionando a criação de escripts, Pokémon, spells e etc.
     
    Alguns poucos sistemas foram implementados no servidor por ora. Sistemas como o de catch e de goback serão implementados mais para frente, quando outros sistemas forem completamente implementados, como o sistema de configuração de Pokeballs, criação de Pokémons e sistema de shinys. Estou visando a qualidade do servidor como um todo, por isso algumas coisas irão demorar para aparecer.

    O sistema de Pokeballs e de criação de Pokémon já está bem encaminhado, e um sistema de gêneros também já está pronto com fácil configuração, onde o spawn destes Pokémon com sexo será por % igual aos jogos da franquia. Um sistema de surgimento de Ditto aleatório já está praticamente implementado, onde um Pokémon aleatório pode ser um Ditto disfarçado.
     
    [+] Informações do Servidor
    Baseado em: TFS 1.3
    Protocolo: 10.98
     
    [+] Informações do Client
    Baseado em: otclient 0.6.6

    [+] Informações do Website
    Baseado em: nenhum
    Desenvolvido em: PHP (por ser o mais comum na comunidade)
     
    Como contribuir?
    Eu gostaria muito que a comunidade ajudasse no desenvolvimento deste projeto, pois o mesmo será disponibilizado para todos, e para contribuir não necessariamente é preciso entender de programação. Você pode também ajudar testando e reportando os bugs encontrados no repositório do projeto no GitHub, assim como com sugestões e ideias de mudança/implementação no servidor através do próprio repositório ou através do Discord, ou ajudar na criação de guias para o website do projeto.
     
    Links
     
    [+] RubyServer - GitHub
    https://github.com/rubyserver/rubyserver
     
    [+] RubyClient - GitHub
    https://github.com/rubyserver/rubyclient
     
    [+] RubyServer - Website
    https://rubyserver.github.io/rubyserver/
     
    [+] RubyServer - Discord
    https://discord.gg/XTrZGpy
     
    Algumas Imagens
     
     
     
     
     
  16. Gostei
    Ryukiimaru deu reputação a esnio12 em Adventurer's World   
    Olá a todos, venho aqui mostrar um novo projeto que estou desenvolvendo com alguns sistemas
    Trata-se de um Projeto RPG Survival/Adventurer, onde o seu esforço será necessário para progredir, O servidor conta com um sistema de SOM feito e disponibilizado para todos pelo vyctor17, apenas peguei o sistema e modifiquei algumas linhas e funções, o projeto ainda está no começo, meu objetivo é tornar o jogo inteiro com som e com RPG, fazendo assim quests que serão fundamentais com som, exemplo: audios pelas cavernas avisando perigo sobre algum boss ou algo do tipo
     
    Aqui está um video de como estão ficando as coisas, só mostrei o basico, ainda irei fazer sistemas de interações com o cenario, no qual magias destruirão o cenario ou modificarão, será um jogo totalmente personalizado por dentro pelos jogadores.
     
     
     
    Antes que me perguntem!
    Sim, será possivel desativar o som, afinal nem todo mundo é acostumado a jogar tibia com som hahaha
    Terá opções de desativar partes do som
    Exemplo: Desativar sómente som dos items, só do ambiente, das criaturas, das magias, etc.
     
    E antes que perguntem, terão sons individuais, que só o propio jogador escutará e terão sons coletivos, que todos na tela escutarão.
    É um projeto que começou dia 11/03/2017
     
     
    Atualizações 17/03/2017 - Interaction System
     
    É um sistema no qual os jogadores poderão interagir com o cenario, destruindo paredes, abrindo passagem secretas, entre outros
     
    Atualizações 23/03/2017 - Foi remodelado as sprites de cenarios, novas sprites de interação de cenario sendo adicionadas, no video abaixo segue uma skill de Barbarian na qual uge um grito afetando os usuarios ao redor com tonturas e dano, também pode ser utilizado no ambiente, PS: A magia do Barbarian ainda não foi implementada o som.
    Atualizações 07/04/2017 - Novos bosses adicionados, sistemas de interações e mudanças de padrões dos bosses com o decorrer dos danos.
    Atualizações 11/04/2017 - Novo Boss Adicionado, modificação de padrões de dano com o decorrer da vida do boss.
    Atualização dia 18/02/2018 - Climatic System
     
  17. Gostei
    Ryukiimaru recebeu reputação de Ayron5 em (Resolvido)Imagem de item servidor/client   
    No modulo do inventário, na função onInventoryChange, faz uma checagem, se o id é o 15589, e então seta uma imagem invés de setar o item.
     
     Nessa checagem, coloca assim, e altera o caminho da imagem.
      if item then
          itemWidget:setStyle('Item')
        if item:getId() == 15589  then
          itemWidget:setImageSource("caminhodaimagem.png")
        else
          itemWidget:setItem(item)
        end
      else
          itemWidget:setStyle(InventorySlotStyles[slot])
          itemWidget:setItem(nil)
      end
  18. Curtir
    Ryukiimaru deu reputação a geraldoo.maranhao em ShowOFF Sprites Harry Potter   
    Sou Designe e com o foco em pixel art
    abaixo alguns de maus trabalhos 
     
    https://www.facebook.com/geraldo.maranhao.3
    whatsapp: 81.9.9783-4652
    Skype: jose.geraldo941
    Discord: Gera#1295






  19. Gostei
    Ryukiimaru deu reputação a Noninhouh em [Tutorial] Ajustando andar diagonal   
    Bom, vou mostrar a vocês como editar o andar diagonal no otclient da maneira que vocês preferirem...
    Atualmente, creio que quando você anda diagonalmente, tem um delay até que você possa andar novamente. Vou ensinar tirar esse delay, e deixar a velocidade ao gosto de vocês.
     
    Em creature.cpp do server, procure pela linha:
    if(std::abs(newPos.x - oldPos.x) >= 1 && std::abs(newPos.y - oldPos.y) >= 1) lastStepCost = 3;  
    Esse lastStepCost será a velocidade que o player terá ao andar diagonalmente, em relação a velocidade de quando ele anda em uma direção reta, por exemplo, um player que demora 1 segundo para andar 1 sqm, demoraria 3 segundos para andar diagonalmente. Edite esse valor ao seu gosto!
     
    Em creature.cpp do client, procure as linhas que tem isso:
    getStepDuration(true) E deixe assim:
    getStepDuration()  
    Agora procure por:
    float factor = 3; if(g_game.getClientVersion() <= 810) factor = 2; Apague essa parte
     
    Logo mais abaixo tem:
    if(!ignoreDiagonal && (m_lastStepDirection == Otc::NorthWest || m_lastStepDirection == Otc::NorthEast || m_lastStepDirection == Otc::SouthWest || m_lastStepDirection == Otc::SouthEast)) interval *= factor; Em factor, deixe o mesmo valor que você deixou em lastStepCost no servidor.
     
    Agora em localplayer.cpp no client, novamente procure por:
    getStepDuration(true) E troque por:
    getStepDuration()  
    Pronto, seu personagem andará diagonalmente mais suave, e com a velocidade que você escolheu. 
  20. Curtir
    Ryukiimaru deu reputação a Joshuah em Seu Último Trabalho   
    Ainda não terminado (E nem deve ser pois eu raramente faço sprites) essa coisa que é um mix de cavalo dragão galinha.
     

     

     
    Ninguem mais posta aqui ?
  21. Curtir
    Ryukiimaru deu reputação a Nto Wise em Seu Último Trabalho   
    Dicas Para Melhorar?
    Sprite Megumim (KonoSuba)

    obs: ela ta com aparencia mais velha ai.
  22. Curtir
    Ryukiimaru deu reputação a Martim Tiburcio em Seu Último Trabalho   
    Praticando,
     

  23. Curtir
    Ryukiimaru deu reputação a Filipe Carvalho em Remake/Sprites/Pintura   
    Olá amigos, poderiam opinar em que devo melhor em "minhas sprites"? Cor, forma, pintura!




  24. Curtir
    Ryukiimaru deu reputação a santomoklucas em Dream Backpack   
    Historia do item criado por mim um aventureiro Acabou guardando os loots supostamente dropados do boss gaz`Haragoth, A dream matter junto com o olho do sight of Surrender que avia dropado muito antes e botado em sua backpack, e isso acabou fazendo com que sua backpack magicamente fundisse com os tais itens !!
    ++ =
     
    >>>>  <<<<
    espero que gostem e me digam ideias para mais criações :D notas e criticas ?
     
  25. Curtir
    Ryukiimaru deu reputação a Nogard em suporte sprite   
    Então brother, citizen não é uma base muito boa de se mexer, você basicamente pintou por cima e isso dificilmente resultaria em algo bom. É preciso bem mais que isso.
     
    Algo essencial para se fazer sprites é a observação, além da paciência. Procure alguma referência que você ache bacana e tente fazer algo parecido. Com o tempo, você irá entender tudo que precisa e certamente será capaz de criar o que desejar.
     
    Por agora, eu sugiro que você tente entender como usar a iluminação a seu favor, observando sprites já existentes. Tomei a liberdade de fazer uma edição no seu personagem, espero que ajude.
     

Informação Importante

Confirmação de Termo