📄 auction.cpp
字号:
// Auction.cpp: implementation of the CAuction class.
//
//////////////////////////////////////////////////////////////////////
#include "..\stdafx.h"
#include "CItem.h"
#include "Auction.h"
#include "DefaultHeader.h"
#include "DR_NETWORK.h"
#include "GMMGR.h"
#include "LogManager.h" // BBD 040226
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAuction Auction;
const SUPERMONEY SM1(BOND_MONEY_1000 ,1000000000);
const SUPERMONEY SM2(BOND_MONEY_500 ,500000000);
const SUPERMONEY SM3(BOND_MONEY_100 ,100000000);
const SUPERMONEY SM4(BOND_MONEY_50 ,50000000);
const SUPERMONEY SM5(BOND_MONEY_10 ,10000000);
const SUPERMONEY SM6(BOND_MONEY_5 ,5000000);
const SUPERMONEY aBondMoney[BOND_MONEY_MAX] = {SM1,SM2,SM3,SM4,SM5,SM6};
CAuction::CAuction()
{
Clear();
}
CAuction::~CAuction()
{
Clear();
}
void CAuction::Clear()
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 备概啊瓷 前格 府胶飘 罐扁 矫累
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//soto-030514
void CAuction::RecvCMD_MERCHANT_BUY_LIST_REQUEST(const int cn,t_packet &p)//府胶飘 夸没(备概磊啊 焊绰巴//八祸扁啊 龋免
{
CHARLIST *ch = CheckServerId(cn);
if(!ch) {return;}
//努扼捞攫飘侩 菩哦阑 罐酒辑 辑滚侩 菩哦栏肺 父电促
t_packet sp;
sp.h.header.type = CMD_MERCHANT_BUY_ITEM_SEARCH_SERVER;
sp.h.header.size = sizeof(SEARCHPACKETSERVER);
memcpy(sp.u.SearchPacketServer.szName,ch->Name,20);
sp.u.SearchPacketServer.szName[20] = 0;
sp.u.SearchPacketServer.iCn = ch->GetServerID();
memcpy(&sp.u.SearchPacketServer.ClientMsg, &p.u.SearchPacketClient,sizeof(t_SearchPacketClient));
::QueuePacket(connections,DB_DEMON,&sp,1);
}
void CAuction::RecvCMD_MERCHANT_BUY_LIST_REQUEST_RESULT(t_packet &p)//府胶飘 搬苞(备概磊啊 焊绰巴(DB_DEMON捞 焊郴坷绰巴阑 努扼捞攫飘肺 傈价
{
const int cn = p.u.SearchResultList.iCn;
CHARLIST * ch = CheckServerId(cn);
if(!ch){return;}
if(!strcmp(ch->Name,p.u.SearchResultList.szName))//捞抚 八祸饶 努扼捞攫飘肺 胶困莫
{
::QueuePacket(connections,cn,&p,1);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 备概啊瓷 前格 府胶飘 罐扁 场
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 备概 窍扁 矫累(备概磊)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CAuction::RecvCMD_MERCHANT_ITEM_BUY(const int cn,t_packet &p)//备概窍扁(备概磊啊 急琶
{//捞芭 混 荐 乐衬?
//叼厚俊 备概 啊瓷茄瘤 拱绢焊绊 IS_END_BUYING 栏肺 悸泼 茄促
//捣阑 眉农茄促 //牢亥配府绰 眉农 救茄促(搬苞拱 茫扁俊辑 茄促)
if(p.u.MerchantItemBuy.iCn != cn){return;}
CHARLIST *ch = CheckServerId(cn);
if(!ch){return;}
if(strcmp(p.u.MerchantItemBuy.szBuyerName, ch->Name)){return;}//捞抚捞 撇妨
const int iSellValue = (int)p.u.MerchantItemBuy.dwSellValue;
if(iSellValue >= 0 && ch->GetBankMoney() < iSellValue)//酒捞袍 啊拜 焊促 捣捞 累栏骨肺 公瓤
{//篮青捣 寇俊 牢亥配府 捣阑 集栏搁 滑锭 绢菲促.
::OutMessage(ch,2,12);//烙矫,, 备涝陛捞 葛磊而聪促.
return;
}
else
{//捣篮 乐促 啊焊磊~
p.h.header.type = CMD_MERCHANT_ITEM_BUY_COMFORM;//鸥涝 傈券
::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊霸 焊忱聪促.
}
}
void CAuction::RecvCMD_MERCHANT_ITEM_BUY_COMFORM_RESULT(const int iCn,t_packet &p)//备概吝栏肺 傈券 沁促
{ //捣阑 化绊 捣扁废 窍扼绰 巴阑 叼厚俊霸 焊辰促 捣 给化栏搁 扁废 秒家甫 概变促 IsEnd =0
//荤档 亮促绰 翠捞 坷搁 IS_END_WAIT_TAKE 栏肺 秦 林绊 酒聪搁 IS_END_ALL_RIGHT 栏肺 倒妨霖促.
const int iUserCn = p.u.MerchantItemBuy.iCn;
CHARLIST *ch = ::CheckServerId(iUserCn);
if(!ch){return;}
if(::strcmp(ch->Name,p.u.MerchantItemBuy.szBuyerName)){return;}
const int iIndex = p.u.MerchantItemBuy.iIndex;
const DWORD dwSellValue = p.u.MerchantItemBuy.dwSellValue;
if(IS_END_BUYING == p.u.MerchantItemBuy.iKey)//备涝 啊瓷 惑怕
{
const DWORD dwBuyValue = dwSellValue;//dwSellValue绰 DB波甫 罐酒柯促
if(!dwSellValue)//流立 芭贰葛靛
{ //惑措甫 茫酒辑 倾啊甫 罐酒具 茄促
//惑怕 傈券捞 等 惑怕.
//滴仇俊霸 背券芒阑 剁快扼绊 窍绊.
//芭贰啊 秒家登搁 IS_END_ALL_RIGHT 肺 官操绊
//芭贰啊 己傍 窍搁 IS_END_WAIT_TAKE肺 父甸绢 霖促
K_ITEM tempK_Item;
tempK_Item.item_attr = p.u.MerchantItemBuy.SellItem;
tempK_Item.item_pos.type = AUCTION_DB;
tempK_Item.item_pos.p1 = LOWORD(iIndex); // 030929 HK YGI
tempK_Item.item_pos.p2 = HIWORD(iIndex); // 030929 HK YGI
CHARLIST *pSeller = ::CheckServerId(ExistHe(p.u.MerchantItemBuy.szSellerName));
if( pSeller)//魄概磊啊 乐促 芭府啊 7 鸥老 捞惑捞促
{//021121 lsw
int Gab = ((int )(::sqrt( ::pow((pSeller->X - ch->X), 2)+pow((pSeller->Y - ch->Y), 2) ) / TILE_SIZE));
if( 7 > Gab )
{
if(::RecvItemExchange( &tempK_Item, iUserCn , pSeller->GetServerID() ,EXCHANGE_TYPE_MERCHANT_DIRECT))//背券夸没 己傍
{//付摹 惑牢捞 脚没 窍绰巴 贸烦 弊犯霸 秦具 搬苞拱 酒捞袍捞 吧赴促 iUserCn 救官差霸 炼缴
return;
}
}
}
//魄概磊啊 绝促芭唱 芭府啊 钢促搁
p.u.MerchantItemBuy.iKey = IS_END_ALL_RIGHT;
}
else
{ //< CSD-030723
if (ch->DecBankMoney(dwBuyValue, BMCT_AUCTION_ITEM_BUY))
{ // 捣阑 罐疽促搁
p.u.MerchantItemBuy.iKey = IS_END_WAIT_TAKE;
}
else
{
p.u.MerchantItemBuy.iKey = IS_END_ALL_RIGHT;
}
} //> CSD-030723
p.h.header.type = CMD_MERCHANT_ITEM_BUY_COMFORM_RESULT;
::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊 备概啊瓷茄瘤 拱绢夯促
}
else//备涝 阂啊匙.. 构 绢露电..
{//叼厚俊促 且 老篮 绝绊. 努扼捞攫飘俊霸 给荤霸 登菌促绰 富阑 傈秦 林磊
p.h.header.type = CMD_MERCHANT_ITEM_BUY_RESULT;
::QueuePacket(connections,iUserCn,&p,1);//叼厚俊 备概啊瓷茄瘤 拱绢夯促
}
}
void CAuction::SendCMD_MERCHANT_ITEM_BUY_COMFORM_RESULT(CHARLIST *ch, const int iIndex, const ITEMATTR &Item, const bool bSuccess)
{//流立 芭贰矫 秒家 登芭唱 己傍 沁阑锭 荤侩 窍绰 何盒
//芭贰 秒家 登芭唱 沁阑锭 绝俊 林绰 何盒
t_packet p;
p.h.header.type = CMD_MERCHANT_ITEM_BUY_COMFORM_RESULT;
p.h.header.size = sizeof(MERCHANT_ITEM_BUY);
lpMERCHANTITEMBUY pSend = &p.u.MerchantItemBuy;
pSend->iIndex = iIndex;//备涝且 酒捞袍狼 牢郸胶 蔼
pSend->iCn = ch->GetServerID();//目池记 蔼
::strcpy(pSend->szSellerName,ch->Name);//魄概磊 捞抚
::strcpy(pSend->szBuyerName ,ch->GetExchangeTargetName());//备概磊 捞抚
pSend->dwSellValue = 0;//0盔捞促 流立芭贰聪鳖..
pSend->SellItem = Item;
pSend->iKey = ((bSuccess)?IS_END_WAIT_TAKE:IS_END_ALL_RIGHT);
::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊 备概啊瓷茄瘤 拱绢夯促
}
void CAuction::RecvCMD_MERCHANT_ITEM_BUY_RESULT(t_packet &p)//备概窍扁(备概磊啊 急琶
{
const int iUserCn = p.u.MerchantItemBuy.iCn;
CHARLIST *ch = ::CheckServerId(iUserCn);
if(!ch){return;}//荤摆促带 仇捞 唱艾嚼聪促.
if(strcmp(p.u.MerchantItemBuy.szBuyerName, ch->Name)){return;}//捞抚捞 撇妨
::QueuePacket(connections,iUserCn,&p,1);//努扼捞攫飘肺 搬苞甫 焊忱聪促.
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 备概 窍扁 场(备概磊)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 魄概磊啊 迫绊 乐绰 府胶飘 罐扁 矫累(魄概磊)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CAuction::RecvCMD_MERCHANT_SELL_LIST_REQUEST(const int cn,t_packet &p)//府胶飘 夸没(魄概磊啊 焊绰巴
{
if(cn == p.u.SellerItemRequest.iCn)
{
CHARLIST * ch = CheckServerId(cn);
if(!ch){return;}
if(!strcmp(ch->Name,p.u.SellerItemRequest.szName))//捞抚 八祸饶 努扼捞攫飘肺 胶困莫
if(!GMMgr.IsMerchant(ch)){return;}
::QueuePacket(connections,DB_DEMON,&p,1);
}
}
void CAuction::RecvCMD_MERCHANT_SELL_LIST_REQUEST_RESULT(t_packet &p)//府胶飘 搬苞(魄概磊啊 焊绰巴 叼厚 单阁捞 焊辰吧 努扼捞攫飘肺 胶困莫
{
const int cn = p.u.SearchResultList.iCn;
CHARLIST * ch = CheckServerId(cn);
if(!ch){return;}
if(!strcmp(ch->Name,p.u.SearchResultList.szName))//捞抚 八祸饶 努扼捞攫飘肺 胶困莫
{
if(!GMMgr.IsMerchant(ch)){return;}
::QueuePacket(connections,cn,&p,1);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 魄概磊啊 迫绊 乐绰 府胶飘 罐扁 场(魄概磊)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 昏力 窍扁 矫累(魄概 秒家)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//C 昏力啊瓷? ->M 磊府眉农窍绊 叼厚茄抛 拱绢杭膊 ->D 弊贰 瘤匡 荐 乐摆匙 ->M 酒捞袍 啊廉 -> D 昏力 矫懦膊.
void CAuction::RecvCMD_MERCHANT_SELL_ITEM_DELETE(const int cn,t_packet &p)//魄概 酒捞袍阑 昏力
{ //昏力 啊瓷 茄瘤 拱绢夯促 (IsEnd甫 昏力吝栏肺 眉农)//蜡历俊霸 罐疽嚼聪促.
CHARLIST *ch = CheckServerId(cn);
if(!ch){return;}
if(strcmp(p.u.SellerItemDelete.szName, ch->Name)){return;}//捞抚捞 撇妨
int a=0,b=0,c=0;
if(!GMMgr.IsMerchant(ch)){return;}
if(::SearchInv(ch->inv,a,b,c))//后傍埃捞 乐绰啊
{
p.h.header.type = CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM;//鸥涝 傈券
::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊霸 焊忱聪促.
}
else
{
::OutMessage(ch,2,13);//烙矫,,牢亥配府 傍埃捞 面盒摹 臼嚼聪促.
}
}
void CAuction::RecvCMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT(const int cn,t_packet &p)//魄概 酒捞袍阑 昏力
{//叼厚俊霸 焊辰吧 罐疽嚼聪促.
const int iUserCn = p.u.SellerItemDelete.iCn;
CHARLIST *ch = CheckServerId(iUserCn);
if(!ch){return;}//瘤快摆促带仇捞 唱艾嚼聪促.
if(-1 == p.u.SellerItemDelete.iKey)
{//昏力聪 唱惯捞聪 且膊 绝澜 瘤鞭 救窃
return;
}
if(strcmp(p.u.SellerItemDelete.szName, ch->Name))
{
return;
}//捞抚捞 撇妨
{//酒捞袍 瘤鞭傈 眉农//酒捞袍 瘤鞭捞 登搁 公郊 老捞 乐绢档
bool bIsFault = false;
int a=0,b=0,c=0;//酒捞袍 瘤鞭
if(!::SearchInv(ch->inv,a,b,c)){bIsFault = true;return;}//捞繁 惑炔捞 积扁唱? 酒鳖 哪汽罐扁 傈俊 牢亥配府 眉农 沁绰单..
POS pos;
SetItemPos(INV,a,b,c,&pos);//pos悸泼
ITEMATTR *pItem = ::GetItemByPOS(ch,pos);//酒捞袍 林家 罐绊
if(!pItem){bIsFault = true;return;}//咯扁俊 酒捞袍捞 绝促?? 固模..
if(bIsFault)
{
p.h.header.type = CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT;//鸥涝 傈券
p.u.SellerItemDelete.iKey = IS_END_ALL_RIGHT;//瘤快扁傈狼 芭贰 啊瓷 惑怕肺 函版
::QueuePacket(connections,DB_DEMON,&p,1);
}
else
{
(*pItem) = p.u.SellerItemDelete.SellItem;//角力 瘤鞭 窍绰 何盒
::SendItemEventLog( pItem, ch->GetServerID(), 0, SILT_CANCEL_AUCTION_SELL_ITEM, 1 );//021209 lsw
::SendServerEachItem( &pos, pItem,iUserCn);//焊郴扁
p.h.header.type = CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT;//鸥涝 傈券
p.u.SellerItemDelete.iKey = IS_END_DELETE_COMPLETE;
::QueuePacket(connections,DB_DEMON,&p,1);
}
}
::QueuePacket(connections,iUserCn,&p,1);
//瘤鞭捞 场车栏骨肺//昏力甫 矫挪促 (IsEnd甫 IS_END_DELETE_COMPLETE肺 眉农)
}
void CAuction::RecvCMD_MERCHANT_SELL_ITEM_DELETE_RESULT(const int cn,t_packet &p)//魄概 酒捞袍阑 昏力
{//叼厚单阁栏肺 何磐 搬苞甫 罐绰 何盒 馆靛矫 iKey 绰 IS_END_DELETING 捞 眉农 登绢 乐绢具 茄促
//昏力 搬苞甫 努扼捞攫飘肺 焊忱聪促.
//瘤款 酒捞袍篮 某腐磐俊霸 持绢凛聪促.
const int iUserCn = p.u.SellerItemDelete.iCn;
CHARLIST *ch = CheckServerId(iUserCn);
if(!ch){return;}//瘤快摆促带仇捞 唱艾嚼聪促.
if(strcmp(p.u.SellerItemDelete.szName, ch->Name)){return;}//捞抚捞 撇妨
const int iKey = p.u.SellerItemDelete.iKey;
if( IS_END_DELETE_COMPLETE != iKey//昏力 己傍
&& IS_END_ALL_RIGHT != iKey)//昏力 角菩
{//困 笛吝俊 窍唱啊 酒聪搁 俊矾促.叼厚俊辑绰 捞犯霸 贸府 窍聪鳖.
MyLog(0,"Auction Critical Error!! Type => CMD_MERCHANT_SELL_ITEM_DELETE_COMFORM_RESULT");
}
::QueuePacket(connections,iUserCn,&p,1);
//<! BBD 040226 殿废 秒家啊 肯搬登菌促. DBDemon俊霸 饭内靛甫 昏力窍扼绊 舅赴促.
if(iKey == IS_END_DELETE_COMPLETE)
{
p.h.header.type = CMD_MERCHANT_RECORD_DEL_CANCLE;//鸥涝 傈券
::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊霸 焊忱聪促.
t_SellerItemDelete item = p.u.SellerItemDelete;
// 甸绢棵锭 颇绰 仇苞 荤绰仇捞抚捞 官差绢 乐促.
// 秒家咯辑 荤绰仇捞 颇绰仇栏肺 登绊 颇绰仇篮 脚版 臼静绰淀...
// BBD绰 捞繁芭 饺绢茄促
strcpy(item.szSellerName, p.u.SellerItemDelete.szName);
memset(item.szName, 0L, sizeof(item.szName));
g_pLogManager->SaveAutionLog(ACLT_SELLER_CANCLE, &(item));
}
//> BBD 040226 殿废 秒家啊 肯搬登菌促. DBDemon俊霸 饭内靛甫 昏力窍扼绊 舅赴促.
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 昏力 窍扁 场(魄概 秒家)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 殿废 窍扁
////////////////////////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -