- Mesaj
- 194
- Çözümler
- 1
- Beğeni
- 20
- Puan
- 79
- Ticaret Puanı
- 0
kodu yeniledim bu
atrıema kagıtı 5 tane atıyor ve nesne kayıp olmuyor
atrıema kagıtı 5 tane atıyor ve nesne kayıp olmuyor
Kod:
// ACCESSORY_REFINE & ADD/CHANGE_ATTRIBUTES
case USE_PUT_INTO_BELT_SOCKET:
case USE_PUT_INTO_ACCESSORY_SOCKET:
case USE_ADD_ACCESSORY_SOCKET:
case USE_CLEAN_SOCKET:
case USE_CHANGE_ATTRIBUTE:
case USE_ADD_ATTRIBUTE:
case USE_ADD_ATTRIBUTE2:
{
LPITEM item2;
if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
return false;
if (ITEM_COSTUME == item2->GetType())
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
{
return false;
}
/*if (item2->IsEquipped())
{
BuffOnAttr_RemoveBuffsFromItem(item2);
}*/
switch (item->GetSubType())
{
case USE_CLEAN_SOCKET:
{
int i;
for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
{
if (item2->GetSocket(i) == ITEM_BROKEN_METIN_VNUM)
break;
}
if (i == ITEM_SOCKET_MAX_NUM)
{
NewChatPacket(NO_STONE_TO_CLEAR);
return false;
}
int j = 0;
for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
{
if (item2->GetSocket(i) != ITEM_BROKEN_METIN_VNUM && item2->GetSocket(i) != 0)
item2->SetSocket(j++, item2->GetSocket(i));
}
for (; j < ITEM_SOCKET_MAX_NUM; ++j)
{
if (item2->GetSocket(j) > 0)
item2->SetSocket(j, 1);
}
item->SetCount(item->GetCount() - 1);
break;
}
case USE_CHANGE_ATTRIBUTE:
{
if (item2->GetAttributeSetIndex() == -1)
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
if (item2->GetAttributeCount() == 0)
{
NewChatPacket(NO_ATTRIBUTES_TO_CHANE_ON_THE_ITEM);
return false;
}
//@1#140_START
if (BLOCKED_ATTR_LIST(item2->GetVnum()))
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
//@1#140_END
#ifdef ENABLE_6TH_7TH_ATTR
if (item->GetVnum() == 72351 || item->GetVnum() == 72346)
{
Change67Attr(item, item2);
return true;
}
#endif
#ifdef ENABLE_GREEN_ATTRIBUTE_CHANGER
if (item->GetVnum() == 71151)
{
if ((item2->GetType() == ITEM_WEAPON)
|| (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
{
bool bCanUse = true;
for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
{
if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
{
bCanUse = false;
break;
}
}
if (false == bCanUse)
{
NewChatPacket(YOU_DO_NOT_MEET_THE_NEEDS_OF_THIS_ITEM);
break;
}
}
else
{
NewChatPacket(THIS_CAN_BE_USED_IN_ONLY_WEAPONS_ARMORS);
break;
}
}
#endif
item2->ChangeAttribute();
#ifdef ENABLE_PLAYER_STATS_SYSTEM
PointChange(POINT_USE_ENCHANTED_ITEM, 1);
#endif
NewChatPacket(CHANGE_ATTRIBUTE_WAS_SUCCESFULL);
item->SetCount(item->GetCount() - 1);
break;
}
case USE_ADD_ATTRIBUTE:
{
if (item2->GetAttributeSetIndex() == -1)
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
//@1#140_START
if (BLOCKED_ATTR_LIST(item2->GetVnum()))
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
//@1#140_END
if (item2->IsExchanging())// @1#33
{
return false;
}
if (item2->IsEquipped())// @1#34
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
while (item2->GetAttributeCount() < 5)
{
item2->AddAttribute();
}
break;
}
case USE_ADD_ATTRIBUTE2:
{
if (item2->GetAttributeSetIndex() == -1)
{
NewChatPacket(CANT_CHANGE_THE_ATTRIBUTE_OF_THIS_ITEM);
return false;
}
if (item2->GetAttributeCount() == 4)
{
if (number(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
{
item2->AddAttribute();
NewChatPacket(ADDING_ATTRIBUTE_WAS_SUCCESSFULL);
}
else
{
NewChatPacket(ADDING_ATTRIBUTE_WAS_FAILED);
}
item->SetCount(item->GetCount() - 1);
}
else if (item2->GetAttributeCount() == 5)
{
NewChatPacket(CANT_ADD_MORE_BONUS_TO_THIS_ITEM);
}
else if (item2->GetAttributeCount() < 4)
{
NewChatPacket(TO_USE_THIS_YOU_NEED_FOR_BONUSSES_ON_THE_ITEM);
}
else
{
sys_err("ADD_ATTRIBUTE2 : Item has wrong AttributeCount(%d) item id %d owner %s itemvnum %d", item2->GetAttributeCount(), item2->GetID(), item2->GetOwner()->GetName(), item2->GetVnum());
}
break;
}
Son düzenleme: