Ir para conteúdo
Banner com Efeitos

Lexir

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Lexir deu reputação a Snowsz em Creature Information Offset   
    Faz tempo que não posto nada, então deu vontade, tava brincando um pouco ai fiz esse sisteminha básico.
     
    • Gifs
     
    Nesse primeiro Gif, ao trocar a direção da Outfit, o nome e as barras de informações como Health, Mana, mudam de posição, isso é bom para ajustar as Outfits de acordo com o seu tamanho, como o Demon, ficar com as informações logo em cima da cabeça, ou Hydra, todos estão com o local padrão.

     
    Aqui era como as informações ficavam com essa Outfit originalmente, no padrão de sempre dos clients.

     
     
    Comparativo em imagem estática:
     
    Tibia Outfit antes e depois:

     
    Aqui estão algumas outfits que meu primo @Fae1z fez, apliquei o sistema de offset nelas, uma do Graves, uma do Ekko, ambos são personagens do game League of Legends, e uma baseada Uganda Knuckle:
     
    Ekko antes:

     
    Ekko depois:

     
    Graves antes e depois:

     
    Uganda Knuckle antes e depois:

     
    Aqui eu estava brincando de por as informações da Outfit de anão de modo drogado kkk.

     
     
    • Código
     
    Em Creature.h modifique nesta linha:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags)  
    Embaixo de:
     
    std::string getName() { return m_name; } Adicione:
     
    Point getInformationOffset() { return m_informationOffset; } void setInformationOffset(int x, int y) { m_informationOffset.x = x; m_informationOffset.y = y; }  
    Embaixo de:
    Position m_oldPosition; Adicione:
     
    Point m_informationOffset;  
     
    Agora, em Creature.cpp procure por:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags) Sim, isso está repetido, é assim mesmo, o processo é necessário em Creature.h e Creature.cpp, nessa função a variável point tem seu tipo alterado de Const para normal.
     
    Ainda em Creature.cpp procure por:
    if(!useGray) fillColor = m_informationColor; Pule duas linhas e adicione:
    point.x += m_informationOffset.x; point.y += m_informationOffset.y;  
    Agora, em Luafunctions.cpp procure por:
    g_lua.bindClassMemberFunction<Creature>("jump", &Creature::jump); Embaixo adicione:
    g_lua.bindClassMemberFunction<Creature>("setInformationOffset", &Creature::setInformationOffset); g_lua.bindClassMemberFunction<Creature>("getInformationOffset", &Creature::getInformationOffset);  
    A parte da source é só isso.
     
    Foi criada uma variável do tipo Point na classe Creature, que pode armazenar dois valores do tipo Int, sendo eles X & Y, assim detendo uma posição de offset, para ajustar a posição das informações(Health Bar, Mana Bar e Name) da criatura, essa variável é usada na função Creature::drawInformation, onde ocorre todo o desenho de informações das criaturas, lá o offset criado altera a posição de um Point usado como posição base das informações, alterando esse Point todo o resto segue aquela posição,  você pode setar o offset diretamente na criatura, as funções podem ser usadas tanto na source usando C++ quanto nos scripts usando Lua, em Lua o uso das funções é o seguinte:
     
    Essa função retorna uma tabela com X & Y, algo como "table = {x = 10, y = 20}", são as posições do offset.
    Creature:getInformationOffset() Exemplo de uso:
     
    local Offset = Creature:getInformationOffset() print(Offset.x) print(Offset.y) Isso vai printar no client_terminal do OTClient os valores de X & Y.
     
    Enquanto esta altera as posições usando os valores X & Y.
    Creature:setInformationOffset(x, y) Exemplo:
    Creature:setInformationOffset(10, -5)  
    Essa configuração de offset vai aumentar X em 10 Pixels e diminuir Y em 5 Pixels, no meu primeiro gif, na direção Sul do Char, eu usei X diminuindo 13 Pixels e Y diminuindo 8 Pixels, algo como isso:
    Creature:setInformationOffset(-13, -8)  
     
    Para tudo isso funcionar igual os gifs acima eu fiz um módulo especial, onde dependendo da Outfit e da direção que a criatura está olhando, ele vai alterar o offset de acordo.
     
    Para criar o módulo, siga estes passos:
     
    Na pasta do OTClient em modules/ crie uma pasta chamada game_creatureinformation, dentro crie um arquivo com o mesmo nome e a extensão .otmod, algo como "game_creatureinformation.otmod", o conteúdo do arquivo é este:
    Module name: game_creatureinformation description: Changes the position of the informations point to correctly draw names and creature bars. author: Snowsz website: tibiaking.com autoload: true reloadable: true sandboxed: true version: 1.0 scripts: [ game_creatureinformation ] @onLoad: init() @onUnload: terminate()  
    Crie um arquivo com o mesmo nome e a extensão .lua, algo como "game_creatureinformation.lua", o conteúdo do arquivo é este:
    --[[ Directions: North /\ East > South \/ West < Structure: [OutfitID] = { [Direction] = {x = OFFSETX, y = OFFSETY}, } ]] --Lista de offsets para cada Outfit. local OutfitOffsets = { [143] = { --Outfit do primeiro gif [North] = {x = -13, y = -8}, [East] = {x = -17, y = -8}, [South] = {x = -13, y = -8}, [West] = {x = -15, y = -8}, }, [160] = { --Outfit de anão com o nome full drogado. [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = -13, y = -80}, [West] = {x = 0, y = 0}, } } local function translateDir(dir) if dir == NorthEast or dir == SouthEast then return East elseif dir == NorthWest or dir == SouthWest then return West end return dir end local function getOutfitInformationOffset(outfit, dir) if OutfitOffsets[outfit] then return OutfitOffsets[outfit][translateDir(dir)] end return {x = 0, y = 0} end local function onCreatureAppear(creature) local Offset = getOutfitInformationOffset(creature:getOutfit().type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureDirectionChange(creature, oldDirection, newDirection) local Offset = getOutfitInformationOffset(creature:getOutfit().type, newDirection) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureOutfitChange(creature, newOutfit, oldOutfit) local Offset = getOutfitInformationOffset(newOutfit.type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end function init() connect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) connect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end function terminate() disconnect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) disconnect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end  
    A parte do módulo está finalizada, o que resta agora é configurar as Outfits na tabela com seus determinados Offsets, e não se preocupe, se a outfit não estiver configurada, ela vai seguir o padrão normal, o módulo só altera algo quando determinada Outfit está configurada.
     
    Para configurar o módulo é simples, basta seguir o padrão:
    [ID DA OUTFIT AQUI] = { [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = 0, y = 0}, [West] = {x = -0, y = 0}, }, Nos primeiros colchetes coloque o ID da sua Outfit para ter o offset modificado, os colchetes restantes são as direções, não é necessário mexer neles, dentro de cada índice da tabela tem os offsets X & Y, basta modificar o valor de acordo, sendo ele positivo ou negativo. NÃO SE ESQUEÇA DA VÍRGULA NO FINAL "},".
  2. Curtir
    Lexir deu reputação a Cat em Comprar e vender Bases OTserve é proibido ??   
    Mas agora vamos falar sobre o sistema.
     
    O Tibia King permite que você apareça em uma plataforma em destaque no menu classificados, oferecendo seus "serviços". Depois que você consegue o contato do cliente interessado, fora dó fórum você vende o que quiser meu amigo. Quase todo mundo ganha, Inclusive o site que diz que apoia uma coisa mas faz outra.
     
    Ou seja, o Tibia King diz que você não pode vender MAPA nem DATAPACK. Mas permite você aparecer em destaque anunciando que faz serviços de DATAPACK e MAPA. ÓBVIO que não é a mesma coisa que vender um produto, mas convenhamos que é a mesma coisa. As pessoas estão parando de desenvolver coisas, pra anunciar seus "SERVIÇOS", pra dai então desenvolver coisas, só que pra vender.
     
     
  3. Gostei
    Lexir deu reputação a Storm em Adicionar Cooldown na spell   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, 98) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) setConditionFormula(condition, -0.90, 0, -0.90, 0) setCombatCondition(combat, condition) local time = 2.0 -- Tempo de exhaustion local storage = 45674 -- não mecha function onCastSpell(cid, var) if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "You are exhauted.") doSendMagicEffect(getCreaturePosition(cid), 2) return false end if(not doCombat(cid, combat, var)) then return false end doSendMagicEffect(getThingPosition(cid), 91) exhaustion.set(cid, storage, time) return true end  
  4. Gostei
    Lexir deu reputação a Bruxo Ots em Quem vende servidor Global 10.x - 11.xx ?   
    De coração mesmo cara.
    Não compre, vão te vender gato por lebre.
     
    E oque ta rolando hoje em dia, o cara até pode não te roubar e passar a parada, mais sempre vai ter alguma coisa a mais pra te deixar de cabelo em pé.
     
    Pega algum dos que ja tem aqui e vai corrigindo você mesmo os erros...
    Contrata programadores, scripters, vai sair mais barato do que comprar um cheio de bug.
  5. Gostei
    Lexir deu reputação a Frenesy em [OTClient] TibiaGun 1.0   
    Veja o gráfico (Clique para aumentar).
    No final haverá o que ainda preciso para deixar o servidor online.
     

     
    Algumas imagens In-Game:
    Clique para aumentar a imagem.
     
     
  6. Gostei
    Lexir deu reputação a Nogard em Free for use!   
  7. Gostei
    Lexir deu reputação a Storm em Duvida Rapida   
    Source é todo o codigo fonte de seu trabalho/projeto, é lá onde fica todos os codigos utilizados para executar uma ação/função . Para isso se deve compilar a source , e essa compilação resulta no arquivo .exe que você liga o seu servidor.
  8. Gostei
    Lexir deu reputação a Zazeros em Diferenças de TFS   
    @Lexir Obrigado pela correção amigo.
    Se acha que não muda a versão 0.4?
  9. Gostei
    Lexir deu reputação a Storm em Diferenças de TFS   
  10. Gostei
    Lexir deu reputação a Heartless em Projeto Colaborativo Servidor de RPG Interpretativo   
    Salvê á toda comunidade!!!
     
    Bom, eu sou o Iago mais conhecido como Heartless, tenho 25 anos, sou casado, formado em Artes Visuais Multimídia e curioso no mundo dos Servidores de Tibia desde meados de 2008~09...
    Assim como muitos de vocês eu já abri vários servidores,  porém como todos sabem os que vingaram era os 999x.. Baiak... Full Global... servidores que agradavam apenas o público, ou por ser fácil de upar, ou pela galera já conhecer o a b c, do server.
    Porém com as novas versões do Tibia o jogo vem "perdendo público" mas, se você reparar bem, a cada versão mais e mais elementos RPG são inclusos no jogo como itens, cenário, criaturas, coisas que com um pouco de criatividade pode gerar um game divertido e diferenciado.
    Venho aqui colocar uma sementinha na cabeça de quem gosta de RPG de Mesa para desenvolvermos de forma colaborativa um Servidor de Tibia voltado para o RPG interpretativo.
    Como sei que a cena do RPG é fraca, proponho desenvolvermos o servidor sem pressão, sistema por sistema para vermos no que dá!
    O que eu proponho é "desconstruir" a jogabilidade convencional do Tibia em que pra você ser mais forte basta matar muita criatura hostil e treinar 100 horas batendo em uma criatura e pronto.
    Eu sei que muitos não irão gostar desta proposta porém creio que assim como eu muita gente sente falta de um RPG de Mesa.
    O que é RPG
    RPG é a sigla inglesa de Role-Playing Game, que em português significa "jogo de interpretação de personagens", é um gênero de videogames.
    Consiste em um tipo de jogo no qual os jogadores desempenham o papel de um personagem em um cenário fictício. É um jogo diferente dos convencionais, pois não há ganhadores nem perdedores.

    O Importante no Jogo RPG é a Reputação do seu Personagem perante os demais Jogadores, exemplo: você sempre está na cidade principal protegendo-a das Invasões constantes e os demais jogadores o reconhecem por isto, por ser um guerrreiro que prefere ficar na cidade conversando e Protegendo os mais fracos - muito provavelmente este jogador será convidado para entrar para a Guarda Real da Cidade dos Humanos, esta por sua vez igualmente constituída e organizada apenas por Jogadores!
     
    Os jogos RPG estimulam a imaginação e o raciocínio lógico, desenvolvem a criatividade, o relacionamento interpessoal e a cooperação mútua.
    Cada jogo, também chamado de “sessão” ou “aventura”, terá o enredo definido pelo jogador, mediante um determinado sistema, isto é, um conjunto de regras definidas para cada personagem. A decisão de cada um influenciará no destino do jogo.

    Os jogadores poderão montar suas próprias Facções desde que respeitem os Limites do Jogo, as Sessões ou Aventuras citadas serão uma espécie de "Quest-Evento" que acontecem no horário de Pico de Jogadores Online onde uma Mensagem será erradiada para todo o servidor, exemplo:
    "As Harpias sobrevoam a cidade de Zharkia carregando em suas garras uma criança de Colo! - Uma grande movimentação pode ser notada no centro comercial de Zharkia."
     
    Em geral, cada aventura é constituída por um Mestre (GM) e os restantes jogadores. O Mestre tem a responsabilidade de criar a história, o cenário, a época, introduzir personagens secundários e julgar as ações dos personagens principais, de acordo com o sistema de jogo. Aos jogadores cabe a criação e controle do seu próprio personagem durante o jogo.
     
    Sabendo disto, entendemos que um bom jogo RPG precisa de Regras, Ambientação e Jogadores!
    As Regras são importantes para que os Jogadores não saiam da Proposta da Ambientação do Jogo.
    A Ambientação é o que da vida ao RPG, caso o projeto vá para frente iremos sentar e escrever um lindo enrredo medieval que envolve todos os elementos aqui citados!
    Os Jogadores são eles quem conduzem o Game, desde que fiquem dentro das Regras e Ambientação, toda atitude tomada, toda inimizade poderá influenciar o seu personagem pro resto de sua Vida dentro do Game!
     
     
    ATRIBUTOS:
    Ainda deverá ser decido quais atributos são necessários além dos Originais do Tibia (Magic Level, Sword Fight etc..) para o Jogo, já idealizei algumas:
    Estas alterações deverão ser simples de serem feitas, preciso descobrir um modo de Salvar no Personagem os Atributos de Itens Extradef / Magic Point etc..

    Força: Será um multiplicador de Ataque.
    Agilidade: Será um multiplicador de Speed ou Atkspeed(Caso consigamos)
    Fadiga: Atributo que irá limitar certas Skills do Jogo, principalmente as Crafting.
    Inteligência: Será um Multiplicador de Magic Level
    Vitalidade: Atributo que aumenta a vida máxima do Personagem.
    Resiliência: Atributo que aumenta a regeneração passiva do Personagem.
     
    RAÇAS
    Precisa ser feito a separação de Raças e as Vantagens/Desvantagens de cada uma, são elas;
    Você terá de agir de acordo com as características de sua Raça ou seja; se você for um Humano não há motivo para sair Pklizando sem justificativa em um Elfo ou em um Anão pois estas duas Raças são "Aliadas" dos Humanos, ao menos que haja um motivo plausível in game.
     
    • Humanos (Raça Neutra) - [Galera que geralmente joga sozinho]
    Aliados dos Elfos e Anões, os humanos são a raça neutra e menos provida de vantagens/desvantagens.
    Iniciam o jogo na Cidade Principal que estará sob regência de um Rei(Jogador) Humano nomeado pela Staff.
     
    • Elfos (Resistência) - [Galera que joga em grupinho mais fechado de amigos]
    Aliados dos Humanos e Inimigo "Guerra Fria" dos Anões, os Elfos por sua vez possuem mais Agilidade e Vitalidade.
    Iniciam o jogo em uma Fortaleza dos Elfos onde haverá um Lider(Jogador) dos Elfos nomeado pela Staff.
     
    • Anões (Resistência) - [Galera que joga em grupo e tá sempre aceitando novos membros]
    Aliados dos Humanos Inimigo "Guerra Fria" dos Elfos, os Anões possuem Resistência e força além de serem exímios Ferreiros - Mineradores.
    Iniciam o jogo em um Forte dos Anões onde haverá um Lider(Jogador) dos Anões nomeado pela Staff.
     
    • Drow (Não se dá com Nenhuma outra Raça) - [Galera mais hardcore que joga em grupo - Raça mais dificil por confundirem o irracional com coisas fora das Regras e Ambientação]
    Inimigo de todas outras Raças, o Drow é um Elfo Negro com características Primitivas onde seu jogo se resume a atitudes "irracionais" e decisões "mal tomadas".
    Iniciam o jogo em sua cidade Subterrãnea totalmente separados porém no mesmo continente, dos Humanos, Elfos e Anões onde o Lider da Raça será um Jogador nomeado pela Staff.


    HABILIDADES:
    Na criação do Personagem o Jogador deverá traçar seu Caminho de acordo com suas Habilidades no caso o Jogador poderia escolher 1 Classe Principal, 2 Secundárias e 2 Terceárias.
    Principal: Jogador pode upar ela até 110%.
    Secundária: Jogador pode upar ela até 70%.
    Terceária: Jogador pode upar até 40%.
     
    O Ganho de EXP acontece não só ao derrotar uma criatura mas também ao Craftar/Coletar/Realizar determinadas ações que dependem das suas Skills para terem chance de Sucesso por exemplo, ao Craftar um Arco Curto que é necessário Skill 15 de Marceneiro você irá ganhar 20 de EXP, ao Craftar um Arco Composto de Skill 60 você irá ganhar 200 de EXP, ao coletar um Minério de Ferro (Comum) você ganhará 20 de Exp, ao coletar um minério de Mithril (Raro) você receberá 300 de EXP, e assim vai em todas as Classes...
     
    Como Serão as Classes? Todas voltadas para o RPG tendo em vista que todo comercio será desenvolvido pelos Jogadores, aqui vai algumas já idealizadas:
     
    Arqueiro:
    Pode usar arcos e flecha.
    Upa skill Distance Alto.
    Dano Baixo.
    Velocidade de Ataque Medio/Alto.

    Mestre da Besta:
    Pode usar Crossbow e Bolt.
    Upa skill Distance Alto.
    Dano Alto.
    Velocidade de Ataque Baixo.
     
    Esgrimista:
    Pode usar Esgrimas (Swords de Atk Baixo 2 Hands)
    Upa skill Sword Alto.
    Dano Medio.
    Velocidade de Ataque Alto.
     
    Defensor: 
    Pode usar Espada + Escudo.
    Upa Skill Sword Alto.
    Dano Medio.
    Velocidade de Ataque Medio.
    Ganho por LVL: [HP: 25] - [MP: 5] - [CAP: 10]
    Regen: [HP: 5/5] [MP: 5/15]
     
    Lanceiro:
    Pode usar Lanças (Spears que atk a 2 SQM)
    Upa Skill Distance Alto.
    Dano Alto.
    Velocidade de Ataque Baixo.
     
    Nórdico: 
    Pode usar Armas 2 H
    Upa Skill Axe / Club Alto
    Dano Alto
    Velocidade de Ataque Baixo.


    Por que separar as Classes de Combate?
    Para movimentar o comercio dos Jogadores focados em Crafting.
    Chegar o mais próximo ao RPG possível.
    Elaborar um Leque de "Magias" -> "Perícias" de acordo com cada classe como um "Perfurar" para os Lanceiros, ou Fúria para os Nórdicos e até uma Esquiva Perfeita para os Esgrimistas...
     
    Sacerdote:
    Usa só magias de Cura
    Upa Magic Level Alto.
    Cura Alta
    Velocidade de Cura Medio.
     
    Domador:
    Domestica Criaturas Hostis e Montarias para lutarem em seu lugar.
    Upa Magic Level Medio
    Ataque Medio.
    Velocidade de Ataque Baixo.
     
    Forja:
    Fabrica Equipamentos e Armas de Ferro (Equips Pesados)
    Libera novos Equipamentos para Craft de acordo com evolução da Skill.
    Ataque Medio.
    Velocidade de Ataque Baixo.
     
    Costureiro:
    Fabrica Equipamentos de Pano (Equips Leves)
    Libera novos Equipamentos para Craft de acordo com evolução da Skill.
    Ataque Medio.
    Velocidade de Ataque Baixo.
     
    Alquimia:
    Fabrica poções de Cura/Ataque/Suporte.
    Libera poções mais fortes de acordo com evolução da Skill.
    Ataque Medio.
    Velocidade de Ataque Baixo.
     
    Fazendeiro:
    Trabalha com a terra Plantando/Colhendo Ervas/Frutas/Cogumelos etc.
    Libera novas Mudas para plantio de acordo com evolução da Skill.
    Velocidade de Ataque Baixo.
     
    Carpinteiro:
    Fabrica Equipamentos e Acessórios de Madeira. (Ex: Caixa, Arco, Flecha etc..)
    Libera novos Equipamentos para Craft de acordo com evolução da Skill.
    Velocidade de Ataque Baixo.
     
    Marceneiro:
    Fabrica Paredes, portas grades fechaduras, constrói residências.
    Libera novas Paredes/Portas/Janelas para Craft de acordo com evolução da Skill.
    Todas paredes criadas devem ser usado um comando .fix para salvar no Mapa, desde modo ao reiniciar o servidor todos Itens .fix ados irão reaparecer no mapa.
     
    Minerador:
    Habilidade em Coletar Minérios.
    Capacidade de coletar novos Minérios de acordo com a evolução da Skill
    Velocidade de Ataque Baixo.
     
    Lenhador:
    Habilidade em Coletar Lenha
    Capacidade de coletar novas Madeiras de acordo com a evolução da Skill
    Velocidade de Ataque Baixo.
     
    Sobrevivência:
    Habilidade em fazer fogueiras, escalpelar animais e usar os demais elementos da Natureza a seu favor.
    Capacidade de coletar novos Couros, Tripas, Carne das criaturas, envenenar adagas etc..
    Velocidade de Ataque Baixo.
     
    Ainda tem muitas outras que não idealizei, mas creio que vocês saberão do que se trata:
    Arcano (Voltado para magia de dano)
    Bardo (Estilo de personagem Trombadinha, Ladrão ou vagabundo mesmo)
    Caçador de Tesouros (Destranca os baús com os melhores prêmios, indispensável para uma Dungeon)
    Outras
     
     
     
    EXEMPLO DE CONSTRUÇÃO DO PERSONAGEM:
    Com foco no Combate, este personagem poderá portar as Armas & Escudos mais fortes do Jogo e poderá Fabricar Equipamentos Intermediários para levantar Moedas e suprir outras necessidades das dispostas por sua Skill:
     
    Skill Principal: (Pode upar até 110)
    • Defensor: Usa Espada-Escudo
    Skill Secundária: (Pode upar até 70)
    • Forja: Fabrica Equipamentos e Armas de Ferro (Equips Pesados)
    • Minerador: Habilidade em Coletar Minérios.
    Skill Terceária: (Pode upar até 40)
    • Lenhador: Habilidade em Coletar Lenha
    • Sobrevivência: Habilidade em fazer fogueiras, escalpelar animais e usar os demais elementos da Natureza a seu favor.
     
    SOBRE A MORTE
    Ao cair em combate ou por qualquer outro motivo, o jogador terá um DESMAIO.
    O Tempo de desmaio é cumulativo aumentando por mortes consecutivas em um curto período de Tempo.
    Caso seu Personagem desmaie 5 vezes em um curto período de Tempo ele irá Morrer para sempre, não podendo mais loga-lo tornando assim cada personagem Único não só em sua Construção mais também em sua trajetória dentro do Jogo.
     
    O Comercio do jogo é totalmente feito pelos jogadores, haverá NPCs que vende equips iniciais porém SEMPRE os Craftaveis serão melhores que os dos NPCs.
     
    Os NPCs serão focados na entrega de Quests e Pistas, haverá futuramente um sistema de Recipes em que você precisará aprender a fazer determinado item e os NPCs irão ensina-los.
     
     
    INFORMAÇÕES ESTRUTURAIS:
    Estou usando como Base a Distro TFS 1.2
    Cliente Versão 10.9 (Old)

    Modal Window - Estou usando e abusando disto, principalmente nas Skills de Crafting, todas terão seu Menu Próprio por onde serão Craftados os Itens, direto da Modal.

    addEvents - Nas Skills de coleta de materiais (Lenhador, Minerador) onde exigem ações repetitivas o script foi feito com um Loop em que o Personagem seleciona o Local em que quer coletar e o personagem irá procurar até encontrar ou acabar o material do determinado Sqm. Evitando aquela jogabilidade massante onde o player muitas vezes recorre ao BOT para fazer isto.

    Como eu trabalhava muito em versões inferiores a 10. estou focado no que ao meu ver considero mais difícil que são essas Modal Window das Classes Craft tendo em vista que cada Menu abriga vários itens, já tenho alguma coisa pronta durante o decorrer do dia eu adiciono algumas Fotos.

    Considerações finais:
    O Projeto ainda está bem "cru" porém é uma idéia que com a ajuda de mais gente poderia rolar uma experiência de jogo muito boa já que um servidor deste tipo não visa QUANTIDADE mas sim a QUALIDADE do jogo em si, um Servidor com RPG fiel é onde se cria as melhores lembranças pois tudo é imprevisível, o Mestre (GM) adequa o Evento da melhor forma para os jogadores terem uma experiência única!

    Eu não tenho pressa em desenvolver este projeto pois sei que a cena do Tibia em si tá enfraquecendo por isto vim expor minhas idéias pra procurar mais alguém que esteja disposto a fazer parte do Projeto!

    Comentem ai o que vocês acham, ou se querem ajudar, podem entrar em contato:
    [email protected]
     
     
  11. Haha
    Lexir deu reputação a rei ice em sprite da pxg com negocio   
    so preciso de 1 sprite da pxg mega abomasnow ai vc podera escolher VVVV 
     
    ei vc ai e vc mesmo vc quer algumas desses sh mega  >>>  ou outro pokemon vale qualquer pokemon sh 
     
  12. Gostei
    Lexir deu reputação a Pedro. em Thora Layout Completo   
    Estou trazendo o layout do ThoraOT, foi disponibilizado em outro fórum cheio de erros, faltando várias coisas e como estou aprendendo php, entrando nesse ritmo quis da uma mexida nele e tô trazendo para vocês.
     
    Fixes;
    Fixado Players Online 100% Fixado Top Guilds 100% Fixado Powergamers 100%  
    Added;
    Adicionado versão mais recente do boostrap Adicionado Cast System Page Adicionado Glyphicons Reformulada pagina de Characters. Reformulada Suporte Team (com funções) Adicionado World Map (passar o mouse no mapa e aparecer informações)  
     
     
    Screens:
     
    Antes:

     
    DEPOIS:
     

     

     

     

     

     
     
     
     
    Vou adicionar créditos ao membro que disponibilizou o layout. 
     
    Tabela para o a pagina de Suporte.
     
    ALTER TABLE `players` ADD `function` VARCHAR(100) NOT NULL DEFAULT '';  
     
     
    Download: http://www.mediafire.com/file/9zsn7l3xzas5v8x/Thora Layout.rar
    Scan: https://www.virustotal.com/#/file-analysis/OTUyM2RlZDIwZjFmOWZjNjRjMGE0YTNjYWRkMzA2YjI6MTUyNDE2NzI1NA==
     
     
  13. Gostei
    Lexir deu reputação a vyctor17 em Módulos Tibia 9+ no 8.54   
    estou fazendo a portabilidade de alguns módulos/sistemas das versões mais novas do tibia, para minha base 8.54(TFS 0.3.6PL1), como faz muito tempo que não jogo global alem de montaria e o market qual outro sistema que existe no mesmo, você acha que seria legal de fazer no 8.54?
     
     
  14. Gostei
    Lexir deu reputação a dyroz em Dyroz Show-Off   
    Fala galera, blz ?
    Demorei a atualizar mas não parei, seguem algumas ss's in game 
     










     
    Bônus: Loja de Moveis.

  15. Gostei
    Lexir deu reputação a arthurluna em Obsidian Knife 100%   
    Creaturescripts:



    <event type="kill" name="SummonKill" event="script" value="obsidianknife.lua"/> <event type="login" name="obs_login" event="script" value="obsidianknife.lua"/> <event type="death" name="ObMonsterCheck" event="script" value="obsidianknife.lua"/> obsidianknife.lua function onLogin(cid) registerCreatureEvent(cid, "SummonKill") return true end function onKill(cid, target) if isMonster(target) and isPlayer(getCreatureMaster(target)) then registerCreatureEvent(target, "ObMonsterCheck") end return true end function onDeath(cid, corpse) doItemSetAttribute(corpse.uid, "aid", 91347) return true end Actions: <action itemid="5908" event="script" value="tools/obsidian_knife.lua"/> local MINOTAUR_LEATHER, LIZARD_LEATHER, GREEN_DRAGON_LEATHER, RED_DRAGON_LEATHER, HARDENED_BONE, BEHEMOTH_FANG = 5878, 5876, 5877, 5948, 5925, 5893 local config = { [3090] = {25, MINOTAUR_LEATHER}, [2871] = {25, MINOTAUR_LEATHER}, [2866] = {25, MINOTAUR_LEATHER}, [2876] = {25, MINOTAUR_LEATHER}, [3104] = {25, GREEN_DRAGON_LEATHER}, [2881] = {25, RED_DRAGON_LEATHER}, [2931] = {25, BEHEMOTH_FANG}, [4256] = {25, LIZARD_LEATHER}, [4259] = {25, LIZARD_LEATHER}, [4262] = {25, LIZARD_LEATHER}, [11285] = {25, LIZARD_LEATHER}, [11277] = {25, LIZARD_LEATHER}, [11269] = {25, LIZARD_LEATHER}, [11273] = {25, LIZARD_LEATHER}, [11281] = {25, LIZARD_LEATHER}, [3031] = {25, HARDENED_BONE} } local pumpkin_items = { [1] = {2683}, [2] = {2688, 50}, [3] = {6571}, [4] = {6492}, [5] = {6574}, [6] = {6526}, [7] = {2096}, [8] = {9005, 20} } local sculpting = { [7441] = {randsize = 4, newid = 7442}, [7442] = {randsize = 5, newid = 7444}, [7444] = {randsize = 6, newid = 7445}, [7445] = {randsize = 7, newid = 7446}, } function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == 8961 then if getPlayerStorageValue(cid, 81279) <= 0 then doCreatureSay(cid, "Happy Halloween!", TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) setPlayerStorageValue(cid, 81279, 1) local v = pumpkin_items[math.random(#pumpkin_items)] doPlayerAddItem(cid, v[1], v[2] or 1) else doCreatureSay(cid, "You already used your knife on the corpse.", TALKTYPE_ORANGE_1, false, cid) end return true end -- Sculpting local v = sculpting[itemEx.itemid] if v then if(math.random(v.randsize) == 1) then doTransformItem(itemEx.uid, v.newid) else doRemoveItem(itemEx.uid) doCreatureSay(cid, "The attempt at sculpting failed miserably.", TALKTYPE_ORANGE_1) end doSendMagicEffect(toPosition, CONST_ME_HITAREA) return true end -- summons if itemEx.actionid == 91347 then return doPlayerSendCancel(cid, "You cant skin a summon corpse.") end -- Skinning v = config[itemEx.itemid] if not v then return false elseif math.random(100) <= v[1] then doPlayerAddItem(cid, v[2], 1) doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN) else doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT) end doTransformItem(itemEx.uid, itemEx.itemid + 1) doDecayItem(itemEx.uid) return true end


    Créditos:
    Cykotitan
    Lucas Ferraz
    ArthurLuna
  16. Curtir
    Lexir deu reputação a MaXwEllDeN em Werewolf System   
    #Introdução


    #Instalação

    Primeiro faça o download do sistema e cole na sua pasta data[ANEXO].

    #Configuração
    Como na maioria dos meus códigos: as configurações ficam na lib, então:


    WEREWOLF_CONFIG = { onlyMale = true, -- Somente players male poderão se transformar? tf_time = 5, -- Tempo transformado ( em minutos) mana_remove = 750,-- Mana que vai remover hp_percent = 10, -- Quantos % de HP o player vai voltar depois da transformação nhp_x = 2, -- O HP do Player aumenta 2x nmp_percent = 50 -- Perde 50% da mana } Pô, tá tudo comentado né! Para configurar o horário em que ele será transformado, você abre o globalevents.xml e modifica onde tem time = <!-- Werewolf --> <globalevent name="Werewolf" time="20:30" event="script" value = "Werewolf.lua"/>
    Werewolf by MaXwEllDeN and Vittu.rar
  17. Gostei
    Lexir deu reputação a AndreyLost em TELEPORT SOULPOINTS   
    Olá pessoal, esse é meu primeiro script, estou até com vergonha de postar kkkk.
    O script é bem simples, ele teleporta o jogador para uma certa position se o jogador tiver uma certa quantia de soulpoints, caso alguém queira modificar fazendo que o jogador que for teleportado também perca uma quantia de soulpoints.
     
     
    Você vai colocar a tag na pasta movements em movements.xml
    <movevent type="StepIn" actionid="7003" event="script" value="teleportsoul.lua" /> Você vai criar um arquivo .lua e renomear para teleportsoul e vai colocar dentro dele e jogar dentro da pasta movements/scripts
    function onStepIn(cid, item, toPosition, fromPosition) if getPlayerSoul(cid) >= 50 then doTeleportThing(cid, {x=1001, y=923, z=7}) else doPlayerSendCancel(cid, "MENSAGEM AQUI") return true end return true end Para editar é muito simples.
    QUANTIA DO SOUL POINTS - 50 VOCÊ COLOCA O VALOR DESEJADO {x=1001, y=923, z=7} MODIFICA PARA A POSITION QUE VOCÊ QUER QUE O JOGADOR SEJA TELEPROTADO MENSAGEM AQUI - A MENSAGEM QUE VAI APARECER PARA O JOGADOR CASO ELE NÃO TENHA OS SOULPOINTS NECESSÁRIO. Espero ter ajudado alguém pois o script é bem simples. Obrigado!!
  18. Gostei
    Lexir deu reputação a xWhiteWolf em Critical Skill System   
    sim, a chance do critical é definida por um storage:
    if (getPlayerStorageValue(attacker, lvlcrit)*3) >= math.random (0,1000)

    Se o valor do storage * 3 for igual ou maior que um numero aleatorio entre 0 e mil solta o crítico. Se vc quiser que todos os players tenham crítico é só colocar no login.lua pra se o player tiver esse valor de storage = -1 então setar pra 50. Daí todos os players terão 15% de chance de dar crítico. No creaturescripts onAdvance vc tb pode colocar pra ganhar 1 ponto por nível (setar o storage como sendo o storage +1).. Dá pra vc editar praticamente do jeito que vc quiser, por isso é um system
  19. Gostei
    Lexir deu reputação a Vodkart em (Resolvido)Check Quest Diaria   
    o action do bau
     
    local t = { storage = 678678, -- storage, so mude se tiver usando pra outra coisa. tempo = 24, -- Tempo em horas. qt = 250, -- quatidade. itemidxx = 6527 -- Item que ira ganhar. } function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerStorageValue(cid, t.storage) - os.time() > 0 then return doPlayerSendTextMessage(cid, 25, "Você só poderá abrir seu bau em "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,t.storage))..".") end setPlayerStorageValue(cid, t.storage, os.time() + t.tempo * 60 * 60) doPlayerSendTextMessage(cid, 25, "Voce ganhou "..t.qt.." "..t.itemidxx.." diário, espere até "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,t.storage)).." para pegar novamente.") doPlayerAddItem(cid,t.itemidxx,t.qt) return true end  
     
    o tile:
     
     
    local storage = 678678 function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end return doPlayerSendTextMessage(cid, 25, getPlayerStorageValue(cid,storage) <= os.time() and "Você está apto a pegar a recompesa do báu" or "Você só poderá abrir seu bau em "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,storage))..".") end  
  20. Gostei
    Lexir deu reputação a Vodkart em (Resolvido)Check Quest Diaria   
    Sozinho, copiando script e alterando, tentando entender e tal...
     
    Na época tava cansado de fazer pedido de script no xtibia(n existia tk ainda) e ngm responder, cansei de esperar já que não tenho paciência praticamente pra nada e comecei a fuçar pra aprender alguma coisa, nunca fui programador e faço faculdade de Direito.
     
    Abraços.
  21. Gostei
    Lexir deu reputação a Vodkart em (Resolvido)[RESOLVIDO] Players vs Players   
    Faz no action um script de tempo também, digamos que você possa ficar no máximo 10 min na arena.
    Esse script é tipo do battlefield, a diferença que não precisaria colocar storage para diferenciar, a "storage"  seria a guild em questão... Só jogar 4 global storage e assim cada vez que matasse 1 a storage ia de 4 para 3 e assim sucessivamente. quando matasse o último dava a premiação para os jogadores que estiverem na arena.
  22. Gostei
    Lexir deu reputação a Vodkart em (Resolvido)[RESOLVIDO] Players vs Players   
    eu to saindo agora, se ninguém fizer de noite eu dou uma olhada pra você!!
    vou almoçar fora e passar a tarde com a minha morena...
    abraços.

Informação Importante

Confirmação de Termo