本文整理汇总了C++中Obj::getWorldPos方法的典型用法代码示例。如果您正苦于以下问题:C++ Obj::getWorldPos方法的具体用法?C++ Obj::getWorldPos怎么用?C++ Obj::getWorldPos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Obj
的用法示例。
在下文中一共展示了Obj::getWorldPos方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Execute
uint CGShopBuyHandler::Execute( CGShopBuy* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
Assert( pGamePlayer ) ;
Obj_Human* pHuman = pGamePlayer->GetHuman() ;
Assert( pHuman ) ;
Scene* pScene = pHuman->getScene() ;
if( pScene==NULL )
{
Assert(FALSE) ;
return PACKET_EXE_ERROR ;
}
//检查线程执行资源是否正确
Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
BYTE m_nndex = pPacket->GetIndex(); //资源位置索引
UINT UniqueID = pPacket->GetUniqueID();
SceneID_t SceneID = UniqueID>>16;
ObjID_t NpcObjID= UniqueID&0x00ff;
//距离判定
Obj* pNpcObj = (Obj*) (pScene->GetObjManager()->GetObj(NpcObjID));
if(pNpcObj == NULL)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopBuyHandler Illegal Obj") ;
return PACKET_EXE_CONTINUE ;
}
FLOAT fDist = MySqrt(pNpcObj->getWorldPos(), pHuman->getWorldPos());
if(fDist>MAX_NPC_DISTANCE)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopBuyHandler Out Of Range") ;
return PACKET_EXE_CONTINUE ;
}
if(pHuman->Shop( ) == NULL)
{//没有打开交易窗口就买
Assert(0);
return PACKET_EXE_CONTINUE ;
}
//打开商店时,这个商店的指针已经被存在human身上了,关闭商店时它会被清空
_SHOP* pShop = pHuman->Shop( ) ;
INT itemNumber = 0;
//暂时规定200以上为回购的商品栏
if(m_nndex >= 200)
{//在回购队列中查找
m_nndex -= 200;
_ITEM tempItem;
UINT uPrice = 0;
if(!pHuman->GetFromSoldListByIndex(m_nndex, tempItem, uPrice))
{
//Assert(0);
return PACKET_EXE_CONTINUE ;
}
itemNumber = tempItem.GetItemCount();
INT iPrice = (INT)uPrice;
if( ((INT)pHuman->GetMoney()) < iPrice )
{//金钱不够
GCShopBuy Msg ;
Msg.SetBuyOk((BYTE)GCShopBuy::BUY_MONEY_FAIL);
pHuman->GetPlayer()->SendPacket( &Msg ) ;
return PACKET_EXE_CONTINUE ;
}
if(!pHuman->RecieveOneFromSoldList(m_nndex))
{
GCShopBuy Msg ;
Msg.SetBuyOk((BYTE)GCShopBuy::BUY_BAG_FULL);
pHuman->GetPlayer()->SendPacket( &Msg ) ;
return PACKET_EXE_CONTINUE ;
}
else
{//从回购列表里面购买成功
pHuman->SetMoney( pHuman->GetMoney() - iPrice);
MONEY_LOG_PARAM MoneyLogParam;
MoneyLogParam.CharGUID = pHuman->GetGUID();
MoneyLogParam.OPType = MONEY_SHOP_COST;
MoneyLogParam.Count = iPrice;
MoneyLogParam.SceneID = pHuman->getScene()->SceneID();
MoneyLogParam.XPos = pHuman->getWorldPos()->m_fX;
MoneyLogParam.ZPos = pHuman->getWorldPos()->m_fZ;
SaveMoneyLog(&MoneyLogParam);
GCShopBuy Msg ;
Msg.SetBuyOk( (BYTE)GCShopBuy::BUY_OK );
Msg.SetIndex( tempItem.m_ItemIndex );
Msg.SetNum( tempItem.GetItemCount() );
pHuman->GetPlayer()->SendPacket( &Msg ) ;
//.........这里部分代码省略.........
示例2: Execute
uint CGShopSellHandler::Execute( CGShopSell* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
Assert( pGamePlayer ) ;
Obj_Human* pHuman = pGamePlayer->GetHuman() ;
Assert( pHuman ) ;
Scene* pScene = pHuman->getScene() ;
if( pScene==NULL )
{
Assert(FALSE) ;
return PACKET_EXE_ERROR ;
}
//检查线程执行资源是否正确
Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
BYTE m_nBagIndex = pPacket->GetBagIndex(); //包中的位置
UINT UniqueID = pPacket->GetUniqueID();
SceneID_t SceneID = UniqueID>>16;
ObjID_t NpcObjID= UniqueID&0x00ff;
if(SceneID != pScene->SceneID())
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopSellHandler Illegal scene ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
//距离判定
Obj* pNpcObj = (Obj*) (pScene->GetObjManager()->GetObj(NpcObjID));
if(pNpcObj == NULL)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopSellHandler Illegal Obj ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
FLOAT fDist = MySqrt(pNpcObj->getWorldPos(), pHuman->getWorldPos());
if(fDist>MAX_NPC_DISTANCE)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopSellHandler Out Of Range ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
Item* pCurrentItem = HumanItemLogic::GetItem(pHuman,m_nBagIndex);
if(!pCurrentItem||ConvertSerial2ItemType(pCurrentItem->GetItemTableIndex()).isNull())
{
//背包索引不存在
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR:CGShopSellHandler m_nBagIndex=%d PlayerName=s%",
m_nBagIndex, pHuman->GetName()) ;
return PACKET_EXE_CONTINUE;
}
//判定这个商人是不是收购这个物品
_SHOP* pShop = pHuman->Shop( ) ;
//商店不存在
if(!pShop)
{
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR:CGShopSellHandler Npc Shop Lose");
return PACKET_EXE_CONTINUE;
}
//查询收购等级限制
if( pCurrentItem->GetItemClass() == ICLASS_EQUIP )
{
if( pCurrentItem->GetRequireLevel() > pShop->m_nBuyLevel )
{
return PACKET_EXE_CONTINUE;
}
}
else
{
if( pCurrentItem->GetItemLevel() > pShop->m_nBuyLevel )
{
return PACKET_EXE_CONTINUE;
}
}
BOOL bCanBuy = TRUE;
if(pShop->m_nBuyType != SHOP_All)
{
switch(pShop->m_nBuyType)
{
case SHOP_All:
{
}
break;
case SHOP_DEFENCE: //防具
{
if( ICLASS_EQUIP == pCurrentItem->GetItemClass())
{
if( pCurrentItem->GetEquipPoint() != HEQUIP_CAP &&
pCurrentItem->GetEquipPoint() != HEQUIP_ARMOR &&
pCurrentItem->GetEquipPoint() != HEQUIP_CUFF &&
pCurrentItem->GetEquipPoint() != HEQUIP_BOOT )
//.........这里部分代码省略.........
示例3: Execute
uint CGShopRepairHandler::Execute( CGShopRepair* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
Assert( pGamePlayer ) ;
Obj_Human* pHuman = pGamePlayer->GetHuman() ;
Assert( pHuman ) ;
Scene* pScene = pHuman->getScene() ;
if( pScene==NULL )
{
Assert(FALSE) ;
return PACKET_EXE_ERROR ;
}
//检查线程执行资源是否正确
Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
BYTE Opt = pPacket->GetOpt();
BOOL RepairAll = pPacket->IsRepairAll(); //修理全部
BYTE BagIndex = pPacket->GetBagIndex(); //包中的位置
UINT UniqueID = pPacket->GetUniqueID();
SceneID_t SceneID = UniqueID>>16;
ObjID_t NpcObjID= UniqueID&0x00ff;
if(SceneID != pScene->SceneID())
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopRepairHandler Illegal scene ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
//距离判定
Obj* pNpcObj = (Obj*) (pScene->GetObjManager()->GetObj(NpcObjID));
if(pNpcObj == NULL)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopRepairHandler Illegal Obj ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
FLOAT fDist = MySqrt(pNpcObj->getWorldPos(), pHuman->getWorldPos());
if(fDist>MAX_NPC_DISTANCE)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGShopRepairHandler Out Of Range ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
Item* pCurItem = NULL;
INT MoneySpent = 0;
INT MoneyLast = 0;
INT MoneyHave = pHuman->GetMoney();
INT RepairedIndex = 0;
GCShopRepair Msg;
GCShopRepair::REPAIRED_ITEM ItemList[MAX_REPAIRED_NUMBER];
_SHOP* pShop = pHuman->Shop( ) ;
if(!pShop)
{
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR:CGShopRepairHandler Npc Shop Lose");
return PACKET_EXE_CONTINUE;
}
if(Opt == CGShopRepair::FromBag)
{
if(RepairAll)
{
INT nBeginPoint = 0;
INT nEndPoint = 0;
switch( pShop->m_nRepairType )
{
case SHOP_All:
{
nBeginPoint = HEQUIP_WEAPON;
nEndPoint = HEQUIP_RIDER;
}
break;
case SHOP_WEAPON: //防具
{
nBeginPoint = HEQUIP_WEAPON;
nEndPoint = HEQUIP_WEAPON;
}
break;
case SHOP_DEFENCE: //饰物
{
nBeginPoint = HEQUIP_CAP;
nEndPoint = HEQUIP_BOOT;
}
break;
case SHOP_ADORN: //武器
{
nBeginPoint = HEQUIP_SASH;
nEndPoint = HEQUIP_RIDER;
}
break;
default:
{
return PACKET_EXE_CONTINUE;
}
//.........这里部分代码省略.........
示例4: Execute
uint CGEquipExChangePaiTypeHandler::Execute(CGEquipExChangePaiType* pPacket,Player* pPlayer)
{
__ENTER_FUNCTION
GamePlayer* pGamePlayer = (GamePlayer*)pPlayer;
Assert( pGamePlayer );
Obj_Human* pHuman = pGamePlayer->GetHuman();
Assert( pHuman );
Scene* pScene = pHuman->getScene();
if( pScene==NULL )
{
Assert(FALSE);
return PACKET_EXE_ERROR;
}
//检查线程执行资源是否正确
Assert( MyGetCurrentThreadID()==pScene->m_ThreadID );
//交易状态不可操作
if(pHuman->m_ExchangBox.m_Status > 0)
{//丢弃
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR: ObjID=%d, ExchangBox::m_Status>0" ,pHuman->GetID()) ;
return PACKET_EXE_CONTINUE ;
}
//摆摊状态不可操作
if(pHuman->m_StallBox.GetStallStatus() == ServerStallBox::STALL_OPEN)
{//丢弃
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR: ObjID=%d, ServerStallBox::STALL_OPEN" ,pHuman->GetID()) ;
return PACKET_EXE_CONTINUE ;
}
//摆摊不可操作
if(pHuman->m_StallBox.GetStallStatus() == ServerStallBox::STALL_OPEN)
{//丢弃
g_pLog->FastSaveLog( LOG_FILE_1, "ERROR: ObjID=%d, ServerStallBox::STALL_OPEN" ,pHuman->GetID()) ;
return PACKET_EXE_CONTINUE ;
}
ObjID_t NpcObjID= pPacket->GetUniqueID();
Obj* pNpcObj = pScene->GetObjManager()->GetObj(NpcObjID);
if (pNpcObj == NULL)
{
return PACKET_EXE_ERROR;
}
else
{
if( pNpcObj->GetObjType() != Obj::OBJ_TYPE_MONSTER )
{
return PACKET_EXE_ERROR;
}
}
FLOAT fDist = MySqrt(pNpcObj->getWorldPos(), pHuman->getWorldPos());
if(fDist>MAX_NPC_DISTANCE)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGEquipExChangePaiTypeHandler Out Of Range ObjName = %s", pHuman->GetName()) ;
return PACKET_EXE_CONTINUE ;
}
EQUIPEXCHANGEPAITTYPE_RESULT Result = EQUIPEXCHANGEPAITTYPE_FAIL;
GCEquipExChangePaiTypeResult ResultPacket;
Item* pEquip1Item = NULL;
Item* pEquip2Item = NULL;
INT Equip1Point = INVALID_ITEM_POS;
INT Equip2Point = INVALID_ITEM_POS;
if(pPacket->GetEquip1PosType()>=INVALID_ITEM_POS_TYPE)
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGEquipExChangePaiTypeHandler Equip posType error, posType=%d", pPacket->GetEquip1PosType()) ;
return PACKET_EXE_ERROR;
}
if(pPacket->GetEquip1PosType() == ENUM_BAG)
{
ItemContainer* pItemContainer1 = HumanItemLogic::GetBagContainer(pHuman,pPacket->GetPos1());
if( pItemContainer1 == NULL )
{
g_pLog->FastSaveLog( LOG_FILE_1, "CGEquipExChangePaiTypeHandler: BagIndex error, BagIndex=%d", pPacket->GetPos1()) ;
return PACKET_EXE_ERROR;
}
if (!pItemContainer1->IsCanUse())
{
Result = EQUIPEXCHANGEPAITTYPE_BAG_INVALID;
ResultPacket.SetResult(Result);
pGamePlayer->SendPacket(&ResultPacket);;
g_pLog->FastSaveLog( LOG_FILE_1, "CGEquipExChangePaiTypeHandler: ItemContainer is invalid, ContainerType=%d, BagIndex=%d",
pItemContainer1->GetContainerType(), pPacket->GetPos1()) ;
return PACKET_EXE_ERROR;
}
pEquip1Item = pItemContainer1->GetItem(pItemContainer1->BagIndex2ConIndex(pPacket->GetPos1()));
if(pEquip1Item->IsEmpty())
{
Result = EQUIPEXCHANGEPAITTYPE_EQUIP_FAIL;
ResultPacket.SetResult(Result);
pGamePlayer->SendPacket(&ResultPacket);
g_pLog->FastSaveLog( LOG_FILE_1, "CGEquipExChangePaiTypeHandler Equip empyty, bagpos=%d", pPacket->GetPos1()) ;
//.........这里部分代码省略.........