fix: RESULT_SAFEBOX_LOAD.
This commit is contained in:
parent
74e9f0e99d
commit
42fd697dac
@ -747,6 +747,21 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer *pkPeer, ClientHandleInfo *pi, pq
|
|||||||
|
|
||||||
typeof(pSet->begin()) it = pSet->begin();
|
typeof(pSet->begin()) it = pSet->begin();
|
||||||
|
|
||||||
|
auto pool = CDBManager::instance().GetConnectionPool();
|
||||||
|
auto conn = pool->acquire();
|
||||||
|
|
||||||
|
pqxx::work txn{*conn};
|
||||||
|
|
||||||
|
static bool prepared = false;
|
||||||
|
if (!prepared)
|
||||||
|
{
|
||||||
|
conn->prepare("result_safebox_load_insert_item",
|
||||||
|
"INSERT INTO player.item (id, owner_id, window, position, vnum, count, socket_0, socket_1, socket_2) "
|
||||||
|
"VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING id");
|
||||||
|
|
||||||
|
prepared = true;
|
||||||
|
}
|
||||||
|
|
||||||
while (it != pSet->end())
|
while (it != pSet->end())
|
||||||
{
|
{
|
||||||
TItemAward *pItemAward = *(it++);
|
TItemAward *pItemAward = *(it++);
|
||||||
@ -847,17 +862,20 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer *pkPeer, ClientHandleInfo *pi, pq
|
|||||||
|
|
||||||
{
|
{
|
||||||
itertype(m_map_itemTableByVnum) it = m_map_itemTableByVnum.find(dwItemVnum);
|
itertype(m_map_itemTableByVnum) it = m_map_itemTableByVnum.find(dwItemVnum);
|
||||||
|
|
||||||
if (it == m_map_itemTableByVnum.end())
|
if (it == m_map_itemTableByVnum.end())
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("Invalid item(vnum : {}). It is not in m_map_itemTableByVnum.", dwItemVnum);
|
SPDLOG_ERROR("Invalid item(vnum : {}). It is not in m_map_itemTableByVnum.", dwItemVnum);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TItemTable *item_table = it->second;
|
TItemTable *item_table = it->second;
|
||||||
if (item_table == NULL)
|
if (item_table == NULL)
|
||||||
{
|
{
|
||||||
SPDLOG_ERROR("Invalid item_table (vnum : {}). It's value is NULL in m_map_itemTableByVnum.", dwItemVnum);
|
SPDLOG_ERROR("Invalid item_table (vnum : {}). It's value is NULL in m_map_itemTableByVnum.", dwItemVnum);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == pItemAward->dwSocket0)
|
if (0 == pItemAward->dwSocket0)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < ITEM_LIMIT_MAX_NUM; i++)
|
for (int i = 0; i < ITEM_LIMIT_MAX_NUM; i++)
|
||||||
@ -884,21 +902,15 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer *pkPeer, ClientHandleInfo *pi, pq
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pool = CDBManager::instance().GetConnectionPool();
|
|
||||||
auto conn = pool->acquire();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pqxx::work txn{*conn};
|
pqxx::result res = txn.exec_prepared(
|
||||||
pqxx::result res = txn.exec_params(
|
"result_safebox_load_insert_item",
|
||||||
"INSERT INTO player.item (id, owner_id, window, position, vnum, count, socket_0, socket_1, socket_2) "
|
GainItemID(),
|
||||||
"VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING id",
|
pi->account_id,
|
||||||
pqxx::params{
|
pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
|
||||||
GainItemID(),
|
iPos,
|
||||||
pi->account_id,
|
pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, dwSocket2);
|
||||||
pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
|
|
||||||
iPos,
|
|
||||||
pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, dwSocket2});
|
|
||||||
|
|
||||||
SPDLOG_DEBUG("SAFEBOX Query");
|
SPDLOG_DEBUG("SAFEBOX Query");
|
||||||
|
|
||||||
@ -917,8 +929,6 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer *pkPeer, ClientHandleInfo *pi, pq
|
|||||||
|
|
||||||
vec_dwFinishedAwardID.push_back(std::make_pair(pItemAward->dwID, item.id));
|
vec_dwFinishedAwardID.push_back(std::make_pair(pItemAward->dwID, item.id));
|
||||||
grid.Put(iPos, 1, it->second->bSize);
|
grid.Put(iPos, 1, it->second->bSize);
|
||||||
|
|
||||||
txn.commit();
|
|
||||||
}
|
}
|
||||||
catch (const std::exception &e)
|
catch (const std::exception &e)
|
||||||
{
|
{
|
||||||
@ -927,6 +937,8 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer *pkPeer, ClientHandleInfo *pi, pq
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
txn.commit();
|
||||||
|
|
||||||
for (DWORD i = 0; i < vec_dwFinishedAwardID.size(); ++i)
|
for (DWORD i = 0; i < vec_dwFinishedAwardID.size(); ++i)
|
||||||
ItemAwardManager::instance().Taken(vec_dwFinishedAwardID[i].first, vec_dwFinishedAwardID[i].second);
|
ItemAwardManager::instance().Taken(vec_dwFinishedAwardID[i].first, vec_dwFinishedAwardID[i].second);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user