本文整理汇总了C++中CCharEntity::GetZPos方法的典型用法代码示例。如果您正苦于以下问题:C++ CCharEntity::GetZPos方法的具体用法?C++ CCharEntity::GetZPos怎么用?C++ CCharEntity::GetZPos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCharEntity
的用法示例。
在下文中一共展示了CCharEntity::GetZPos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TransportTimer
void CTransportHandler::TransportTimer()
{
uint32 VanaTime = CVanaTime::getInstance()->getDate();
// в портовых зонах необходимо написать макросы на случай, если персонаж вышел из игры в корабле.
// при входе в игру он должен оказаться на пристани
for(uint32 i = 0; i < TransportList.size(); ++i)
{
Transport_t* PTransport = TransportList.at(i);
uint16 ShipTimerOffset = ((VanaTime - PTransport->TimeOffset) % PTransport->TimeInterval);
// корабль появляется на горизонте
if (ShipTimerOffset == 0)
{
PTransport->PTransportNPC->status = STATUS_NORMAL;
PTransport->PTransportNPC->animation = PTransport->AnimationArrive;
PTransport->PTransportNPC->loc = PTransport->Dock;
WBUFL(&PTransport->PTransportNPC->name[0],4) = CVanaTime::getInstance()->getVanaTime();
PTransport->Dock.zone->PushPacket(NULL, CHAR_INZONE, new CEntityUpdatePacket(PTransport->PTransportNPC, ENTITY_SPAWN, UPDATE_ALL));
}
// персонажи видят корабль, иначе ждем следующего прибытия
else if (PTransport->PTransportNPC->status == STATUS_NORMAL)
{
// пора подтягивать пассажиров к выходу
if (ShipTimerOffset == PTransport->TimeAnimationArrive - 10)
{
PTransport->PTransportNPC->loc.boundary = 0;
zoneutils::GetZone(PTransport->Dock.prevzone)->TransportDepart(PTransport->PTransportNPC);
}
// корабль причалил, открываем двери пассажирам
else if (ShipTimerOffset == PTransport->TimeAnimationArrive)
{
PTransport->PDoorNPC->animation = ANIMATION_OPEN_DOOR;
PTransport->Dock.zone->PushPacket(PTransport->PDoorNPC, CHAR_INRANGE, new CEntityUpdatePacket(PTransport->PDoorNPC, ENTITY_UPDATE, UPDATE_COMBAT));
}
//корабль отчаливает
else if (ShipTimerOffset == PTransport->TimeAnimationArrive + PTransport->TimeWaiting)
{
PTransport->PDoorNPC->animation = ANIMATION_CLOSE_DOOR;
PTransport->PTransportNPC->animation = PTransport->AnimationDepart;
PTransport->PTransportNPC->loc.boundary = PTransport->Dock.boundary;
WBUFL(&PTransport->PTransportNPC->name[0],4) = CVanaTime::getInstance()->getVanaTime();
PTransport->Dock.zone->TransportDepart(PTransport->PTransportNPC);
PTransport->Dock.zone->PushPacket(PTransport->PDoorNPC, CHAR_INRANGE, new CEntityUpdatePacket(PTransport->PDoorNPC, ENTITY_UPDATE, UPDATE_COMBAT));
PTransport->Dock.zone->PushPacket(NULL, CHAR_INZONE, new CEntityUpdatePacket(PTransport->PTransportNPC, ENTITY_UPDATE, UPDATE_COMBAT));
}
//корабль исчезает
else if (ShipTimerOffset == PTransport->TimeAnimationArrive + PTransport->TimeWaiting + PTransport->TimeAnimationDepart)
{
PTransport->PTransportNPC->status = STATUS_DISAPPEAR;
PTransport->Dock.zone->PushPacket(NULL, CHAR_INZONE, new CEntityUpdatePacket(PTransport->PTransportNPC, ENTITY_DESPAWN,UPDATE_NONE));
}
}
}
for(uint32 i = 0; i < ElevatorList.size(); ++i)
{
Elevator_t * elevator = &ElevatorList.at(i);
if (elevator->isStarted)
{
uint16 TimerOffset = (VanaTime % elevator->interval);
if (elevator->id == ELEVATOR_PORT_BASTOK_DRWBRDG)
{
TimerOffset = (VanaTime % INTERVAL_PORT_BASTOK_DRWBRDG);
if (TimerOffset == 0 || TimerOffset == 76)
{
CZone* PZone = zoneutils::GetZone(elevator->zone);
EntityList_t charList = PZone->GetCharList();
if (!charList.empty())
{
for (EntityList_t::const_iterator it = charList.begin() ; it != charList.end() ; ++it)
{
CCharEntity* PChar = (CCharEntity*)it->second;
if ((PChar->GetXPos() > 54 && PChar->GetXPos() < 66) && (PChar->GetZPos() > -160 && PChar->GetZPos() < -80))
{
PChar->pushPacket(new CEventPacket(PChar, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1));
}
}
}
}
else if (TimerOffset == 4 || TimerOffset == 80)
{
elevator->isMoving = true;
startElevator(elevator);
}
else if (TimerOffset == 8 || TimerOffset == 84)
{
elevator->isMoving = true;
startElevator(elevator);
}
//.........这里部分代码省略.........