Fix bug BankItem.
bool BCustomItemBank::CongTruBank(int aIndex, int ItemIndex, int ItemLevel, int Vaule)
{
if (gObj[aIndex].Type != OBJECT_USER || Vaule == 0)
{
return false;
}
if (gObjIsConnected(aIndex) == false)
{
return false;
}
if (gObj[aIndex].IsBot >= 1 || gObj[aIndex].m_OfflineMode != 0 /*|| gObj[aIndex].IsFakeOnline != 0*/)
{
return false;
}
if (!this->Enable)
{
return false;
}
for (int n = 0; n < 100; n++)
{
if (gObj[aIndex].BankJewelData[n].ItemIndex == -1) continue;
int mSlot = this->CheckInfoListItemBank(ItemIndex, ItemLevel);
if (mSlot == -1) continue;
if (gObj[aIndex].BankJewelData[n].ItemIndex == ItemIndex &&
gObj[aIndex].BankJewelData[n].ItemLevel == ItemLevel)
{
int beforeCount = gObj[aIndex].BankJewelData[n].ItemCount; // Số dư trước
if (Vaule > 0) // Gửi vào ngân hàng
{
if ((Vaule + beforeCount) > this->mListItemBank[mSlot].MaxCountType[gObj[aIndex].AccountLevel])
{
gNotice.GCNoticeSend(aIndex, 1, 0, 0, 0, 0, 0,
this->GetMessage(3),
gItemLevel.GetItemName(this->mListItemBank[mSlot].ItemIndex, this->mListItemBank[mSlot].ItemLevel),
this->mListItemBank[mSlot].MaxCountType[gObj[aIndex].AccountLevel]);
return false;
}
gObj[aIndex].BankJewelData[n].ItemCount += Vaule;
gNotice.GCNoticeSend(aIndex, 1, 0, 0, 0, 0, 0,
this->GetMessage(4), Vaule,
gItemLevel.GetItemName(ItemIndex, ItemLevel));
}
else if (Vaule < 0) // Rút từ ngân hàng
{
if ((beforeCount + Vaule) < 0)
{
gNotice.GCNoticeSend(aIndex, 1, 0, 0, 0, 0, 0,
this->GetMessage(2));
return false;
}
gObj[aIndex].BankJewelData[n].ItemCount += Vaule;
gNotice.GCNoticeSend(aIndex, 1, 0, 0, 0, 0, 0,
this->GetMessage(5), Vaule,
gItemLevel.GetItemName(ItemIndex, ItemLevel));
}
int afterCount = gObj[aIndex].BankJewelData[n].ItemCount; // Số dư sau
// ===== Lưu DB ngay sau khi thay đổi =====
this->GSSendDSSaveDataUser(aIndex);
// Gửi thông tin mới về client
this->UserSendClientInfo(aIndex);
return true;
}
}
return false;
}