bool COfflineShopManager::WithdrawAllMoney(LPCHARACTER ch)
{
unsigned int maxGold = 2147483647;
if(ch->GetGold() + llMoneyToGet > maxGold)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bankadan çekilen tutar yang limitini geçiyor!"));
return false;
}
if (!ch)
return false;
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT gold_offlineshop FROM player.player WHERE id = %u", ch->GetPlayerID()));
if (pMsg->Get()->uiNumRows == 0)
return false;
// BEGIN_MAX_YANG
int llBankMoney = 0, llMoneyToGet = 0;
// END_OF_MAX_YANG
bool bGiveLittleMoney = false; // for prevent bug GOLD_MAX in the bank
MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
str_to_number(llBankMoney, row[0]);
if (llBankMoney <= 0)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank is empty!"));
return false;
}
if (llBankMoney > GOLD_MAX)
{
bGiveLittleMoney = true;
llMoneyToGet = 100000000;
}
else
llMoneyToGet = llBankMoney;
bool isOverFlow = ch->GetGold() + llMoneyToGet > GOLD_MAX - 1 ? true : false;
if (isOverFlow)
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You carry a lot of money."));
return false;
}
ch->SetMyOfflineShopTime();
ch->PointChange(POINT_GOLD, llMoneyToGet, false);
DBManager::instance().DirectQuery("UPDATE player.player SET gold_offlineshop = gold_offlineshop - %d WHERE id = %u", llMoneyToGet, ch->GetPlayerID());
if (bGiveLittleMoney)
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Some money was withdrawn."));
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bank %d money."), llMoneyToGet);
char pszConv[32];
sprintf(pszConv, "%d", llMoneyToGet);
LogManager::instance().OfflineShopLog(ch->GetDesc()->GetAccountTable().id, pszConv, "FETCH_MONEY");
return true;
}