Yardım Kadim efsun değiştirme sorunu

  • Konuyu açan Konuyu açan adv1453
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 482
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

adv1453

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
442
Çözümler
42
Beğeni
221
Puan
869
Ticaret Puanı
0
Kadim efsun nesnesini 1 kere kullandıktan sonra tekrar farklı bonuslar ile değiştirmek istiyorum ve aşağıdaki hatayı veriyor.

"Seçilen bonus sırası ile nesnedeki bonus sırası aynı olmalıdır."

Bunu nasıl kaldırabilirim?

C++:
Genişlet Daralt Kopyala
#ifdef WJ_ELDER_ATTRIBUTE_SYSTEM
ACMD(do_add_new_attribute)
{
    std::vector<std::string> vecArgs;
    split_argument(argument,vecArgs);
    
    if (vecArgs.size() < 6)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_UNKNOWN_ARGUMENT"));
        return;
    }
    
    int sourceItemPos, targetItemPos, attrtype0, attrtype1, attrtype2, attrtype3;
    // int targetItemPos;
    // int attrtype0;
    // int attrtype1;
    // int attrtype2;
    // int attrtype3;
        
    str_to_number(sourceItemPos, vecArgs[1].c_str());
    str_to_number(targetItemPos, vecArgs[2].c_str());
    str_to_number(attrtype0, vecArgs[3].c_str());
    str_to_number(attrtype1, vecArgs[4].c_str());
    str_to_number(attrtype2, vecArgs[5].c_str());
    str_to_number(attrtype3, vecArgs[6].c_str());
    
    LPITEM item = ch->GetInventoryItem(targetItemPos);
    
    if (!item)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_CANNOT_FIND_ITEM"));
        return;
    }
    
    if (item->GetType() != ITEM_WEAPON && item->GetType() != ITEM_ARMOR)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_COSTUME"));
        return;
    }
    
    if (item->IsEquipped())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_EQUIPPED"));
        return;
    }
    
    if (item->IsExchanging())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_EXCHANGING"));
        return;
    }

    if (ch->CountSpecifyItem(71051) < 1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_ENOUGH_NEW_ATTRIBUTE"));
        return;
    }
    
    TItemTable const * pProto = item->GetProto();
    
    bool addontype = false;
    if (pProto && pProto->sAddonType)
        addontype = true;
    
    int attrtype0prob = number(1,5), attrtype1prob = number(1,5), attrtype2prob = number(1,5), attrtype3prob = number(1,5);
    // int attrtype1prob = number(1,5);
    // int attrtype2prob = number(1,5);
    // int attrtype3prob = number(1,5);
    
    bool error = false;
    if (addontype == false)
    {
        if (attrtype0 == attrtype1 || attrtype0 == attrtype2 || attrtype0 == attrtype3 || attrtype0 == item->GetAttributeType(4))
            error = true;
        if (attrtype1 == attrtype0 || attrtype1 == attrtype2 || attrtype1 == attrtype3 || attrtype1 == item->GetAttributeType(4))
            error = true;
        if (attrtype2 == attrtype0 || attrtype2 == attrtype0 || attrtype2 == attrtype3 || attrtype2 == item->GetAttributeType(4))
            error = true;
        if (attrtype3 == attrtype0 || attrtype3 == attrtype1 || attrtype3 == attrtype2 || attrtype3 == item->GetAttributeType(4))
            error = true;
        if (item->GetAttributeType(4) == attrtype0 || item->GetAttributeType(4) == attrtype1 || item->GetAttributeType(4) == attrtype2 || item->GetAttributeType(4) == attrtype3)
            error = true;
    }
    else
    {
        if (attrtype0 == attrtype1 || attrtype0 == item->GetAttributeType(4))
            error = true;
        if (attrtype1 == attrtype0 || attrtype1 == item->GetAttributeType(4))
            error = true;
    }

    for (int i=0; i < 4; ++i)
    {
        if (addontype == false)
        {
            if (item->GetAttributeType(i) == attrtype0 && i != 0)
                error = true;
            if (item->GetAttributeType(i) == attrtype1 && i != 1)
                error = true;
            if (item->GetAttributeType(i) == attrtype2 && i != 2)
                error = true;
            if (item->GetAttributeType(i) == attrtype3 && i != 3)
                error = true;
        }
        else
        {
            if (item->GetAttributeType(i+2) == attrtype0 && i != 0)
                error = true;
            if (item->GetAttributeType(i+2) == attrtype1 && i != 1)
                error = true;           
        }
    }
    if (error)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_ERROR"));
        return;
    }
    
    if (addontype == false)
    {
        item->AddNewAttr(0, attrtype0, attrtype0prob);
        item->AddNewAttr(1, attrtype1, attrtype1prob);
        item->AddNewAttr(2, attrtype2, attrtype2prob);
        item->AddNewAttr(3, attrtype3, attrtype3prob);
    }
    else
    {   
        int oldattr5type = item->GetAttributeType(4), oldattr5value = item->GetAttributeValue(4);
        // int oldattr5value = item->GetAttributeValue(4);

        item->RemoveAttributeAt(0);
        item->RemoveAttributeAt(1);   
        item->ApplyAddon(100);
        item->ChangeAttribute();
        item->AddNewAttr(2, attrtype0, attrtype0prob);
        item->AddNewAttr(3, attrtype1, attrtype1prob);   
        item->AddNewAttr(4, oldattr5type, oldattr5value);

        if (item->GetAttributeType(1) != 71)
        {
            if (item->GetAttributeType(0) != 72)
            {
                item->SetForceAttribute(0, 72, 13);
                item->SetForceAttribute(1, 71, 1);
            }
            else
                item->SetForceAttribute(1, 71, -1);
        }               
    }
    
    ch->RemoveSpecifyItem(71051, 1);
    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NEW_ATTRIBUTE_SUCCESS_ATTR"));
}
#endif
 
Üst