Ir para conteúdo

Renan Gerson

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Renan Gerson recebeu reputação de S H I O N em Mapa castelo para Tíbia 8.54   
    Bom, sempre que eu tiver um tempo disponível eu irei trazer algumas criações de mapas para servidores 8.54.
    Ao longo do tópico irão ver imagens do mapa criado por mim chamado " Castelo/Castle ".
    Caso queira pegar o projeto e fazer melhorias para postar no fórum certifique-se de dar os devidos créditos:
    --------------------------------------------------
    Inicialmente criado por: Renan Gerson
    Modificado e melhorado por: ( SEU NOME )
    --------------------------------------------------
    Dês de já se consegui te ajudar da REP+ 
    -O mapa mostrando nas imagens é um castelo com apenas um acesso ( frontal/ponte ). 
    -Possuindo algumas casas dentro dele e uma "área real" logo a cima da entrada, uma subida em cada parte da frente do castelo para visualizar novos inimigos se aproximando e caminhos diretos da frente até a "área real". 
    -Também possuindo duas decidas para a área de maquinas ( onde faz a energia chegar nas cassas dos moradores ). 
    -OBS: portas não testadas.
     
    Download: https://www.mediafire.com/file/hbf6ci2fugfphow/Mapa_Castelo-Renan_Gerson.rar/file
     
  2. Gostei
    Renan Gerson deu reputação a Erimyth em Regras Gerais do TibiaKing   
    REGRAS GERAIS DO TIBIA KING
     
    Seja bem vindo ao TibiaKing.com! Nós queremos que você tenha uma boa experiência navegando em nosso site, por isso separamos abaixo, de forma resumida, as regras da nossa comunidade. 
    Leia, se houver dúvidas contate-nos.
    • Feedback e reclamações
    • Contato com a STAFF
     
     
     
     
    SOBRE O TIBIAKING
    O Tibia King preza pela ética e pelo respeito. As infrações sempre serão punidas. Eventuais opiniões expressas por determinados membros do fórum não representam o posicionamento do site.  
     
     
     
    1 - REGRAS DE CONDUTA E USO DA CONTA
    Sobre Respeito e Ética Respeite as opiniões e expressões dos outros membros, opiniões devem ser debatidas pacificamente e com maturidade.  Ao postar trabalhos que não são de sua autoria mencione os créditos necessários aos envolvidos na criação Sobre Críticas Ao ver um trabalho de outro membro e desejar avaliá-lo, faça-o de modo construtivo e não destrutivo. Sobre Persuasão Não envie solicitações inconvenientes à outros usuários (vale para mensagens privadas, status do perfil e menções em tópicos). Isso inclui conteúdo de natureza sexual, solicitação de fundos e publicidade não solicitada, bem como pedidos e suporte, compra e venda de serviços e produtos. Sobre Plágio Plágio e/ou apologia ao Ripping não é permitido no fórum, ao publicar um conteúdo de sua autoria mencione os créditos. Se o conteúdo publicado não tiver autorização devida para ser compartilhado ele deve ser denunciado e nós o removeremos.  Sobre Falsa Identidade Não é permitido que uma pessoa se passe por outra em uma conta. Como colocar nomes de outas pessoas, se passar por mulher quando for homem e vice-versa. Sobre Suporte fora do fórum Não é permitido usar o TibiaKing para pedir ou oferecer suporte fora do TibiaKing.com, como por exemplo: "To querendo tal map, me adiciona no WhatsApp",  "Me adiciona no Discord que eu resolvo". Contas múltiplas Não é permitido que uma pessoa possua duas ou mais contas diferentes registradas no fórum. Assinatura e avatar Sua assinatura pode ter textos e imagens, desde que o conteúdo dela não infringia qualquer regra de nosso fórum, o mesmo ocorre para os Avatares. Não queremos que sua assinatura atrapalhe a experiência de navegação de outras pessoas. Alterações de nome Ao se registrar você pode escolher seu nome de exibição da maneira que você preferir, para que você possa alterar seu nome, precisa estar no mínimo há 6 meses cadastrado neste fórum. Você tem direito há uma alteração de nick a cada 1 ano. Essa alteração pode ser feita clicando aqui. Sobre Desativação de contas Nós não desativamos contas, caso você queira por algum motivo maior que sua conta seja desativada/excluída ou algo do tipo, apenas abandone-a. Sobre Solicitação de remoção de conteúdo Caso o membro seja banido ou suspenso do fórum, nós não iremos remover os conteúdos publicados por esse membro mesmo que ele tenha solicitado. O fórum foi criado com o único objetivo de contribuição, por tanto se você um dia contribuiu para o TK seu conteúdo permanecerá. Editar e apagar seus conteúdos resultará em banimento e nós usaremos uma ferramenta para recuperar o seu conteúdo. Sobre Moderação secundária Não comente como um moderador se você não for um, utilize botão "Reportar" para que a equipe resolve, se fizer isso seu comentário será considerado Flood e será removido. Sobre Denúncias Ao encontrar algo que esteja quebrando alguma regra, denuncie-o. Para isso, basta clicar em no botão "Denunciar", que fica no rodapé de cada post/mensagem. Se você, em vez disso, decidir criar outro post para responder ao membro, eventualmente causando confusão, ambos serão punidos.  
     
     
     
    2 - REGRAS DE USO DO FÓRUM E PUBLICAÇÃO
    Fóruns - Descrições e Avisos Cada fórum e sub-fórum contém regras e recomendações específicas (avisos). A leitura é obrigatória caso você esteja publicando algum conteúdo. Os textos são auto-explicativos e detalhados, a publicação de conteúdos no fórum errado (não coerente com o assunto do tópico que você estiver publicando), resultarão em alerta verbal seguido de punição. Sub-regras (avisos) específicos estão contidos em todas as áreas, podendo variar de acordo com o uso de cada uma. Em algumas áreas é preciso que um moderador aprove o seu conteúdo. Títulos de tópicos Use títulos descritivos dos tópicos. Tópicos como "Ajuda!", "Aparece isso", "Erro aqui", "Ajudaaa!" ou "Entrem aqui!" não são permitidos. Se você criar tópicos como estes será punido! Tags e Prefixos Tags são palavras-chave que servem para resumir o que é tratado no tópico e localizar conteúdos específicos contidos neste, o mal uso de Tags resultará na edição do seu tópico e se desrespeitar as regras do TK poderá resultar em punição. Prefixos são "Etiquetas" que tem como objetivo orientar membros e organizar os conteúdos das seções. O Uso de prefixos é obrigatório em todas as áreas do fórum, ao criar um tópico você tem acesso a uma lista de prefixos da qual você escolhe o que melhor se adequa ao seu conteúdo. Ao clicar num prefixo é mostrado uma página de pesquisa contendo todos os tópicos que usam o mesmo.  Conteúdo repetido ou duplicado Antes de criar um tópico com uma dúvida ou um pedido, faça uma pesquisa para ver se o que você quer já não foi resolvido antes. A caixa de pesquisa fica no topo do fórum e é bem fácil de ser usada. Fazendo isso, você poupa o seu tempo, o nosso e deixará o fórum mais limpo. Tome cuidado também para não publicar tópicos ou comentários duplicados. Bom Senso na Seção Suporte A seção de pedidos e suporte é para atender a todos os membros, a prioridade desta seção é para aqueles que desejam aprender sobre Otserv, e não receber tudo na mão. Portanto, não faça muitos pedidos ou faça 1 por vez. Excesso de pedidos serão considerados Spam.  Mensagens inúteis (Flood) Não poste mensagens sem conteúdo, que não contribuem em nada ou que não estejam relacionadas ao assunto do tópico. Mensagens assim são chamadas de Floods. Postar coisas como "haha", "lol", "me add no wpp aí", entre outras, é o que considera-se completamente inútil. Reviver Tópicos Não é permitido, é reviver um tópico apenas para obter postagens (flood), como por exemplo postar: "up", "legal", "gostei", "reputado", etc... Um dono de tópico pode utilizar nosso sistema de subir tópicos sem flood, basta utilizar o botão "Subir este tópico" (mais informações aqui) localizado perto do título e o tópico irá para o topo de sua seção. Não reviva tópicos antigos, se precisar debater sobre tópicos com mais de 30 dias desde a última postagem, crie um novo tópico linkando o antigo. Conteúdo inadequado Não são toleradas mensagens ou conteúdos com qualquer tipo de material abusivo ou ofensivo, como conteúdo de teor sexual ou que incentive formas de discriminação (racial, religiosa, etc). Não permitimos a postagens de algo que prevaleça ao seu próprio beneficio e prejudicando aos outros, e também não permitimos nenhum tipo de apologia à violência e as drogas. O TibiaKing não é uma comunidade de "hackers". Discussões sobre como ou incentivo para "hackear" (DDOS, etc) resultarão em banimento. Propagandas É rigorosamente proibido realizar divulgações de sites não vinculados a este fórum, tais como produtos ou serviços relacionados ao Tibia e ao OTServ out-forum (fora do fórum), de links PTC (Pay To Click, Adfly, etc) e outros. Algumas divulgações podem ser autorizadas por membros da administração do fórum. Reputação Tenha cuidado ao dar reputações, na comunidade temos reputações positivas e neutras (você pode ter mais informações aqui). Dar uma reputação a um membro mostra qual sua reação sob o trabalho dele. Múltiplas contas não são toleradas, criar contas para reputar a si próprio causará banimento da conta. Sobre Comércio Venda de conteúdos ou produtos não é permitida em nenhum lugar do fórum (incluindo mensagens privadas, nós temos acesso para monitorá-las). Classificados e FreeLancer A negociação através de classificados é de total responsabilidade dos envolvidos, entretanto o fórum poderá intervir em caso de disputas e eventuais problemas com o serviço anunciado; Caso o anuncio esteja em desacordo com as regras, o mesmo será imediatamente removido e membros envolvidos poderão ser punidos na comunidade; O membro tem todo direito de expressar sua experiência com o serviço prestado pelo anunciante nos comentários, desde que o comentário seja feito de maneira construtiva e com respeito e que não viole as regras do fórum.  
     
     
     
    PUNIÇÕES E ADVERTÊNCIAS
    Os membros que descumprem qualquer das regras presentes nesta página e outras especificadas por membros da equipe tornam-se, automaticamente, sujeitos à aplicação de punições decididas pela equipe, que julga a gravidade de cada caso. As punições podem ser aplicadas sem aviso prévio. Um membro pode ser punido Com alertas verbais; Negativamente na reputação. Com recebimento de advertências no perfil;  
     
    Eventualmente, as regras podem ser atualizadas conforme novas necessidades e todos
    os membros da comunidade precisam aceitar os novos termos da comunidade.
     
    Equipe de Administração TK.
  3. Curtir
    Esse sistema foi feito utilizando a source disponibilizada neste link
    Pode funcionar em TFS 0.4, OTX 2.X e, talvez, em TFS 0.4 só que a probabilidade erros é maior por ter diferentes nomes de funções e variáveis.
     
    Fiz um vídeo seguindo o passo a passo abaixo para facilitar o processo de instalação do sistema.
     
    Hoje estarei ensinando a instalar os seguintes novos atributos/sistemas em sua source
    CriticalHitChance e DodgeChance -- (Funciona da mesma maneira que o critical básico de script, porém sem bugs de callstack) Life e Mana Absorb -- (Regenera, de acordo com a % atribuida, a partir de dano recebido) Life e Mana Leech -- (Regenera, de acordo com a % atribuida, a partir do dano causado) Exemplo de como vai ficar
    Primeiro e antes de tudo, você terá de desativar o critical padrão do Tibia (Você pode pular essa parte se quiser)
     
    Vamos lá! Vá em items.cpp e procure por:
    attackSpeed = 0; Abaixo coloque:
    criticalHitChance = dodgeChance = lifeAbsorb = manaAbsorb = lifeLeech = manaLeech = 0; Depois, ainda em items.cpp, procure por:
    else if(tmpStrValue == "extradefense" || tmpStrValue == "extradef") { if(readXMLInteger(itemAttributesNode, "chance", intValue)) it.extraDefenseChance = intValue; if(readXMLInteger(itemAttributesNode, "value", intValue)) it.extraDefense = intValue; if(readXMLInteger(itemAttributesNode, "random_min", intValue)) it.extraDefenseRndMin = intValue; if(readXMLInteger(itemAttributesNode, "random_max", intValue)) it.extraDefenseRndMax = intValue; } Abaixo coloque:
    else if(tmpStrValue == "criticalhitchance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.criticalHitChance = intValue; } else if(tmpStrValue == "dodgechance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.dodgeChance = intValue; } else if(tmpStrValue == "lifeabsorb") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.lifeAbsorb = intValue; } else if(tmpStrValue == "manaabsorb") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.manaAbsorb = intValue; } else if(tmpStrValue == "lifeleech") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.lifeLeech = intValue; } else if(tmpStrValue == "manaleech") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.manaLeech = intValue; } Agora vá em items.h e procure por:
    int32_t attack, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, runeLevel, runeMagLevel, lightLevel, lightColor, decayTo, rotateTo, alwaysOnTopOrder; Abaixo coloque:
    int32_t criticalHitChance, dodgeChance, lifeAbsorb, manaAbsorb, lifeLeech, manaLeech;  
     
    Agora vá em item.cpp e procure por:
    case ATTR_ATTACK: { int32_t attack; if(!propStream.getLong((uint32_t&)attack)) return ATTR_READ_ERROR; setAttribute("attack", attack); break; } Acima coloque:
    case ATTR_CRITICALHITCHANCE: { int32_t criticalHitChance; if(!propStream.getLong((uint32_t&)criticalHitChance)) return ATTR_READ_ERROR; setAttribute("criticalhitchance", criticalHitChance); break; } case ATTR_DODGECHANCE: { int32_t dodgeChance; if(!propStream.getLong((uint32_t&)dodgeChance)) return ATTR_READ_ERROR; setAttribute("dodgechance", dodgeChance); break; } case ATTR_LIFEABSORB: { int32_t lifeAbsorb; if(!propStream.getLong((uint32_t&)lifeAbsorb)) return ATTR_READ_ERROR; setAttribute("lifeabsorb", lifeAbsorb); break; } case ATTR_MANAABSORB: { int32_t manaAbsorb; if(!propStream.getLong((uint32_t&)manaAbsorb)) return ATTR_READ_ERROR; setAttribute("manaabsorb", manaAbsorb); break; } case ATTR_LIFELEECH: { int32_t lifeLeech; if(!propStream.getLong((uint32_t&)lifeLeech)) return ATTR_READ_ERROR; setAttribute("lifeleech", lifeLeech); break; } case ATTR_MANALEECH: { int32_t manaLeech; if(!propStream.getLong((uint32_t&)manaLeech)) return ATTR_READ_ERROR; setAttribute("manaleech", manaLeech); break; } Procure por:
    if(it.weaponType == WEAPON_DIST && it.ammoType != AMMO_NONE) { begin = false; s << " (Range:" << int32_t(item ? item->getShootRange() : it.shootRange); if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { s << ", Atk " << std::showpos << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } if(it.hitChance != -1 || (item && item->getHitChance() != -1)) s << ", Hit% " << std::showpos << (item ? item->getHitChance() : it.hitChance) << std::noshowpos; } else if(it.weaponType != WEAPON_AMMO && it.weaponType != WEAPON_WAND) { if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { begin = false; s << " (Atk:"; if(it.abilities.elementType != COMBAT_NONE && it.decayTo < 1) { s << std::max((int32_t)0, int32_t((item ? item->getAttack() : it.attack) - it.abilities.elementDamage)); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; s << " physical + " << it.abilities.elementDamage << " " << getCombatName(it.abilities.elementType); } else { s << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } } if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } } Abaixo coloque:
    if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } if(it.dodgeChance || (item && item->getDodgeChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Dodge Chance:" << std::showpos << int32_t(item ? item->getDodgeChance() : it.dodgeChance) << "%"<< std::noshowpos; } if(it.lifeAbsorb || (item && item->getLifeAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Absorb:" << std::showpos << int32_t(item ? item->getLifeAbsorb() : it.lifeAbsorb) << "%"<< std::noshowpos; } if(it.manaAbsorb || (item && item->getManaAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Absorb:" << std::showpos << int32_t(item ? item->getManaAbsorb() : it.manaAbsorb) << "%"<< std::noshowpos; } if(it.lifeLeech || (item && item->getLifeLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Leech:" << std::showpos << int32_t(item ? item->getLifeLeech() : it.lifeLeech) << "%"<< std::noshowpos; } if(it.manaLeech || (item && item->getManaLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Leech:" << std::showpos << int32_t(item ? item->getManaLeech() : it.manaLeech) << "%"<< std::noshowpos; } Procure por:
    int32_t tmp = it.armor; if(item) tmp = item->getArmor(); bool begin = true; if(tmp) { s << " (Arm:" << tmp; begin = false; } Abaixo coloque:
    if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } if(it.dodgeChance || (item && item->getDodgeChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Dodge Chance:" << std::showpos << int32_t(item ? item->getDodgeChance() : it.dodgeChance) << "%"<< std::noshowpos; } if(it.lifeAbsorb || (item && item->getLifeAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Absorb:" << std::showpos << int32_t(item ? item->getLifeAbsorb() : it.lifeAbsorb) << "%"<< std::noshowpos; } if(it.manaAbsorb || (item && item->getManaAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Absorb:" << std::showpos << int32_t(item ? item->getManaAbsorb() : it.manaAbsorb) << "%"<< std::noshowpos; } if(it.lifeLeech || (item && item->getLifeLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Leech:" << std::showpos << int32_t(item ? item->getLifeLeech() : it.lifeLeech) << "%"<< std::noshowpos; } if(it.manaLeech || (item && item->getManaLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Leech:" << std::showpos << int32_t(item ? item->getManaLeech() : it.manaLeech) << "%"<< std::noshowpos; } Agora vá em item.h e procure por:
    ATTR_DUALWIELD = 43, Abaixo coloque:
    ATTR_CRITICALHITCHANCE = 44, ATTR_DODGECHANCE = 45, ATTR_LIFEABSORB = 46, ATTR_MANAABSORB = 47, ATTR_LIFELEECH = 48, ATTR_MANALEECH = 49, Procure por:
    int32_t getExtraDefense() const; Abaixo coloque:
    int32_t getCriticalHitChance() const; int32_t getDodgeChance() const; int32_t getLifeAbsorb() const; int32_t getManaAbsorb() const; int32_t getLifeLeech() const; int32_t getManaLeech() const; Procure por:
    inline int32_t Item::getExtraDefense() const { bool ok; int32_t v = getIntegerAttribute("extradefense", ok); if(ok) return v; return items[id].extraDefense; } Abaixo coloque:
    inline int32_t Item::getCriticalHitChance() const { bool ok; int32_t v = getIntegerAttribute("criticalhitchance", ok); if(ok) return v; return items[id].criticalHitChance; } inline int32_t Item::getDodgeChance() const { bool ok; int32_t v = getIntegerAttribute("dodgechance", ok); if(ok) return v; return items[id].dodgeChance; } inline int32_t Item::getLifeAbsorb() const { bool ok; int32_t v = getIntegerAttribute("lifeabsorb", ok); if(ok) return v; return items[id].lifeAbsorb; } inline int32_t Item::getManaAbsorb() const { bool ok; int32_t v = getIntegerAttribute("manaabsorb", ok); if(ok) return v; return items[id].manaAbsorb; } inline int32_t Item::getLifeLeech() const { bool ok; int32_t v = getIntegerAttribute("lifeleech", ok); if(ok) return v; return items[id].lifeLeech; } inline int32_t Item::getManaLeech() const { bool ok; int32_t v = getIntegerAttribute("manaleech", ok); if(ok) return v; return items[id].manaLeech; }  
     
    Agora vá em player.cpp e procure por:
    int32_t Player::getArmor() const { int32_t i = SLOT_FIRST, armor = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) armor += item->getArmor(); } if(vocation->getMultiplier(MULTIPLIER_ARMOR) != 1.0) return int32_t(armor * vocation->getMultiplier(MULTIPLIER_ARMOR)); return armor; } Abaixo coloque:
    int32_t Player::getCriticalHitChance() const { int32_t i = SLOT_FIRST, crit = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) crit += item->getCriticalHitChance(); } return crit; } int32_t Player::getDodgeChance() const { int32_t i = SLOT_FIRST, dodge = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) dodge += item->getDodgeChance(); } return dodge; } int32_t Player::getLifeAbsorb() const { int32_t i = SLOT_FIRST, life = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) life += item->getLifeAbsorb(); } return life; } int32_t Player::getManaAbsorb() const { int32_t i = SLOT_FIRST, mana = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) mana += item->getManaAbsorb(); } return mana; } int32_t Player::getLifeLeech() const { int32_t i = SLOT_FIRST, life = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) life += item->getLifeLeech(); } return life; } int32_t Player::getManaLeech() const { int32_t i = SLOT_FIRST, mana = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) mana += item->getManaLeech(); } return mana; } Agora vá em player.h e procure por:
    virtual int32_t getDefense() const; Abaixo coloque:
    virtual int32_t getCriticalHitChance() const; virtual int32_t getDodgeChance() const; virtual int32_t getLifeAbsorb() const; virtual int32_t getManaAbsorb() const; virtual int32_t getLifeLeech() const; virtual int32_t getManaLeech() const;  
     
    Agora vá em luascript.cpp e procure por:
    //getCreatureHealth(cid) lua_register(m_luaState, "getCreatureHealth", LuaInterface::luaGetCreatureHealth); Abaixo coloque:
    //getPlayerCriticalHitChance(cid) lua_register(m_luaState, "getPlayerCriticalHitChance", LuaInterface::luaGetPlayerCriticalHitChance); //getPlayerDodgeChance(cid) lua_register(m_luaState, "getPlayerDodgeChance", LuaInterface::luaGetPlayerDodgeChance); //getPlayerLifeAbsorb(cid) lua_register(m_luaState, "getPlayerLifeAbsorb", LuaInterface::luaGetPlayerLifeAbsorb); //getPlayerManaAbsorb(cid) lua_register(m_luaState, "getPlayerManaAbsorb", LuaInterface::luaGetPlayerManaAbsorb); //getPlayerLifeLeech(cid) lua_register(m_luaState, "getPlayerLifeLeech", LuaInterface::luaGetPlayerLifeLeech); //getPlayerManaLeech(cid) lua_register(m_luaState, "getPlayerManaLeech", LuaInterface::luaGetPlayerManaLeech); Procure por:
    int32_t LuaInterface::luaGetCreatureMaxHealth(lua_State* L) { //getCreatureMaxHealth(cid[, ignoreModifiers = false]) bool ignoreModifiers = false; if(lua_gettop(L) > 1) ignoreModifiers = popBoolean(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushnumber(L, creature->getPlayer() && ignoreModifiers ? creature->healthMax : creature->getMaxHealth()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Abaixo coloque:
    int32_t LuaInterface::luaGetPlayerCriticalHitChance(lua_State* L) { //getPlayerCriticalHitChance(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getCriticalHitChance()); else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerDodgeChance(lua_State* L) { //getPlayerDodgeChance(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getDodgeChance()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerLifeAbsorb(lua_State* L) { //getPlayerLifeAbsorb(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getLifeAbsorb()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerManaAbsorb(lua_State* L) { //getPlayerManaAbsorb(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getManaAbsorb()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerLifeLeech(lua_State* L) { //getPlayerLifeLeech(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getLifeLeech()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerManaLeech(lua_State* L) { //getPlayerManaLeech(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getManaLeech()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Agora vá em luascript.h e procure por:
    static int32_t luaGetPlayerSpentMana(lua_State* L); Abaixo coloque:
    static int32_t luaGetPlayerCriticalHitChance(lua_State* L); static int32_t luaGetPlayerDodgeChance(lua_State* L); static int32_t luaGetPlayerLifeAbsorb(lua_State* L); static int32_t luaGetPlayerManaAbsorb(lua_State* L); static int32_t luaGetPlayerLifeLeech(lua_State* L); static int32_t luaGetPlayerManaLeech(lua_State* L);  
    As funções Lua adicionadas foram
    getPlayerCriticalHitChance(cid) getPlayerDodgeChance(cid) getPlayerLifeAbsorb(cid) getPlayerManaAbsorb(cid) getPlayerLifeLeech(cid) getPlayerManaLeech(cid)  
    Agora a parte do game.cpp. (Esta é uma parte opcional, você pode optar por não adicioná-la)
    Créditos: ~Mathias Kenfi
  4. Curtir
    Renan Gerson deu reputação a ryukicho em Fazendo Foto Do Mapa Completo!   
    Cara , abra o mapa , depois vai em file no seu remeres , logo apos clique em export  depois export minimapa , logo apos selecione o local desejado a salvar coloque um nome e cliquem em salvar , ele vai carregar uns 13 minimapa se não me engano  são os "Z" ai se vai no no mine mapa 7 e pronto ajudei rep+ , se  tiver vaga  pra mapper no seu poektibia se quiser que eu seja só fala com migo
  5. Gostei
    Renan Gerson recebeu reputação de ITALOx em Mapa castelo para Tíbia 8.54   
    Bom, sempre que eu tiver um tempo disponível eu irei trazer algumas criações de mapas para servidores 8.54.
    Ao longo do tópico irão ver imagens do mapa criado por mim chamado " Castelo/Castle ".
    Caso queira pegar o projeto e fazer melhorias para postar no fórum certifique-se de dar os devidos créditos:
    --------------------------------------------------
    Inicialmente criado por: Renan Gerson
    Modificado e melhorado por: ( SEU NOME )
    --------------------------------------------------
    Dês de já se consegui te ajudar da REP+ 
    -O mapa mostrando nas imagens é um castelo com apenas um acesso ( frontal/ponte ). 
    -Possuindo algumas casas dentro dele e uma "área real" logo a cima da entrada, uma subida em cada parte da frente do castelo para visualizar novos inimigos se aproximando e caminhos diretos da frente até a "área real". 
    -Também possuindo duas decidas para a área de maquinas ( onde faz a energia chegar nas cassas dos moradores ). 
    -OBS: portas não testadas.
     
    Download: https://www.mediafire.com/file/hbf6ci2fugfphow/Mapa_Castelo-Renan_Gerson.rar/file
     
  6. Curtir
    Renan Gerson recebeu reputação de Cat em Mapa castelo para Tíbia 8.54   
    Bom, sempre que eu tiver um tempo disponível eu irei trazer algumas criações de mapas para servidores 8.54.
    Ao longo do tópico irão ver imagens do mapa criado por mim chamado " Castelo/Castle ".
    Caso queira pegar o projeto e fazer melhorias para postar no fórum certifique-se de dar os devidos créditos:
    --------------------------------------------------
    Inicialmente criado por: Renan Gerson
    Modificado e melhorado por: ( SEU NOME )
    --------------------------------------------------
    Dês de já se consegui te ajudar da REP+ 
    -O mapa mostrando nas imagens é um castelo com apenas um acesso ( frontal/ponte ). 
    -Possuindo algumas casas dentro dele e uma "área real" logo a cima da entrada, uma subida em cada parte da frente do castelo para visualizar novos inimigos se aproximando e caminhos diretos da frente até a "área real". 
    -Também possuindo duas decidas para a área de maquinas ( onde faz a energia chegar nas cassas dos moradores ). 
    -OBS: portas não testadas.
     
    Download: https://www.mediafire.com/file/hbf6ci2fugfphow/Mapa_Castelo-Renan_Gerson.rar/file
     

Informação Importante

Confirmação de Termo