📄 streetstallmanager.cpp
字号:
if( GetItemKind( msg->ItemInfo.wIconIdx ) == eYOUNGYAK_ITEM )
{
if( pSlot->CheckQPosForItemIdx( msg->ItemInfo.wIconIdx ) == FALSE )
goto ITEMREGISTFAILEX;
}
else
{
if( pSlot->GetItemInfoAbs( msg->ItemInfo.Position )->QuickPosition != 0 )
goto ITEMREGISTFAILEX;
}
pBase = *pSlot->GetItemInfoAbs((POSTYPE)msg->ItemInfo.Position);
if( !pStall->CheckItemDBIdx(pBase.dwDBIdx) )
{
erroflag = 1;
goto ITEMREGISTFAILEX; // 捞固 殿废登绢 乐绰 酒捞袍牢瘤...
}
// if( !pStall->FillCell( &pBase, msg->dwMoney, TRUE ) ) goto ITEMREGISTFAILEX;
if( !pStall->FillCell( &pBase, msg->dwMoney, FALSE ) ) goto ITEMREGISTFAILEX;
RegistSyn.Category = MP_STREETSTALL;
RegistSyn.Protocol = MP_STREETSTALL_FAKEREGISTITEM_ACK;
RegistSyn.dwObjectID = msg->dwObjectID;
RegistSyn.ItemInfo = pBase;
RegistSyn.dwMoney = msg->dwMoney;
pPlayer->SendMsg( &RegistSyn, sizeof(MSG_LINKITEMEX) );
// 颊丛俊霸 惑前阑 殿废秦霖促.
RegistGuest.Category = MP_STREETSTALL;
RegistGuest.Protocol = MP_STREETSTALL_FAKEREGISTITEM;
RegistGuest.dwObjectID = msg->dwObjectID;
RegistGuest.ItemInfo = pBase;
RegistGuest.dwMoney = msg->dwMoney;
RegistGuest.count = 0;
if( ITEMMGR->IsOptionItem(pBase.wIconIdx, pBase.Durability) )
{
RegistGuest.count = 1;
RegistGuest.sOptionInfo = *(pPlayer->GetItemOption(pBase.Durability));
}
pStall->SendMsgGuestAll( &RegistGuest, RegistGuest.GetSize() );
return;
ITEMREGISTFAILEX:
RegistFail.Category = MP_STREETSTALL;
RegistFail.Protocol = MP_STREETSTALL_FAKEREGISTITEM_NACK;
RegistFail.dwObjectID = msg->dwObjectID;
RegistFail.dwData1 = msg->ItemInfo.Position;
RegistFail.dwData2 = erroflag;
pPlayer->SendMsg( &RegistFail, sizeof(MSG_DWORD2) );
return;
}
break;
case MP_STREETSTALL_DELETEITEM_SYN:
{
MSG_LINKITEM* msg = (MSG_LINKITEM*)pMsg;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer ) break;
cStreetStall* pStall = FindStreetStall( pPlayer );
if( pStall == NULL ) break;
pStall->EmptyCell( &msg->ItemInfo );
// 皋技瘤 焊辰促.
MSG_LINKITEM DelSyn;
DelSyn.Category = MP_STREETSTALL;
DelSyn.Protocol = MP_STREETSTALL_DELETEITEM_ACK;
DelSyn.dwObjectID = msg->dwObjectID;
DelSyn.ItemInfo = msg->ItemInfo;
DelSyn.wAbsPosition = msg->wAbsPosition;
pPlayer->SendMsg( &DelSyn, sizeof(MSG_LINKITEM) );
// 颊丛俊霸辑 惑前阑 昏力 茄促.
DelSyn.Protocol = MP_STREETSTALL_DELETEITEM;
pStall->SendMsgGuestAll( &DelSyn, sizeof(MSG_LINKITEM) );
}
break;
case MP_STREETSTALL_BUYITEM_SYN:
{
STREETSTALL_BUYINFO* msg = (STREETSTALL_BUYINFO*)pMsg;
CPlayer* pOwner = (CPlayer *)g_pUserTable->FindUser(msg->StallOwnerID);
if(pOwner == NULL) return;
CPlayer* pGuest = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pGuest == NULL) return;
cStreetStall* pStall = FindStreetStall( pOwner );
if( pStall == NULL ) return;
if( pGuest->GetGuestStall() == NULL )
{
char buf[128];
sprintf(buf, "畴痢捞 绝绰单 酒捞袍阑 荤妨绊 茄促. %d", pGuest->GetID());
ASSERTMSG(0, buf);
SendNackMsg(pGuest, MP_STREETSTALL_BUYITEM_NACK);
return;
}
if(pGuest->GetGuestStall()->GetOwner()->GetID() != msg->StallOwnerID)
{
char buf[128];
sprintf(buf, "殿废等 畴痢苞绰 促弗 畴痢俊辑酒捞袍阑 荤妨绊 茄促: %d", pGuest->GetID());
ASSERTMSG(0, buf);
SendNackMsg(pGuest, MP_STREETSTALL_BUYITEM_NACK);
return;
}
if( pStall->CheckItemDBIdx(msg->ItemInfo.dwDBIdx) ) // 殿废酒捞袍牢瘤 眉农茄促.
{
MSG_WORD msgNack;
msgNack.Category = MP_STREETSTALL;
msgNack.Protocol = MP_STREETSTALL_BUYITEM_NACK;
msgNack.dwObjectID = msg->dwObjectID;
msgNack.wData = NOT_EXIST;
pGuest->SendMsg( &msgNack, sizeof(msgNack) );
return;
}
if( ITEMMGR->IsDupItem( msg->ItemInfo.wIconIdx ) )
{
BuyDupItem( pOwner, pStall, pGuest, msg );
}
else
{
BuyItem( pOwner, pStall, pGuest, msg );
}
}
break;
case MP_STREETSTALL_GUESTIN_SYN:
{
MSG_DWORD* msg = (MSG_DWORD*)pMsg;
BOOL bVal = TRUE;
CPlayer* pOwner = (CPlayer*)g_pUserTable->FindUser( msg->dwData );
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer ) break;
/* State俊 措茄 Check甫 茄促. */
//KES VIMU 031103 眠啊
if( pPlayer->IsVimuing() ) bVal = FALSE; //厚公吝
if( pPlayer->GetExchangeContainer()->pRoom != NULL ) bVal = FALSE; //背券吝
if( (pPlayer->GetState() == eObjectState_StreetStall_Guest) || (pPlayer->GetState() == eObjectState_StreetStall_Owner))
{
char buf[128];
sprintf(buf, "辑滚俊辑绰 捞固 畴痢 惑怕: %d", pPlayer->GetID());
ASSERTMSG(0, buf);
SendNackMsg(pPlayer, MP_STREETSTALL_GUESTIN_NACK);
return;
}
cStreetStall* pStall = NULL;
if( !pOwner )
{
bVal = FALSE;
}
else if( bVal )
{
pStall = FindStreetStall( pOwner );
if( !pStall )
{
bVal = FALSE;
}
else
{
ASSERT( pPlayer->GetGuestStall() == NULL ); // null捞绢具茄促.
if( pPlayer->GetGuestStall() )
{
pPlayer->GetGuestStall()->DeleteGuest( pPlayer );
}
pStall->AddGuest( pPlayer );
}
}
if( bVal )
{
STREETSTALL_INFO sInfo;
memset(&sInfo, 0, sizeof(STREETSTALL_INFO));
sInfo.count = 0;
pStall->GetStreetStallInfo( sInfo );
sInfo.Category = MP_STREETSTALL;
sInfo.Protocol = MP_STREETSTALL_GUESTIN_ACK;
sInfo.dwObjectID = msg->dwObjectID;
sInfo.StallOwnerID = msg->dwData;
OBJECTSTATEMGR_OBJ->StartObjectState(pPlayer, eObjectState_StreetStall_Guest, 0);
pPlayer->SendMsg( &sInfo, sInfo.GetSize() );
}
else
{
SendNackMsg(pPlayer, MP_STREETSTALL_GUESTIN_NACK);
}
}
break;
case MP_STREETSTALL_GUESTOUT_SYN:
{
MSG_DWORD* msg = (MSG_DWORD*)pMsg;
CPlayer* pOwner = (CPlayer*)g_pUserTable->FindUser( msg->dwData );
if( !pOwner ) break;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer ) break;
cStreetStall * pPlayerStall = pPlayer->GetGuestStall();
if(!pPlayerStall)
{
char buf[128];
sprintf(buf, "敲饭捞绢俊 gueststall捞 绝绰单 唱啊扁 皋矫瘤 咳: %d", pPlayer->GetID());
ASSERTMSG(0, buf);
SendNackMsg(pPlayer, MP_STREETSTALL_GUESTOUT_NACK);
if(pPlayer->GetState() == eObjectState_StreetStall_Guest)
{
char buf[128];
sprintf(buf, "敲饭捞绢俊 gueststall捞 绝绰单 惑怕绰 畴痢 惑怕: %d", pPlayer->GetID());
ASSERTMSG(0, buf);
}
return;
}
if(pPlayerStall->GetOwner()->GetID() != pOwner->GetID())
{
char buf[128];
sprintf(buf, "辑滚俊 乐绰 畴痢苞绰 促弗 畴痢俊辑 唱埃促绊 皋矫瘤 咳: %d", pPlayer->GetID());
ASSERTMSG(0, buf);
return;
}
if( pPlayer->GetState() != eObjectState_StreetStall_Guest)
{
char buf[128];
sprintf(buf, "辑滚俊辑 颊丛惑怕啊 酒囱单 唱啊扁 皋矫瘤 咳: %d", pPlayer->GetID());
ASSERTMSG(0, buf);
SendNackMsg(pPlayer, MP_STREETSTALL_GUESTOUT_NACK);
return;
}
OBJECTSTATEMGR_OBJ->EndObjectState(pPlayer, eObjectState_StreetStall_Guest);
cStreetStall* pStall = FindStreetStall( pOwner );
if( pStall )
pStall->DeleteGuest( pPlayer );
MSGBASE OutSyn;
OutSyn.Category = MP_STREETSTALL;
OutSyn.Protocol = MP_STREETSTALL_GUESTOUT_ACK;
OutSyn.dwObjectID = msg->dwObjectID;
pPlayer->SendMsg( &OutSyn, sizeof(MSGBASE) );
}
break;
case MP_STREETSTALL_EDITTITLE_SYN:
{
MSG_STREETSTALL_TITLE* msg = (MSG_STREETSTALL_TITLE*)pMsg;
// 1. 惑痢阑 茫酒辑 鸥捞撇阑 荐沥茄促.
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser( msg->dwObjectID );
if( !pPlayer ) break;
cStreetStall* pStall = FindStreetStall( pPlayer );
if( pStall == NULL )
{
MSGBASE temp;
temp.Category = MP_STREETSTALL;
temp.dwObjectID = msg->dwObjectID;
temp.Protocol = MP_STREETSTALL_EDITTITLE_NACK;
pPlayer->SendMsg( &temp, sizeof(MSGBASE) );
}
else
{
pPlayer->SetStreetStallTitle( msg->Title );
MSG_STREETSTALL_TITLE temp;
temp = *msg;
temp.Protocol = MP_STREETSTALL_EDITTITLE_ACK;
pPlayer->SendMsg( &temp, sizeof(MSG_STREETSTALL_TITLE) );
// 颊丛俊霸 鸥捞撇阑 舅赴促.
temp.Protocol = MP_STREETSTALL_EDITTITLE;
PACKEDDATA_OBJ->QuickSendExceptObjectSelf(pPlayer,&temp,sizeof(temp));
}
}
break;
}
}
void cStreetStallManager::SendNackMsg(CPlayer* pPlayer, BYTE Protocol)
{
MSGBASE nmsg;
nmsg.Category = MP_STREETSTALL;
nmsg.Protocol = Protocol;
pPlayer->SendMsg(&nmsg, sizeof(nmsg));
}
BOOL cStreetStallManager::CanBuyItem(CPlayer* pOwner, CPlayer *pGuest, sCELLINFO* pItemInfo, WORD* EmptyCellPos, STREETSTALL_BUYINFO* pBuyInfo, ITEMBASE* pStallItem)
{
//KES: 酒捞袍狼 啊拜 函拳
if( pItemInfo->dwMoney != pBuyInfo->dwBuyPrice )
{
AssertBuyErr(NOT_SAMEPRICE);
return FALSE;
}
// 酒捞袍狼 惑怕 眉农
if( !pItemInfo || !pItemInfo->bFill || !pItemInfo->bLock || pStallItem->dwDBIdx != pBuyInfo->ItemInfo.dwDBIdx )
{
AssertBuyErr(NOT_EXIST);
return FALSE;
}
// HAVE MONEY ?
if( pGuest->GetMoney() < pItemInfo->dwMoney )
{
AssertBuyErr(NOT_MONEY);
return FALSE;
}
CInventorySlot* pGuestInventory = (CInventorySlot*)pGuest->GetSlot( eItemTable_Inventory );
// 牢亥配府傍埃 眉农
if( pGuestInventory->GetEmptyCell(EmptyCellPos) == 0 )
{
AssertBuyErr(NOT_SPACE);
return FALSE;
}
if( !pOwner->IsEnoughAdditionMoney(pItemInfo->dwMoney) )
{
AssertBuyErr(NOT_OWNERMONEY);
MSG_WORD msg;
msg.Category = MP_STREETSTALL;
msg.Protocol = MP_STREETSTALL_SELLITEM_ERROR;
msg.wData = pBuyInfo->StallPos;
pOwner->SendMsg(&msg, sizeof(msg));
return FALSE;
}
return TRUE;
}
void cStreetStallManager::AssertBuyErr(WORD Err)
{
char buf[128];
sprintf(buf, "畴痢 荤扁 滚弊: %d", Err);
ASSERTMSG(0, buf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -