v1453 Chaotic Generator Gem Kırlmıyor Yardim edermisiniz...
You must be registered for see images attach
void CUser::BifrostPieceProcess(Packet & pkt) // gem yok mu var mı bak
{
enum ResultOpCodes
{
Failed = 0,
Success = 1
};
enum ResultMessages
{
EffectNone = 0, // No effect
EffectRed = 1, // There will be better days.
EffectGreen = 2, // Don't be too disappointed. You're luck isn't that bad.
EffectWhite = 3 // It must be your lucky day.
};
uint16 nObjectID = 0;
uint32 nExchangeItemID = 0;
pkt >> nObjectID >> nExchangeItemID;
std::vector<uint32> ExchangeIndexList;
ResultOpCodes resultOpCode = Success;
ResultMessages resultMessage = EffectNone;
uint32 nItemID = 0;
uint8 sItemSlot = 0;
uint8 sExchangeItemSlot = 0;
sExchangeItemSlot = FindSlotForItem(nExchangeItemID, 1) - SLOT_MAX;
if (g_pMain->m_ItemExchangeArray.GetSize() > 0)
{
foreach_stlmap(itr, g_pMain->m_ItemExchangeArray)
{
if (itr->second->nOriginItemNum[0] == nExchangeItemID)
{
if (std::find(ExchangeIndexList.begin(), ExchangeIndexList.end(), itr->second->nIndex) == ExchangeIndexList.end())
ExchangeIndexList.push_back(itr->second->nIndex);
}
else
continue;
}
}
if (ExchangeIndexList.size() > 0)
{
uint32 randIndex = myrand(0, (ExchangeIndexList.size() - 1));
uint32 nExchangeID = ExchangeIndexList[randIndex];
_ITEM_EXCHANGE * pExchange = g_pMain->m_ItemExchangeArray.GetData(nExchangeID);
if (pExchange == nullptr
|| !CheckExchange(nExchangeID)
|| pExchange->bRandomFlag > 101
|| !CheckExistItemAnd(pExchange->nOriginItemNum[0], pExchange->sOriginItemCount[0], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
resultOpCode = Failed;
if (isTrading() || isMerchanting() || isMining() || m_bMerchantStatex == 1)
resultOpCode = Failed;
if (pExchange->bRandomFlag == 101 && resultOpCode == Success)
{
uint32 nTotalPercent = 0;
for (int i = 0; i < ITEMS_IN_EXCHANGE_GROUP; i++)
nTotalPercent += pExchange->sExchangeItemCount;
if (nTotalPercent > 10000)
resultOpCode = Failed;
if (resultOpCode == Success)
{
uint8 bRandArray[10000];
memset(&bRandArray, 0, sizeof(bRandArray));
uint16 sExchangeCount[ITEMS_IN_EXCHANGE_GROUP];
memcpy(&sExchangeCount, &pExchange->sExchangeItemCount, sizeof(pExchange->sExchangeItemCount));
int offset = 0;
for (int n = 0, i = 0; n < ITEMS_IN_EXCHANGE_GROUP; n++)
{
if (sExchangeCount[n] > 0)
{
memset(&bRandArray[offset], n, sExchangeCount[n]);
offset += sExchangeCount[n];
}
}
uint8 bRandSlot = bRandArray[myrand(0, 9999)];
nItemID = pExchange->nExchangeItemNum[bRandSlot];
sItemSlot = GetEmptySlot() - SLOT_MAX;
RobItem(pExchange->nOriginItemNum[0], 1);
GiveItem(nItemID, 1);
_ITEM_TABLE *pItem = g_pMain->m_ItemtableArray.GetData(nItemID);
if (pItem != nullptr)
{
if (pItem->m_ItemType == 4)
resultMessage = EffectWhite;
else if (pItem->m_ItemType == 5 || pItem->m_ItemType == 11 || pItem->m_ItemType == 12)
resultMessage = EffectGreen;
else
resultMessage = EffectRed;
//visualdev drop
bool HasObtained = true;
if (pItem->m_ItemType == 4 && pItem->ItemClass == 3 || pItem->m_ItemType == 4 && pItem->ItemClass == 4 || pItem->m_ItemType == 4 && pItem->ItemClass == 8)
///
}
}
}
}
Packet result(WIZ_ITEM_UPGRADE);
result << (uint8)ITEM_BIFROST_EXCHANGE << (uint8)resultOpCode << nItemID << sItemSlot << nExchangeItemID << sExchangeItemSlot << (uint8)resultMessage;
Send(&result);
result.clear();
result.SetOpcode(WIZ_OBJECT_EVENT);
result << (uint8)OBJECT_ARTIFACT << (uint8)resultMessage << nObjectID;
if (resultOpCode != Failed)
SendToRegion(&result);
}