Ir para conteúdo

Dual Wield || Weapons for tfs (1.x)


kaleudd

Posts Recomendados

primeiro começamos com código
em enums.h

procure:

ITEM_ATTRIBUTE_DOORID = 4194304

em baixo adicione:

ITEM_ATTRIBUTE_DUAL = 8388608

em item.cpp:

procure:

case ATTR_EXTRADEFENSE: {
            int32_t extraDefense;
            if (!propStream.read<int32_t>(extraDefense)) {
                return ATTR_READ_ERROR;
            }

            setIntAttr(ITEM_ATTRIBUTE_EXTRADEFENSE, extraDefense);
            break;
        }

em baixo adicione:

case ATTR_DUAL: {
            bool dual;
            if (!propStream.read<bool>(dual)) {
                return ATTR_READ_ERROR;
            }

            break;
        }

em mesmo,procure:

if (hasAttribute(ITEM_ATTRIBUTE_EXTRADEFENSE)) {
        propWriteStream.write<uint8_t>(ATTR_EXTRADEFENSE);
        propWriteStream.write<int32_t>(getIntAttr(ITEM_ATTRIBUTE_EXTRADEFENSE));
    }

e adicione em baixo:

if (hasAttribute(ITEM_ATTRIBUTE_DUAL)) {
        return;
    }

em item.h

procure:

ATTR_SHOOTRANGE = 33,

e adicione em baixo:

ATTR_DUAL = 34

no mesmo,procure:

int32_t getDefense() const {
            if (hasAttribute(ITEM_ATTRIBUTE_DEFENSE)) {
                return getIntAttr(ITEM_ATTRIBUTE_DEFENSE);
            }
            return items[id].defense;
        }

e adicione em baixo:

bool isDual() const {
            if (hasAttribute(ITEM_ATTRIBUTE_DUAL)) {
                return bool(ITEM_ATTRIBUTE_DUAL);
            }
            return items[id].dual;
        }

em items.cpp

procure:

armor = 0;

e adicione em baixo:

dual = false;

no mesmo,procure:

else if (tmpStrValue == "defense") {
            it.defense = pugi::cast<int32_t>(valueAttribute.value());
        }

e adicione em baixo:

else if (tmpStrValue == "dual") {
            it.dual = valueAttribute.as_bool();
        }

em items.h

procure:

int32_t runeLevel;

e adicione em baixo:

bool dual;

em luascript.cpp

procure:

registerEnum(ITEM_ATTRIBUTE_ATTACK)

em baixo adicione:

registerEnum(ITEM_ATTRIBUTE_DUAL)

em player.cpp

procure:

case CONST_SLOT_RIGHT:

e substituia por esse:

if (item->getWeaponType() != WEAPON_SHIELD)

com isso:

if (item->getWeaponType() != WEAPON_SHIELD && !item->isDual())

no mesmo,procure:

else if (!leftItem->isWeapon() || !item->isWeapon()

e adicione em baixo:

|| type == WEAPON_AMMO

no mesmo,adicione esse código:

|| leftItem->isDual() && item->isDual()

no mesmo,procure:

case CONST_SLOT_LEFT:

e substituia por esse:

if (!item->isWeapon() || item->getWeaponType() == WEAPON_SHIELD)

com isso:

if (!item->isWeapon() && !item->isDual() || item->getWeaponType() == WEAPON_SHIELD)

no mesmo procure:

else if (!rightItem->isWeapon() || !item->isWeapon()

e adicione em baixo:

type == WEAPON_AMMO

no mesmo,adicione esse código:

|| rightItem->isDual() && item->isDual()

em tools.cpp

procure:

else if (str == "defense") {
        return ITEM_ATTRIBUTE_DEFENSE;
    }

e adicione em baixo:

else if (str == "dual") {
        return ITEM_ATTRIBUTE_DUAL;
    }

Agora que fizemos o código.
Como funciona ?
em items.xml você pode adicionar esta chave de atributo em qualquer arma.

<attribute key="dual" value="1" />

créditos:

EvilSkillz 
Link para o comentário
Compartilhar em outros sites

Bem legal, mas nunca tinha visto algo assim, poderia me explicar como funciona, e no que alteraria?

 

você pode ter duas armas ao mesmo tempo,tipo spike sword na mão esquerda e um knight axe à mão direita.

Editado por kaleudd
Link para o comentário
Compartilhar em outros sites

  • 3 years later...
6 minutos atrás, diarmaint disse:

Desculpa reviver, estou precisando muito.

Em minha source está diferente.

 

Não muda, só adicionar embaixo.

A versão do TFS é a mesma?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...