- 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?
"Seçilen bonus sırası ile nesnedeki bonus sırası aynı olmalıdır."
Bunu nasıl kaldırabilirim?
C++:
#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