📄 auction.cpp
字号:
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 + -