Ir para conteúdo

Sistema de crítico. [8.54]


diarmaint

Posts Recomendados

  • 5 weeks later...

Bom, isso se faz pelas sources, então vamos lá:

 

ITEM.CPP:

 

Embaixo de:

case ATTR_ARTICLE:
        {
            std::string article;
            if(!propStream.getString(article))
                return ATTR_READ_ERROR;
            setAttribute("article", article);
            break;
        }

Colocar:

case ATTR_CRITICALHITCHANCE:
        {
            int32_t criticalHitChance;
            if(!propStream.getLong((uint32_t&)criticalHitChance))
                return ATTR_READ_ERROR;
            setAttribute("criticalhitchance", criticalHitChance);
            break;
        }

Embaixo de:

        bool begin = true;
        if(tmp)
        {
            s << " (Arm:" << tmp;
            begin = false;
        }

Colocar:

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;
        }

Embaixo de:

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;
            }

Colocar:

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;
            }

Agora em ITEM.H

 

Embaixo de:

 

ATTR_DUALWIELD = 43,

 

Colocar:

ATTR_CRITICALHITCHANCE = 44,

Embaixo de:

int32_t getAttack() const;

Colocar:

int32_t getCriticalHitChance() const;

Embaixo de:

inline bool Item::isScriptProtected() const
{
    const bool* v = getBooleanAttribute("scriptprotected");
    if(v)
        return *v;
    return false;
}

Colocar:

inline int32_t Item::getCriticalHitChance() const
{
    const int32_t* v = getIntegerAttribute("criticalhitchance");
    if(v)
        return *v;
    return items[id].criticalHitChance;
}

Agora em ITEMS.CPP

 

Embaixo de:

attackSpeed = 0;

Colocar:

criticalHitChance = 0;

Embaixo de:

else if(tmpStrValue == "extradefense" || tmpStrValue == "extradef")
            {
                if(readXMLInteger(itemAttributesNode, "value", intValue))
                    it.extraDefense = intValue;
            }

Colocar:

else if(tmpStrValue == "criticalhitchance")
            {
                if(readXMLInteger(itemAttributesNode, "value", intValue))
                    it.criticalHitChance = intValue;
            }

Agora em ITEMS.H

 

TROCAR:

int32_t attack, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance,

POR:

int32_t attack, criticalHitChance, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance,

Agora em LUASCRIPT.CPP

 

Embaixo de:

setField(L, "text", item->text);

Colocar:

setField(L, "criticalHitChance", item->criticalHitChance);

Agora em PLAYER.CPP

 

Embaixo de:

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;
}

Colocar:

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;
}

Agora em PLAYER.H

 

Embaixo de:

virtual int32_t getArmor() const;

Colocar:

virtual int32_t getCriticalHitChance() const;

Agora em WEAPONS.CPP

 

Substituir todos:

if(random_range(1, 100) < g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE))

Por:

if(random_range(1, 100) < player->getCriticalHitChance() + g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE))

A tag para se colocar no items.xml:

<attribute key="criticalHitChance" value="5" />
Editado por Shoguns
Link para o comentário
Compartilhar em outros sites

  • 1 year later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...