Código:
//////Linha 254 Inicio //////
bool CEventInventory::EventInventoryInsertItemStack(LPOBJ lpObj,CItem* lpItem) // OK
{
#if(GAMESERVER_UPDATE>=802)
int MaxStack,CreateItemIndex;
if(lpItem->IsItem() == 0)
{
return 0;
}
if((MaxStack=gItemStack.GetItemMaxStack(lpItem->m_Index)) <= 0)
{
return 0;
}
for(int n=0;n < EVENT_INVENTORY_SIZE;n++)
{
if(lpObj->EventInventory[n].IsItem() != 0)
{
if(lpObj->EventInventory[n].m_Index == lpItem->m_Index && lpObj->EventInventory[n].m_Level == lpItem->m_Level && lpObj->EventInventory[n].m_SocketOptionBonus == lpItem->m_SocketOptionBonus)
{
if(lpObj->EventInventory[n].m_Durability < MaxStack)
{
int AddDur = (int)(MaxStack-lpObj->EventInventory[n].m_Durability);
AddDur = ((AddDur>lpItem->m_Durability)?(int)lpItem->m_Durability:AddDur);
lpItem->m_Durability -= AddDur;
lpObj->EventInventory[n].m_Durability += AddDur;
if(lpObj->EventInventory[n].m_Durability == MaxStack && (CreateItemIndex=gItemStack.GetCreateItemIndex(lpItem->m_Index)) != -1)
{
this->EventInventoryDelItem(lpObj->Index,n);
this->GCEventItemDeleteSend(lpObj->Index,n,1);
GDCreateItemSend(lpObj->Index,0xEB,0,0,CreateItemIndex,(BYTE)lpItem->m_Level,1,0,0,0,lpObj->Index,0,0,0,0,0,lpItem->m_SocketOptionBonus,0);
if(lpItem->m_Durability < 1){return 1;}
}
else
{
this->GCEventItemDurSend(lpObj->Index,n,(BYTE)lpObj->EventInventory[n].m_Durability);
if(lpItem->m_Durability < 1){return 1;}
}
}
}
}
}
return 0;
#else
return 0;
#endif
}
bool CEventInventory::EventInventoryAddItemStack(LPOBJ lpObj,int SourceSlot,int TargetSlot) // OK{
#if(GAMESERVER_UPDATE>=802)
int MaxStack,CreateItemIndex;
if(lpObj->EventInventory[SourceSlot].IsItem() == 0 || lpObj->EventInventory[TargetSlot].IsItem() == 0)
{
return 0;
}
if(lpObj->EventInventory[SourceSlot].m_Index != lpObj->EventInventory[TargetSlot].m_Index || lpObj->EventInventory[SourceSlot].m_Level != lpObj->EventInventory[TargetSlot].m_Level || lpObj->EventInventory[SourceSlot].m_SocketOptionBonus != lpObj->EventInventory[TargetSlot].m_SocketOptionBonus)
{
return 0;
}
if((MaxStack=gItemStack.GetItemMaxStack(lpObj->EventInventory[SourceSlot].m_Index)) <= 0)
{
return 0;
}
if(lpObj->EventInventory[TargetSlot].m_Durability >= MaxStack)
{
return 0;
}
int AddDur = (int)(MaxStack-lpObj->EventInventory[TargetSlot].m_Durability);
AddDur = ((AddDur>lpObj->EventInventory[SourceSlot].m_Durability)?(int)lpObj->EventInventory[SourceSlot].m_Durability:AddDur);
lpObj->EventInventory[SourceSlot].m_Durability -= AddDur;
lpObj->EventInventory[TargetSlot].m_Durability += AddDur;
if(lpObj->EventInventory[TargetSlot].m_Durability == MaxStack && (CreateItemIndex=gItemStack.GetCreateItemIndex(lpObj->EventInventory[SourceSlot].m_Index)) != -1)
{
this->EventInventoryDelItem(lpObj->Index,TargetSlot);
this->GCEventItemDeleteSend(lpObj->Index,TargetSlot,1);
GDCreateItemSend(lpObj->Index,0xEB,0,0,CreateItemIndex,(BYTE)lpObj->EventInventory[SourceSlot].m_Level,0,0,0,0,lpObj->Index,0,0,0,0,0,lpObj->EventInventory[SourceSlot].m_SocketOptionBonus,0);
}
else
{
this->GCEventItemDurSend(lpObj->Index,TargetSlot,(BYTE)lpObj->EventInventory[TargetSlot].m_Durability);
}
if(lpObj->EventInventory[SourceSlot].m_Durability < 1)
{
this->EventInventoryDelItem(lpObj->Index,SourceSlot);
this->GCEventItemDeleteSend(lpObj->Index,SourceSlot,1);
}
return 1;
#else
return 0;
#endif
}
////linha 370 fim///
/////////linha 507 inicio ////////
int CItemManager::GetInventoryItemCount(LPOBJ lpObj,int index,int level) // OK
{
int count = 0;
int MaxValue = this->GetInventoryMaxValue(lpObj);
for(int n=0;n < MaxValue;n++)
{
if(lpObj->Inventory[n].IsItem() != 0)
{
if(lpObj->Inventory[n].m_Index == index && (level == -1 || lpObj->Inventory[n].m_Level == level))
{
if(gItemStack.GetItemMaxStack(lpObj->Inventory[n].m_Index) == 0)
{
count++;
}
else
{
count += (int)lpObj->Inventory[n].m_Durability;
}
}
}
}
return count;
}
///Linha 532 Fim///
/////////Linha 1178 Inicio////////
bool CItemManager::InventoryInsertItemStack(LPOBJ lpObj,CItem* lpItem) // OK
{
int MaxStack,CreateItemIndex;
if(lpItem->IsItem() == 0)
{
return 0;
}
if((MaxStack=gItemStack.GetItemMaxStack(lpItem->m_Index)) <= 0)
{
return 0;
}
int MaxValue = this->GetInventoryMaxValue(lpObj);
for(int n=INVENTORY_WEAR_SIZE;n < MaxValue;n++)
{
if(lpObj->Inventory[n].IsItem() != 0)
{
if(lpObj->Inventory[n].m_Index == lpItem->m_Index && lpObj->Inventory[n].m_Level == lpItem->m_Level && lpObj->Inventory[n].m_SocketOptionBonus == lpItem->m_SocketOptionBonus)
{
if(lpObj->Inventory[n].m_Durability < MaxStack)
{
int AddDur = (int)(MaxStack-lpObj->Inventory[n].m_Durability);
AddDur = ((AddDur>lpItem->m_Durability)?(int)lpItem->m_Durability:AddDur);
lpItem->m_Durability -= AddDur;
lpObj->Inventory[n].m_Durability += AddDur;
if(lpObj->Inventory[n].m_Durability == MaxStack && (CreateItemIndex=gItemStack.GetCreateItemIndex(lpItem->m_Index)) != -1)
{
this->InventoryDelItem(lpObj->Index,n);
this->GCItemDeleteSend(lpObj->Index,n,1);
GDCreateItemSend(lpObj->Index,0xEB,0,0,CreateItemIndex,(BYTE)lpItem->m_Level,1,0,0,0,lpObj->Index,0,0,0,0,0,lpItem->m_SocketOptionBonus,0);
if(lpItem->m_Durability < 1){return 1;}
}
else
{
this->GCItemDurSend(lpObj->Index,n,(BYTE)lpObj->Inventory[n].m_Durability,0);
if(lpItem->m_Durability < 1){return 1;}
}
}
}
}
}
return 0;
}
bool CItemManager::InventoryAddItemStack(LPOBJ lpObj,int SourceSlot,int TargetSlot) // OK{
int MaxStack,CreateItemIndex;
if(lpObj->Inventory[SourceSlot].IsItem() == 0 || lpObj->Inventory[TargetSlot].IsItem() == 0)
{
return 0;
}
if(lpObj->Inventory[SourceSlot].m_Index != lpObj->Inventory[TargetSlot].m_Index || lpObj->Inventory[SourceSlot].m_Level != lpObj->Inventory[TargetSlot].m_Level || lpObj->Inventory[SourceSlot].m_SocketOptionBonus != lpObj->Inventory[TargetSlot].m_SocketOptionBonus)
{
return 0;
}
if((MaxStack=gItemStack.GetItemMaxStack(lpObj->Inventory[SourceSlot].m_Index)) <= 0)
{
return 0;
}
if(lpObj->Inventory[TargetSlot].m_Durability >= MaxStack)
{
return 0;
}
int AddDur = (int)(MaxStack-lpObj->Inventory[TargetSlot].m_Durability);
AddDur = ((AddDur>lpObj->Inventory[SourceSlot].m_Durability)?(int)lpObj->Inventory[SourceSlot].m_Durability:AddDur);
lpObj->Inventory[SourceSlot].m_Durability -= AddDur;
lpObj->Inventory[TargetSlot].m_Durability += AddDur;
if(lpObj->Inventory[TargetSlot].m_Durability == MaxStack && (CreateItemIndex=gItemStack.GetCreateItemIndex(lpObj->Inventory[SourceSlot].m_Index)) != -1)
{
this->InventoryDelItem(lpObj->Index,TargetSlot);
this->GCItemDeleteSend(lpObj->Index,TargetSlot,1);
GDCreateItemSend(lpObj->Index,0xEB,0,0,CreateItemIndex,(BYTE)lpObj->Inventory[SourceSlot].m_Level,0,0,0,0,lpObj->Index,0,0,0,0,0,lpObj->Inventory[SourceSlot].m_SocketOptionBonus,0);
}
else
{
this->GCItemDurSend(lpObj->Index,TargetSlot,(BYTE)lpObj->Inventory[TargetSlot].m_Durability,0);
}
if(lpObj->Inventory[SourceSlot].m_Durability < 1)
{
this->InventoryDelItem(lpObj->Index,SourceSlot);
this->GCItemDeleteSend(lpObj->Index,SourceSlot,1);
}
return 1;
}
//// Linha 1280 Fim
/////////////////Linha 1970 Inicio///////////
int MaxStack = gItemStack.GetItemMaxStack(lpItem->m_Index);
//////// Linha 1970 fim///////
/////////////////Linha 2088 Inicio///////////
void CItemManager::DeleteInventoryItemCount(LPOBJ lpObj,int index,int level,int count) // OK
{
int MaxValue = this->GetInventoryMaxValue(lpObj);
for(int n=0;n < MaxValue,count > 0;n++)
{
if(lpObj->Inventory[n].IsItem() != 0)
{
if(lpObj->Inventory[n].m_Index == index && lpObj->Inventory[n].m_Level == level)
{
if(gItemStack.GetItemMaxStack(lpObj->Inventory[n].m_Index) <= 0)
{
this->InventoryDelItem(lpObj->Index,n);
this->GCItemDeleteSend(lpObj->Index,n,1);
count--;
}
else
{
if(lpObj->Inventory[n].m_Durability > count)
{
lpObj->Inventory[n].m_Durability -= count;
this->GCItemDurSend(lpObj->Index,n,(BYTE)lpObj->Inventory[n].m_Durability,0);
count = 0;
}
else
{
count -= (int)lpObj->Inventory[n].m_Durability;
this->InventoryDelItem(lpObj->Index,n);
this->GCItemDeleteSend(lpObj->Index,n,1);
}
}
}
}
}
}
//////////Linha 2122 Fim////////
ItemValue.cpp: