📄 streetstallmanager.cpp
字号:
pStall->EmptyCell( &ItemBase );
DelSyn.Category = MP_STREETSTALL;
DelSyn.Protocol = MP_STREETSTALL_DELETEITEM;
DelSyn.dwObjectID = pBuyInfo->dwObjectID;
DelSyn.ItemInfo = ItemBase;
DelSyn.wAbsPosition = pos;
pStall->SendMsgGuestAll( &DelSyn, sizeof(DelSyn) );
//////////////////////////////////////////////////////
// 林牢俊霸辑 酒捞袍阑 哗绊 捣阑 持绢 霖促./////////////////
sellMsg.Category = MP_STREETSTALL;
sellMsg.Protocol = MP_STREETSTALL_SELLITEM;
sellMsg.dwObjectID = pBuyInfo->StallOwnerID;
sellMsg.ItemInfo = ItemBase;
sellMsg.count = 0;
sellMsg.dwData = pBuyInfo->dwObjectID;
pOwner->SendMsg( &sellMsg, sizeof(sellMsg) );
/////////////////////////////////////////////////////////////
ItemBase.Position = absPosOut;
// 颊丛俊霸 酒捞袍阑 梅啊窍绊 捣阑 猾促.////////////////////
buyMsg.Category = MP_STREETSTALL;
buyMsg.Protocol = MP_STREETSTALL_BUYITEM_ACK;
buyMsg.dwObjectID = pBuyInfo->StallOwnerID;
buyMsg.ItemInfo = ItemBase;
buyMsg.count = 0;
pGuest->SendMsg( &buyMsg, sizeof(buyMsg) );
}
else
{
// 般摹扁 酒捞袍狼 肮荐甫 临牢促. (惑痢)
DURTYPE LeftDurability = ItemBase.Durability - wBuyNum;
pStall->UpdateCell( pos, LeftDurability);
updateMsg.Category = MP_STREETSTALL;
updateMsg.Protocol = MP_STREETSTALL_UPDATEITEM;
updateMsg.dwObjectID = pBuyInfo->StallOwnerID;
updateMsg.dwData = pos;
updateMsg.ItemInfo = ItemBase;
updateMsg.count = LeftDurability;
pOwner->SendMsg( &updateMsg, sizeof(updateMsg) );
pStall->SendMsgGuestAll( &updateMsg, sizeof(updateMsg) );
//////////////////////////////////////////////////////
// 林牢俊霸辑 酒捞袍阑 哗绊 捣阑 持绢 霖促./////////////////
sellMsg.Category = MP_STREETSTALL;
sellMsg.Protocol = MP_STREETSTALL_SELLITEM;
sellMsg.dwObjectID = pBuyInfo->StallOwnerID;
sellMsg.ItemInfo = ItemBase;
sellMsg.count = LeftDurability;
sellMsg.dwData = pBuyInfo->dwObjectID;
pOwner->SendMsg( &sellMsg, sizeof(sellMsg) );
pOwnerInventory->UpdateItemAbs(pOwner, RealPos, ItemBase.dwDBIdx, ItemBase.wIconIdx, 0, 0, LeftDurability, UB_DURA, SS_LOCKOMIT );
pOwnerInventory->SetLock(RealPos, TRUE);
ItemUpdateToDB( pOwner->GetID(), ItemBase.dwDBIdx ,ItemBase.wIconIdx, LeftDurability, absPosOut, 0 );
LogItemMoney(pOwner->GetID(), pOwner->GetObjectName(), pGuest->GetID(), pGuest->GetObjectName(),
eLog_StreetStallSellDivide, pOwner->GetMoney(), pGuest->GetMoney(), money,
ItemBase.wIconIdx, ItemBase.dwDBIdx, ItemBase.Position, absPosOut, LeftDurability, pOwner->GetPlayerExpPoint());
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// 颊丛俊霸 酒捞袍阑 梅啊窍绊 捣阑 猾促.////////////////////
ITEMBASE NewItemBase; /* 老窜 静饭扁蔼栏肺 悸泼 */
NewItemBase.dwDBIdx = 9;
NewItemBase.wIconIdx = 9;
NewItemBase.Position = absPosOut;
NewItemBase.QuickPosition = 9;
NewItemBase.Durability = 9;
pGuestInventory->InsertItemAbs(pGuest, absPosOut, &NewItemBase, SS_PREINSERT);
SSItemInsert( pGuest->GetID(), ItemBase.wIconIdx, wBuyNum, absPosOut, pOwner->GetID());
/////////////////////////////////////////////////////////////
}
pOwner->SetMoney( money, MONEY_ADDITION, 0, eItemTable_Inventory, eMoneyLog_GetStreetStall, pGuest->GetID());
pGuest->SetMoney( money, MONEY_SUBTRACTION, 0, eItemTable_Inventory, eMoneyLog_LoseStreetStall, pOwner->GetID());
return TRUE;
ITEMBUY_FAILED:
msgNack.Category = MP_STREETSTALL;
msgNack.Protocol = MP_STREETSTALL_BUYITEM_NACK;
msgNack.dwObjectID = pBuyInfo->dwObjectID;
msgNack.wData = rt;
pGuest->SendMsg( &msgNack, sizeof(MSG_WORD) );
return FALSE;
}
void cStreetStallManager::CreateDupItem( DWORD dwObjectId, ITEMBASE* pItemBase, DWORD FromChrID )
{
MSG_ITEMEX buyMsg;
buyMsg.Category = MP_STREETSTALL;
buyMsg.Protocol = MP_STREETSTALL_BUYITEM_ACK;
buyMsg.dwObjectID = dwObjectId;
buyMsg.ItemInfo = *pItemBase;
buyMsg.count = 0;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( dwObjectId );
if( pPlayer == NULL )
{
ASSERT(0);
return;
}
CItemSlot* pInventory = pPlayer->GetSlot(eItemTable_Inventory);
pInventory->InsertItemAbs( pPlayer, pItemBase->Position, pItemBase, SS_LOCKOMIT);
char FromName[MAX_NAME_LENGTH+1] = {0,};
MONEYTYPE FromMoney = 0;
EXPTYPE FromExpPoint = 0;
CPlayer* pFromPlayer = (CPlayer*)g_pUserTable->FindUser( FromChrID );
if(pFromPlayer)
{
SafeStrCpy(FromName, pFromPlayer->GetObjectName(), MAX_NAME_LENGTH+1);
FromMoney = pFromPlayer->GetMoney();
FromExpPoint = pFromPlayer->GetPlayerExpPoint();
}
LogItemMoney(FromChrID, FromName, dwObjectId, pPlayer->GetObjectName(),
eLog_StreetStallBuyDivide, FromMoney, pPlayer->GetMoney(), 0,
pItemBase->wIconIdx, pItemBase->dwDBIdx, 0, pItemBase->Position, pItemBase->Durability,
FromExpPoint);
pPlayer->SendMsg( &buyMsg, sizeof(buyMsg) );
}
void cStreetStallManager::NetworkMsgParse( BYTE Protocol, void* pMsg )
{
switch( Protocol )
{
case MP_STREETSTALL_OPEN_SYN:
{
MSG_STREETSTALL_TITLE* msg = (MSG_STREETSTALL_TITLE*)pMsg;
// 1. 惑痢 殿废
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer )
{
ASSERT(0);
break;
}
/* State俊 措茄 Check甫 茄促. */
//KES VIMU 031103 眠啊
if( pPlayer->IsVimuing() || pPlayer->GetExchangeContainer()->pRoom != NULL )
{
MSGBASE CloseSyn;
CloseSyn.Category = MP_STREETSTALL;
CloseSyn.Protocol = MP_STREETSTALL_OPEN_NACK;
pPlayer->SendMsg(&CloseSyn, sizeof(CloseSyn));
return;
}
//
// 扁粮 惑痢捞 粮犁窍搁 绝矩促.
cStreetStall* pStall = FindStreetStall( pPlayer );
if( pStall )
{
// ASSERT(0);
DeleteStreetStall( pPlayer );
MSGBASE CloseSyn;
CloseSyn.Category = MP_STREETSTALL;
CloseSyn.Protocol = MP_STREETSTALL_OPEN_NACK;
pPlayer->SendMsg(&CloseSyn, sizeof(CloseSyn));
return;
}
pStall = CreateStreetStall( pPlayer, msg->Title );
// 2. 己傍 Message甫 朝赴促.
MSG_STREETSTALL_TITLE OpenSyn;
OpenSyn = *msg;
OpenSyn.Protocol = MP_STREETSTALL_OPEN_ACK;
pPlayer->SendMsg( &OpenSyn, sizeof(MSG_STREETSTALL_TITLE) );
// 3. 立加 牢盔俊霸 惑怕甫 函版窍档废 瘤矫茄促.
StreetStallMode( pPlayer, msg->Title, TRUE );
return;
}
break;
case MP_STREETSTALL_CLOSE_SYN:
{
MSGBASE* msg = (MSGBASE*)pMsg;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( pPlayer == NULL ) break;
cStreetStall* pStall = FindStreetStall( pPlayer );
if( pStall == NULL ) break;
// 1. 立加 牢盔俊霸 惑怕甫 函版窍档废 瘤矫茄促.
StreetStallMode( pPlayer, NULL, FALSE ); // Ani 函版
// 2. 颊丛甸俊霸 舅赴促. (颊丛甸狼 惑怕甫 函版窍咯具 茄促.)
MSGBASE CloseSyn;
CloseSyn.Category = MP_STREETSTALL;
CloseSyn.Protocol = MP_STREETSTALL_CLOSE;
CloseSyn.dwObjectID = msg->dwObjectID;
pStall->SendMsgGuestAll( &CloseSyn, sizeof(MSGBASE), TRUE );
// 3. 惑痢阑 力芭 茄促.
DeleteStreetStall( pPlayer );
// 4. 己傍 Message甫 朝赴促.
CloseSyn.Protocol = MP_STREETSTALL_CLOSE_ACK;
//困狼 StreetStallMode俊辑 捞固 龋免茄促.
pPlayer->SendMsg( &CloseSyn, sizeof(MSGBASE) );
}
break;
case MP_STREETSTALL_LOCKITEM_SYN:
{
MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
CPlayer* pPlayer = NULL;
cStreetStall* pStall = NULL;
sCELLINFO* pInfo = NULL;
MSGBASE Ftemp;
MSG_STREETSTALL_ITEMSTATUS Stemp;
// 1. 惑痢阑 茫酒辑 酒捞袍阑 Lock 茄促.
pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer )
{
ASSERT(0);
return;
}
if( msg->wAbsPosition >= MAX_STREETSTALL_CELLNUM ) goto ITEMLOCKFAIL;
pStall = FindStreetStall( pPlayer );
if( pStall == NULL ) goto ITEMLOCKFAIL;
pInfo = pStall->GetCellInfo( msg->wAbsPosition );
if( pInfo->sItemBase.dwDBIdx != msg->ItemInfo.dwDBIdx ) goto ITEMLOCKFAIL;
pStall->SetMoney( msg->wAbsPosition, msg->dwMoney );
pStall->ChangeCellState( msg->wAbsPosition, TRUE );
Stemp = *msg;
Stemp.Protocol = MP_STREETSTALL_LOCKITEM_ACK;
pPlayer->SendMsg( &Stemp, sizeof(MSG_STREETSTALL_ITEMSTATUS) );
// 颊丛狼 惑怕甫 函版茄促.
Stemp.Protocol = MP_STREETSTALL_LOCKITEM;
pStall->SendMsgGuestAll( &Stemp, sizeof(MSG_STREETSTALL_ITEMSTATUS) );
return;
ITEMLOCKFAIL:
Ftemp.Category = MP_STREETSTALL;
Ftemp.Protocol = MP_STREETSTALL_LOCKITEM_NACK;
Ftemp.dwObjectID = msg->dwObjectID;
pPlayer->SendMsg( &Ftemp, sizeof(MSGBASE) );
}
break;
case MP_STREETSTALL_UNLOCKITEM_SYN:
{
MSG_STREETSTALL_ITEMSTATUS* msg = (MSG_STREETSTALL_ITEMSTATUS*)pMsg;
CPlayer* pPlayer = NULL;
cStreetStall* pStall = NULL;
sCELLINFO* pInfo = NULL;
MSGBASE Ftemp;
MSG_STREETSTALL_ITEMSTATUS Stemp;
// 1. 惑痢阑 茫酒辑 酒捞袍阑 UnLock 茄促.
pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer )
{
ASSERT(0);
return;
}
if( msg->wAbsPosition >= MAX_STREETSTALL_CELLNUM ) goto ITEMUNLOCKFAIL;
pStall = FindStreetStall( pPlayer );
if( pStall == NULL ) goto ITEMUNLOCKFAIL;
pInfo = pStall->GetCellInfo( msg->wAbsPosition );
if( pInfo->sItemBase.dwDBIdx != msg->ItemInfo.dwDBIdx) goto ITEMUNLOCKFAIL;
pStall->SetMoney( msg->wAbsPosition, 0 );
pStall->ChangeCellState( msg->wAbsPosition, FALSE );
Stemp = *msg;
Stemp.Protocol = MP_STREETSTALL_UNLOCKITEM_ACK;
pPlayer->SendMsg( &Stemp, sizeof(MSG_STREETSTALL_ITEMSTATUS) );
// 颊丛狼 惑怕甫 函版茄促.
Stemp.Protocol = MP_STREETSTALL_UNLOCKITEM;
pStall->SendMsgGuestAll( &Stemp, sizeof(MSG_STREETSTALL_ITEMSTATUS) );
return;
ITEMUNLOCKFAIL:
Ftemp.Category = MP_STREETSTALL;
Ftemp.Protocol = MP_STREETSTALL_UNLOCKITEM_NACK;
Ftemp.dwObjectID = msg->dwObjectID;
pPlayer->SendMsg( &Ftemp, sizeof(MSGBASE) );
}
break;
case MP_STREETSTALL_FAKEREGISTITEM_SYN:
{
MSG_REGISTITEMEX* msg = (MSG_REGISTITEMEX*)pMsg;
cStreetStall* pStall = NULL;
CPlayer* pPlayer = NULL;
CInventorySlot* pSlot = NULL;
ITEMBASE pBase;
sCELLINFO* pInfo = NULL;
DWORD erroflag = 0;
MSG_DWORD2 RegistFail;
MSG_LINKITEMEX RegistSyn;
SEND_LINKITEM_TOTALINFO RegistGuest;
// 1. 惑痢阑 茫酒辑 酒捞袍阑 梅啊茄促.
pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer )
{
ASSERT(0);
return;
}
if( pPlayer->GetGuestStall() ) goto ITEMREGISTFAILEX; // Guest肺 曼咯茄 版快俊 措茄 俊矾 贸府
pStall = FindStreetStall( pPlayer );
if( pStall == NULL ) goto ITEMREGISTFAILEX;
if( pStall->IsFull() ) goto ITEMREGISTFAILEX; // 畴痢捞 菜蛮版快..
pSlot = (CInventorySlot*)pPlayer->GetSlot( eItemTable_Inventory );
if( !pSlot ) goto ITEMREGISTFAILEX;
if( !pSlot || pSlot->IsLock((POSTYPE)msg->ItemInfo.Position) ) goto ITEMREGISTFAILEX;
if( !CHKRT->ItemOf( pPlayer, msg->ItemInfo.Position, msg->ItemInfo.wIconIdx,
msg->ItemInfo.Durability, msg->ItemInfo.QuickPosition ) )
goto ITEMREGISTFAILEX;
//5俺捞惑 般模 滚弊 酒捞袍篮 棵副 荐 绝促
if( ITEMMGR->IsDupItem(msg->ItemInfo.wIconIdx) && msg->ItemInfo.Durability > 5 )
{
goto ITEMREGISTFAILEX;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -