本文整理汇总了C++中Zone::getZoneGroup方法的典型用法代码示例。如果您正苦于以下问题:C++ Zone::getZoneGroup方法的具体用法?C++ Zone::getZoneGroup怎么用?C++ Zone::getZoneGroup使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zone
的用法示例。
在下文中一共展示了Zone::getZoneGroup方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
//.........这里部分代码省略.........
if (g_pResurrectLocationManager->getSlayerPosition(pSlayer->getZone()->getZoneID(), ResurrectCoord))
{
ZoneID = ResurrectCoord.id;
ZoneX = ResurrectCoord.x;
ZoneY = ResurrectCoord.y;
}
else
{
throw Error("Critical Error: ResurrectInfo is not established");
}
}
char pField[80];
sprintf(pField, "ZoneID=%d, XCoord=%d, YCoord=%d, CurrentHP=HP", ZoneID, ZoneX, ZoneY);
pSlayer->tinysave(pField);
}
else if(pCreature->isVampire())
{
Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);
Assert(pVampire != NULL);
if (g_pResurrectLocationManager->getVampirePosition(pVampire->getResurrectZoneID(), ResurrectCoord))
{
ZoneID = ResurrectCoord.id;
ZoneX = ResurrectCoord.x;
ZoneY = ResurrectCoord.y;
}
else
{
if (g_pResurrectLocationManager->getVampirePosition(pVampire->getZone()->getZoneID(), ResurrectCoord))
{
ZoneID = ResurrectCoord.id;
ZoneX = ResurrectCoord.x;
ZoneY = ResurrectCoord.y;
}
else
{
throw Error("Critical Error: ResurrectInfo is not established");
}
}
// 이제 정보를 저장한다.
char pField[80];
sprintf(pField, "ZoneID=%d, XCoord=%d, YCoord=%d, CurrentHP=HP", ZoneID, ZoneX, ZoneY);
pVampire->tinysave(pField);
}
*/
}
//
// 이제, 존에서 PC를 삭제한다.
//
// *CAUTION*
//
// pCreature의 좌표가 실제로 pCreature가 존재하는 타일의 좌표와 같아야 한다.
// 따라서, 이 메쏘드를 호출하기 전에 좌표를 잘 바꿔놔야 한당..
//
pZone->deleteCreature(pCreature , pCreature->getX() , pCreature->getY());
////cout << "PC deleted from Zone >> ";
// 존그룹의 ZPM에서 플레이어를 삭제한다.
// ZonePlayerManager의 ProcessCommand 안에서 지우는 것이므로 반드시 NoBlocked 으로 지워야 한다.
pZone->getZoneGroup()->getZonePlayerManager()->deletePlayer(pGamePlayer->getSocket()->getSOCKET());
// IPM으로 플레이어를 옮긴다.
//g_pIncomingPlayerManager->pushPlayer(pGamePlayer);
// Core의 구조를 바꾸면서 쓰레드로 부터 독립적으로 행하기 위하여 뒤에 한꺼번에 처리하기 위해서
// OutList로 넣는다.
pZone->getZoneGroup()->getZonePlayerManager()->pushOutPlayer(pGamePlayer);
////cout << "Move PC to IPM >> ";
}
catch (NoSuchElementException & nsee)
{
throw DisconnectException();
}
// 로그인 서버로 GLIncomingConnection을 보낸다.
// PlayerName과 ClientIP를 같이 실어서 보낸다.
/*
GLIncomingConnection glIncomingConnection;
glIncomingConnection.setPlayerID(pGamePlayer->getID());
glIncomingConnection.setClientIP(pGamePlayer->getSocket()->getHost());
if (g_pConfig->getProperty("User") == "excel96")
g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection);
else if (g_pConfig->getProperty("User") == "elcastle")
g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection);
else if (g_pConfig->getProperty("User") == "elca")
g_pLoginServerManager->sendPacket("211.117.52.12" , g_pConfig->getPropertyInt("LoginServerUDPPort"), &glIncomingConnection);
*/
pGamePlayer->setPlayerStatus(GPS_AFTER_SENDING_GL_INCOMING_CONNECTION);
#endif
__END_DEBUG_EX __END_CATCH
}
示例2: activate
void EventResurrect::activate ()
throw(Error)
{
__BEGIN_TRY
__BEGIN_DEBUG
Assert(m_pGamePlayer != NULL);
Creature * pDeadPC = m_pGamePlayer->getCreature();
Assert(pDeadPC != NULL);
// 하이드한 상태에서 죽었다면, 하이드를 풀어준다.
pDeadPC->removeFlag(Effect::EFFECT_CLASS_HIDE);
// 무브모드를 바꿔준다.
if (pDeadPC->isVampire() && pDeadPC->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT))
{
pDeadPC->setMoveMode(Creature::MOVE_MODE_FLYING);
}
else
{
pDeadPC->setMoveMode(Creature::MOVE_MODE_WALKING);
}
// HP를 채워준다.
if (pDeadPC->isSlayer())
{
Slayer* pSlayer = dynamic_cast<Slayer*>(pDeadPC);
pSlayer->setHP(pSlayer->getHP(ATTR_MAX), ATTR_CURRENT);
}
else if (pDeadPC->isVampire())
{
Vampire* pVampire = dynamic_cast<Vampire*>(pDeadPC);
pVampire->setHP(pVampire->getHP(ATTR_MAX), ATTR_CURRENT);
}
else if (pDeadPC->isOusters())
{
Ousters* pOusters = dynamic_cast<Ousters*>(pDeadPC);
pOusters->setHP(pOusters->getHP(ATTR_MAX), ATTR_CURRENT);
}
// 새 zone을 설정하지 않는다. by sigi. 2002.5.11
Zone* pOldZone = pDeadPC->getZone();
Assert(pOldZone != NULL);
try
{
// 존그룹의 ZPM에서 플레이어를 삭제한다.
pOldZone->getZoneGroup()->getZonePlayerManager()->deletePlayer(m_pGamePlayer->getSocket()->getSOCKET());
// 여기서 설정해줘야지만 Save 이벤트가 IPM에서 동작하지 않는다.
m_pGamePlayer->setPlayerStatus(GPS_WAITING_FOR_CG_READY);
// IPM으로 플레이어를 옮긴다.
//g_pIncomingPlayerManager->pushPlayer(m_pGamePlayer);
pOldZone->getZoneGroup()->getZonePlayerManager()->pushOutPlayer(m_pGamePlayer);
}
catch (NoSuchElementException& t)
{
filelog("eventRessurect.txt", "%s-%s", t.toString().c_str(), pDeadPC->getName().c_str());
cerr << "EventResurrect::activate() : NoSuchElementException" << endl;
//throw Error("존에 플레이어가 존재하지 않습니다.");
// 어떻게 없어졌겠지.. -_-;
// 무시하고.. 그냥 진행한다.
// by sigi. 2002.11.25
}
// 죽었을 당시 killCreature에서 존을 셋팅 하기 때문에 그냥 할당 받으면 된다.
// 이거는 ZonePlayerManager의 heartbeat에서 처리한다.
// 주석처리 by sigi. 2002.5.14
//pDeadPC->registerObject();
/*
// GCUpdateInfo 패킷을 만들어둔다.
GCUpdateInfo gcUpdateInfo;
makeGCUpdateInfo(&gcUpdateInfo, pDeadPC);
m_pGamePlayer->sendPacket(&gcUpdateInfo);
*/
__END_DEBUG
__END_CATCH
}