@@ -1794,6 +1794,25 @@ void SmallPacket0x034(MapSession* const PSession, CCharEntity* const PChar, CBas
17941794 PItem->setReserve (quantity + PItem->getReserve ());
17951795 PChar->UContainer ->SetItem (tradeSlotID, PItem);
17961796 }
1797+
1798+ if (settings::get<bool >(" map.AUDIT_PLAYER_TRADES" ))
1799+ {
1800+ Async::getInstance ()->submit (
1801+ [itemID = PItem->getID (),
1802+ quantity = quantity,
1803+ sender = PChar->id ,
1804+ sender_name = PChar->getName (),
1805+ receiver = PTarget->id ,
1806+ receiver_name = PTarget->getName (),
1807+ date = static_cast <uint32>(time (nullptr ))]()
1808+ {
1809+ const auto query = " INSERT INTO audit_trade(itemid, quantity, sender, sender_name, receiver, receiver_name, date) VALUES (?, ?, ?, ?, ?, ?, ?)" ;
1810+ if (!db::preparedStmt (query, itemID, quantity, sender, sender_name, receiver, receiver_name, date))
1811+ {
1812+ ShowErrorFmt (" Failed to log trade transaction (item: {}, quantity: {}, sender: {}, receiver: {}, date: {})" , itemID, quantity, sender, receiver, date);
1813+ }
1814+ });
1815+ }
17971816 }
17981817 else
17991818 {
@@ -1880,6 +1899,25 @@ void SmallPacket0x036(MapSession* const PSession, CCharEntity* const PChar, CBas
18801899 return ;
18811900 }
18821901
1902+ if (settings::get<bool >(" map.AUDIT_PLAYER_TRADES" ))
1903+ {
1904+ Async::getInstance ()->submit (
1905+ [itemID = PItem->getID (),
1906+ quantity = Quantity,
1907+ sender = PChar->id ,
1908+ sender_name = PChar->getName (),
1909+ receiver = PNpc->id ,
1910+ receiver_name = PNpc->getName (),
1911+ date = static_cast <uint32>(time (nullptr ))]()
1912+ {
1913+ const auto query = " INSERT INTO audit_trade(itemid, quantity, sender, sender_name, receiver, receiver_name, date) VALUES (?, ?, ?, ?, ?, ?, ?)" ;
1914+ if (!db::preparedStmt (query, itemID, quantity, sender, sender_name, receiver, receiver_name, date))
1915+ {
1916+ ShowErrorFmt (" Failed to log trade transaction (item: {}, quantity: {}, sender: {}, receiver: {}, date: {})" , itemID, quantity, sender, receiver, date);
1917+ }
1918+ });
1919+ }
1920+
18831921 PItem->setReserve (Quantity);
18841922 PChar->TradeContainer ->setItem (slotID, PItem->getID (), invSlotID, Quantity, PItem);
18851923 }
@@ -4116,6 +4154,25 @@ void SmallPacket0x085(MapSession* const PSession, CCharEntity* const PChar, CBas
41164154
41174155 const auto cost = quantity * PItem->getBasePrice ();
41184156
4157+ if (settings::get<bool >(" map.AUDIT_PLAYER_VENDOR" ))
4158+ {
4159+ Async::getInstance ()->submit (
4160+ [itemid = PItem->getID (),
4161+ quantity = quantity,
4162+ seller = PChar->id ,
4163+ seller_name = PChar->getName (),
4164+ baseprice = PItem->getBasePrice (),
4165+ totalprice = cost,
4166+ time = static_cast <uint32>(time (nullptr ))]()
4167+ {
4168+ const auto query = " INSERT INTO audit_vendor(itemid, quantity, seller, seller_name, baseprice, totalprice, date) VALUES (?, ?, ?, ?, ?, ?, ?)" ;
4169+ if (!db::preparedStmt (query, itemid, quantity, seller, seller_name, baseprice, totalprice, time))
4170+ {
4171+ ShowErrorFmt (" Failed to log vendor sale (item: {}, quantity: {}, seller: {}, totalprice: {}, time: {})" , itemid, quantity, seller, totalprice, time);
4172+ }
4173+ });
4174+ }
4175+
41194176 charutils::UpdateItem (PChar, LOC_INVENTORY, 0 , cost);
41204177 charutils::UpdateItem (PChar, LOC_INVENTORY, slotID, -(int32)quantity);
41214178 ShowInfo (" SmallPacket0x085: Player '%s' sold %u of itemID %u (Total: %u gil) [to VENDOR] " , PChar->getName (), quantity, itemID, cost);
@@ -7135,6 +7192,26 @@ void SmallPacket0x106(MapSession* const PSession, CCharEntity* const PChar, CBas
71357192 return ;
71367193 }
71377194
7195+ if (settings::get<bool >(" map.AUDIT_PLAYER_BAZAAR" ))
7196+ {
7197+ Async::getInstance ()->submit (
7198+ [itemID = PItem->getID (),
7199+ quantity = Quantity,
7200+ sellerID = PTarget->id ,
7201+ sellerName = PTarget->getName (),
7202+ purchaserID = PChar->id ,
7203+ purchaserName = PChar->getName (),
7204+ price = PriceWithTax,
7205+ date = static_cast <uint32>(time (nullptr ))]
7206+ {
7207+ const auto query = " INSERT INTO audit_bazaar(itemid, quantity, seller, seller_name, purchaser, purchaser_name, price, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" ;
7208+ if (!db::preparedStmt (query, itemID, quantity, sellerID, sellerName, purchaserID, purchaserName, price, date))
7209+ {
7210+ ShowErrorFmt (" Failed to log bazaar purchase (ItemID: {}, Quantity: {}, Seller: {}, Purchaser: {}, Price: {})" , itemID, quantity, sellerName, purchaserName, price);
7211+ }
7212+ });
7213+ }
7214+
71387215 charutils::UpdateItem (PChar, LOC_INVENTORY, 0 , -(int32)PriceWithTax);
71397216 charutils::UpdateItem (PTarget, LOC_INVENTORY, 0 , Price);
71407217
0 commit comments