⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auction.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// 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 + -