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

📄 auction.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	for( int a=0; a<3; a++)
	{	for( int b=0; b<3; b++)
		{	for( int c=0; c<8; c++)
			{
				if( !inv[a][b][c].item_no )
				{
					iCount++;
				}
			}
		}
	}
	return iCount;	
}

//BondMoney 贸府何
int ConvBondMoneyCount(const DWORD dwMoney,const int iaBondIndex)//捣阑 持栏搁 罐阑 夯靛赣聪客 捣 酒捞袍狼 肮荐甫 府畔
{//内靛 鉴辑 官操瘤 富巴 // iaBondIndex aBondMoney狼 牢郸胶甫 狼固
	if( 0				> iaBondIndex//牢郸胶 捞惑
	||	BOND_MONEY_MAX	< iaBondIndex){return 0;}

	int iCount = 0;
	DWORD dwTemp = dwMoney;
	int iDivideValue = 0;
	for(int i = iaBondIndex; BOND_MONEY_MAX > i;i++)
	{
		iDivideValue = aBondMoney[i].iValue;//唱喘 蔼 悸泼
		iCount += dwTemp/iDivideValue;//酒捞袍 肮荐 眉农
		dwTemp%=iDivideValue;//儡咯陛 汲沥
	}
	iDivideValue = MAX_MONEY;//唱喘 蔼 悸泼
	iCount += dwTemp/iDivideValue;//酒捞袍 肮荐 眉农
	dwTemp%=iDivideValue;//儡咯陛 汲沥
	return ((dwTemp)?iCount:iCount+1);
}

int AddMoney( const DWORD money, CHARLIST *ch)		// 010210 YGI
{	//快急 瘤鞭 窍绊 唱吝俊 哎扼郴绰 规侥涝聪促.
	if( !money ) {return 1;}
	
	int iItemKind = IK_NEW_MONEY;
	if(LocalMgr.IsChangeMoney())//030102 lsw
	{
		iItemKind = IK_NEW_MONEY;
	}
	else
	{
		iItemKind = IK_MONEY;
	}

	int a=0, b=0, c=0;
	ItemAttr *pItem = ::SearchItemOfInvByKind( iItemKind, ch, a, b, c );
	
	if( !pItem )// 捣 酒捞袍捞 窍唱档 绝阑锭 货肺 积己
	{
		if( !::SearchInv( ch->inv, a, b, c ) ) 		// 后傍埃捞 绝阑锭 
		{
			int iItemNo = IN_NEW_COINS;
			if(LocalMgr.IsChangeMoney())//030102 lsw
			{
				iItemNo = IN_NEW_COINS;
			}
			else
			{
				iItemNo = IN_COINS;
			}

			ItemAttr temp = ::GenerateItem( iItemNo, IATTR_MUCH, money);//020509 lsw
			// 顶俊 冻绢 飘赴促.
			::SendItemEventLog( &temp, ch->GetServerID(), 0, SILT_PUT_GROUND_MAX_INVEN, 1 ); //YGI acer
			::DropItem( ch->X, ch->Y, &temp );//10撅楼府 酒捞袍捞 唱坷绰 捞蜡
			return -1;
		}//if( !::SearchInv( ch->inv, a, b, c ) ) 		// 后傍埃捞 绝阑锭 
		else//后傍埃捞 乐阑锭
		{
			ItemAttr *new_item = &ch->inv[a][b][c];

			int iCoinNo = IN_NEW_COIN;
			int iCoinsNo = IN_NEW_COINS;
			if(LocalMgr.IsChangeMoney())//030102 lsw
			{
				iCoinNo = IN_NEW_COIN;
				iCoinsNo = IN_NEW_COINS;
			}
			else
			{
				iCoinNo = IN_COIN;
				iCoinsNo = IN_COINS;
			}
			if( money > 5 )
			{
				new_item->item_no = iCoinsNo;
			}
			else 
			{
				new_item->item_no = iCoinNo;
			}

			new_item->attr[IATTR_MUCH] = money;
			pItem = new_item;

			POS pos = {0,};				// 010117 YGI
			::SetItemPos( INV, a, b, c, &pos );
			::SendServerEachItem( &pos, pItem, ch->GetServerID());
		}
	}//if( !pItem )// 捣 酒捞袍捞 窍唱档 绝阑锭 货肺 积己
	else 
	{//捣酒捞袍捞 乐阑锭
		pItem->attr[IATTR_MUCH] += money;
	}

	POS pos = {0,};
	::SetItemPos( INV, a, b, c, &pos );//陛规 瘤鞭茄 酒捞袍阑 哎扼辰促	
	const int cn = ch->GetServerID();
	switch(CheckAutoDivideMoney(pItem, cn))//100父盔 逞绰 酒捞袍 哎扼郴扁
	{
	case 1:// 货肺 积变 捣 酒捞袍阑 焊郴霖促.
		{
			::SendServerEachItem( &pos, pItem, cn);
			return 1;
		}break;
	case 2:
		{
			::SendChangeDurationByKein( &pos, pItem->attr[IATTR_MUCH], cn );
			return 2;
		}break;
	}

	return 1;
}

int GiveMoneyAble(CHARLIST *ch, const DWORD dwMoney,const int iaBondIndex)
{
	if(!dwMoney){return 1;}//0盔 瘤鞭 窍摆促绊 窍搁 公炼扒 己傍茄吧肺 老矾扼
	if(SM6.iValue > dwMoney){return 1;}//500 父盔 固父篮 瘤鞭 矫诺聪促. 官蹿俊 冻绢瘤歹扼档//021212 lsw
	if( 0				> iaBondIndex//牢郸胶 捞惑
	||	BOND_MONEY_MAX	< iaBondIndex){return 0;}
	
	const int iNeedCount  = ::ConvBondMoneyCount(dwMoney);
	const int iHaveCount  = ::SearchInvEmptyCount(ch->inv);
	
	if(iNeedCount > iHaveCount)
	{
		::OutMessage(ch,2,13);//烙矫,,牢亥配府 傍埃捞 面盒摹 臼嚼聪促.
		return 0;
	}//捣罐阑 沫捞 葛磊鄂单
	return 1;
}

int GiveMoney(CHARLIST *ch, const DWORD dwMoney,const int iaBondIndex)//iaBondIndex aBondMoney狼 牢郸胶甫 狼固
{//历 牢郸胶狼 酒捞捞袍 捞窍肺 瘤鞭 窍摆促绰 捞具扁.

	if(!GiveMoneyAble(ch,dwMoney,iaBondIndex)){return 0;}
			
	DWORD dwTemp = dwMoney;
	int iDivideValue = 0;
	for(int i = iaBondIndex; BOND_MONEY_MAX > i;i++)
	{
		iDivideValue = aBondMoney[i].iValue;//唱喘 蔼 悸泼
		const int iCount = dwTemp/iDivideValue;//酒捞袍 肮荐 眉农
		for(int j =0; iCount >j;j++)
		{
			int a=0,b=0,c=0;
			if(::SearchInv(ch->inv,a,b,c))
			{
				POS pos;
				SetItemPos(INV,a,b,c,&pos);//pos 盲快绊
				ITEMATTR *pItem = ::GetItemByPOS(ch,pos);//酒捞袍 林家 罐绊
				(*pItem) = ::GenerateItem(aBondMoney[i].iItemNo);
				::SendServerEachItem(pItem,ch);
				::SendItemEventLog( pItem, ch->GetServerID(), 0, SILT_BOND_MONEY_GIVE, 1 );//021209 lsw
			}			
		}
		dwTemp%=iDivideValue;//儡咯陛 汲沥
	}
	//夯靛 赣聪肺 瘤鞭 茄 饶狼 捣阑 悼傈 酒捞袍栏肺 瘤鞭茄促
	::AddMoney(dwTemp,ch);//500 购盔 捞窍狼 捣捞 甸绢哎 巴捞促
	ch->Money = GetMoneyByItem( ch );
	return 1;
}

void CAuction::RecvCMD_EXCHANGE_BOND_MONEY(const int cn,t_packet &p)
{
	LPEXCHANGEBONDMONEY pEBM= &p.u.Hwoa.rang.ExBondMoney;

	if(pEBM->iCn != cn){return;}//促福搁 救等促.
	
	LPCHARLIST pCh = ::CheckServerId(cn);
	if(!pCh){return;}//某腐磐 罐扁
	
	ITEMATTR *pItem = ::GetItemByPOS(pCh,pEBM->pos);
	if(!pItem){return;}//酒捞袍 哗扁
	if(::memcmp(pItem,&pEBM->BondMoneyItem,sizeof(ITEMATTR))){return;}//酒捞袍 厚背窍扁
	
	const int iItemNo = pEBM->BondMoneyItem.item_no;//酒捞袍 逞滚 厚背 窍扁
	if(pItem->item_no != iItemNo){return;}

	int iValue = 0;
	int iIndex = 0;
	switch(iItemNo)//瘤鞭 窍扁
	{
	case BOND_MONEY_1000://10撅 农复 夯靛	
		{
			iValue = aBondMoney[0].iValue;
			iIndex = 1;
		}break;
	case BOND_MONEY_500	://5撅 农复 夯靛	
		{
			iValue = aBondMoney[1].iValue;
			iIndex = 2;
		}break;
	case BOND_MONEY_100	://1撅 农复 夯靛	
		{
			iValue = aBondMoney[2].iValue;
			iIndex = 3;
		}break;
	case BOND_MONEY_50	://5玫父 农复 夯靛	
		{
			iValue = aBondMoney[3].iValue;
			iIndex = 4;
		}break;
	case BOND_MONEY_10	://1玫父 农复 夯靛	
		{
			iValue = aBondMoney[4].iValue;
			iIndex = 5;
		}break;
	case BOND_MONEY_5	://5归父 农复 夯靛	
		{
			iValue = aBondMoney[5].iValue;
			iIndex = 6;
		}break;
	default://夯靛赣聪 酒聪搁 公矫 窍磊.
		{
			return;
		}
	}//switch(iItemNo)//瘤鞭 窍扁

	if(::GiveMoney(pCh, iValue,iIndex))
	{
		::SendItemEventLog( pItem, pCh->GetServerID(), 0, SILT_EXCHANGE_BOND_MONEY, 1 );//021209 lsw
		::DeleteItem(pItem);//玲栏聪鳖 酒捞袍瘤况
		::SendServerEachItem(&pEBM->pos,pItem,cn);
	}

	return;
}
//<! BBD 040303		赣玫飘归诀 抛捞喉肺阑 荤侩窍绰 窃荐焙
void  CAuction::RecvCMD_MERCHANT_BACKUP_TAKE_REQUEST(const int cn,t_packet &p)
{
	//iKey俊 IsEnd鞘靛蔼捞 甸绢乐促
	t_MerchantResultTake * pRecord = &(p.u.MerchantResultTake);
	const int iUserCn = pRecord->iCn;
	CHARLIST *ch = CheckServerId(iUserCn);
	if(!ch){return;}
	if(strcmp(pRecord->szMyName, ch->Name)){return;}//捞抚捞 撇妨	

	int IsEnd = pRecord->iKey;

	// 肺弊甫 困秦 酒捞袍 沥焊甫 避绰促
	t_SellerItemDelete item;
	memset(&item, 0L, sizeof(item));

	item.dwSellValue = pRecord->dwSellValue;
	item.iCn = pRecord->iCn;
	item.iIndex = pRecord->iIndex;
	item.SellItem = pRecord->SellItem;
	strcpy(item.szName, pRecord->szBuyerName);
	strcpy(item.szSellerName, pRecord->szSellerName);

	if(IsEnd == IS_END_ALL_RIGHT)
	{		// 捞仇篮 颇绰仇捞 秒家窍绰 仇捞促

		pRecord->iKey = 1;		// 魄概磊搁 1捞促
		int a=0,b=0,c=0;
		if(::SearchInv(ch->inv,a,b,c))//傍埃捞 乐备唱
		{
			POS pos;
			SetItemPos(INV,a,b,c,&pos);//pos悸泼 
			ITEMATTR *pItem = ::GetItemByPOS(ch,pos);//酒捞袍 林家 罐绊
			(*pItem) = pRecord->SellItem;
			::SendServerEachItem( &pos, pItem,iUserCn);//焊郴扁
			::SendItemEventLog( pItem, ch->GetServerID(), 0, SILT_TAKE_AUCTION_RESULT_ITEM, 1 );
			pRecord->iKey += 100;
			// 己傍捞聪 肺弊甫 巢扁磊
			item.iKey = pRecord->iKey;
			g_pLogManager->SaveAutionLog(ACLT_SELLER_CANCLE, &(item));	
			
		}
		else// 牢亥俊 磊府绝促
		{
			::OutMessage(ch,2,13);//烙矫,,牢亥配府 傍埃捞 面盒摹 臼嚼聪促.
			pRecord->iKey += 10;
		}			
	}
	else if(IsEnd == IS_END_WAIT_TAKE)
	{
		// 捞仇篮 芭贰饶 拱扒捞唱 措陛阑 茫绰仇捞促.
		if(strcmp(pRecord->szMyName, pRecord->szSellerName))
		{	// Buyer捞聪 拱扒阑 瘤鞭秦林磊
			pRecord->iKey = 0;		// 备概磊搁 0捞促
			int a=0,b=0,c=0;
			if(::SearchInv(ch->inv,a,b,c))//傍埃捞 乐备唱
			{
				POS pos;
				SetItemPos(INV,a,b,c,&pos);//pos悸泼 
				ITEMATTR *pItem = ::GetItemByPOS(ch,pos);//酒捞袍 林家 罐绊
				(*pItem) = pRecord->SellItem;
				::SendServerEachItem( &pos, pItem,iUserCn);//焊郴扁
				::SendItemEventLog( pItem, ch->GetServerID(), 0, SILT_TAKE_AUCTION_RESULT_ITEM, 1 );

				pRecord->iKey += 100;
				// 己傍捞聪 肺弊甫 巢扁磊
				item.iKey = pRecord->iKey;
				g_pLogManager->SaveAutionLog(ACLT_BUYER_TAKE, &(item));	
			}
			else// 牢亥俊 磊府绝促
			{
				::OutMessage(ch,2,13);//烙矫,,牢亥配府 傍埃捞 面盒摹 臼嚼聪促.
				pRecord->iKey += 10;
			}			
		}
		else
		{	// Seller捞聪 措陛阑 瘤鞭秦林磊
			pRecord->iKey = 1;		// 魄概磊搁 1捞促
			const DWORD dwSellValue = p.u.MerchantResultTake.dwSellValue;
			if(::GiveMoney(ch,dwSellValue))
			{//瘤鞭己傍

				pRecord->iKey += 100;
				// 己傍捞聪 肺弊甫 巢扁磊
				item.iKey = pRecord->iKey;
				g_pLogManager->SaveAutionLog(ACLT_SELLER_TAKE, &(item));	
			}
			else
			{
				::OutMessage(ch,2,13);//烙矫,,牢亥配府 傍埃捞 面盒摹 臼嚼聪促.
				pRecord->iKey += 10;
			}		
		}
	}
	p.h.header.type = CMD_MERCHANT_BACKUP_TAKE_RESPONSE;//鸥涝 傈券
	::QueuePacket(connections,DB_DEMON,&p,1);//叼厚俊霸 焊忱聪促.
}
//> BBD 040303		赣玫飘归诀 抛捞喉肺阑 荤侩窍绰 窃荐焙

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -