本文整理汇总了C++中CNpc::Initialize方法的典型用法代码示例。如果您正苦于以下问题:C++ CNpc::Initialize方法的具体用法?C++ CNpc::Initialize怎么用?C++ CNpc::Initialize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNpc
的用法示例。
在下文中一共展示了CNpc::Initialize方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitEventMonster
void CAISocket::InitEventMonster(int index)
{
int count = index;
if( count < 0 || count > NPC_BAND ) {
TRACE("### InitEventMonster index Fail = %d ###\n", index);
return;
}
int max_eventmop = count+EVENT_MONSTER;
for( int i=count; i<max_eventmop; i++ ) {
CNpc* pNpc = NULL;
pNpc = new CNpc;
if(pNpc == NULL) return;
pNpc->Initialize();
pNpc->m_sNid = i+NPC_BAND;
//TRACE("InitEventMonster : uid = %d\n", pNpc->m_sNid);
if( !g_pMain->m_arNpcArray.PutData( pNpc->GetID(), pNpc) ) {
TRACE("Npc PutData Fail - %d\n", pNpc->GetID());
delete pNpc;
pNpc = NULL;
}
}
count = g_pMain->m_arNpcArray.GetSize();
TRACE("TotalMonster = %d\n", count);
}
示例2: Create
CNpc* CNpc::Create(LPDIRECT3DDEVICE9 pGraphicDev)
{
CNpc* pGameObject = new CNpc(pGraphicDev);
if (FAILED(pGameObject->Initialize()))
{
MSG_BOX("CMonster Create Faild");
::Safe_Release(pGameObject);
}
return pGameObject;
}
示例3: RecvNpcInfoAll
void CAISocket::RecvNpcInfoAll(Packet & pkt)
{
uint8 bCount = pkt.read<uint8>(); // max of 20
pkt.SByte();
for (int i = 0; i < bCount; i++)
{
uint8 bDirection;
std::string strName;
CNpc* pNpc = new CNpc();
pNpc->Initialize();
pkt >> pNpc->m_NpcState >> pNpc->m_sNid >> pNpc->m_sSid >> pNpc->m_sPid >> pNpc->m_sSize >> pNpc->m_iWeapon_1 >> pNpc->m_iWeapon_2
>> pNpc->m_bZone >> strName >> pNpc->m_bNation >> pNpc->m_bLevel
>> pNpc->m_curx >> pNpc->m_curz >> pNpc->m_cury >> bDirection
>> pNpc->m_tNpcType >> pNpc->m_iSellingGroup >> pNpc->m_iMaxHP >> pNpc->m_iHP >> pNpc->m_byGateOpen
>> pNpc->m_fTotalHitrate >> pNpc->m_fTotalEvasionrate
>> pNpc->m_sTotalAc >> pNpc->m_sTotalHit
>> pNpc->m_byObjectType
>> pNpc->m_byTrapNumber >> pNpc->m_bMonster
>> pNpc->m_sFireR >> pNpc->m_sColdR >> pNpc->m_sLightningR
>> pNpc->m_sMagicR >> pNpc->m_sDiseaseR >> pNpc->m_sPoisonR;
if (strName.empty())
strName = "<the spawn with no name>";
if (strName.length() > MAX_NPC_SIZE)
{
pNpc->DecRef();
continue;
}
pNpc->m_pMap = g_pMain->GetZoneByID(pNpc->GetZoneID());
if (pNpc->GetMap() == nullptr)
{
pNpc->DecRef();
continue;
}
//TRACE("Recv --> NpcUserInfo : uid = %d, x=%f, z=%f.. \n", nid, fPosX, fPosZ);
pNpc->m_strName = strName;
pNpc->m_byDirection = bDirection;
pNpc->SetRegion(pNpc->GetNewRegionX(), pNpc->GetNewRegionZ());
if (pNpc->m_byObjectType == SPECIAL_OBJECT)
{
_OBJECT_EVENT* pEvent = pNpc->GetMap()->GetObjectEvent(pNpc->m_sSid);
if (pEvent != nullptr)
pEvent->byLife = 1;
}
// TRACE("Recv --> NpcUserInfoAll : uid=%d, sid=%d, name=%s, x=%f, z=%f. gate=%d, objecttype=%d \n", nid, sPid, szName, fPosX, fPosZ, byGateOpen, byObjectType);
if (!g_pMain->m_arNpcArray.PutData(pNpc->GetID(), pNpc))
{
TRACE("Npc PutData Fail - %d\n", pNpc->GetID());
pNpc->DecRef();
continue;
}
if (pNpc->m_NpcState == NPC_DEAD)
{
TRACE("Recv --> NpcUserInfoAll : nid=%d, sid=%d, name=%s\n", pNpc->GetID(), pNpc->m_sSid, strName.c_str());
continue;
}
pNpc->SendInOut(INOUT_IN, pNpc->GetX(), pNpc->GetZ(), pNpc->GetY());
}
}
示例4: RecvNpcInfoAll
void CAISocket::RecvNpcInfoAll(Packet & pkt)
{
uint8 bCount = pkt.read<uint8>(); // max of 20
pkt.SByte();
for (int i = 0; i < bCount; i++)
{
uint8 bType, bDirection;
std::string strName;
CNpc* pNpc = new CNpc();
pNpc->Initialize();
pkt >> bType >> pNpc->m_sNid >> pNpc->m_sSid >> pNpc->m_sPid >> pNpc->m_sSize >> pNpc->m_iWeapon_1 >> pNpc->m_iWeapon_2
>> pNpc->m_bZoneID >> strName >> pNpc->m_byGroup >> pNpc->m_byLevel >> pNpc->m_fCurX >> pNpc->m_fCurZ >> pNpc->m_fCurY
>> bDirection >> pNpc->m_tNpcType >> pNpc->m_iSellingGroup >> pNpc->m_iMaxHP >> pNpc->m_iHP >> pNpc->m_byGateOpen
>> pNpc->m_sTotalHitrate >> pNpc->m_sTotalEvasionrate >> pNpc->m_sTotalAc >> pNpc->m_byObjectType;
if (strName.empty() || strName.length() > MAX_NPC_SIZE)
{
delete pNpc;
continue;
}
//TRACE("Recv --> NpcUserInfo : uid = %d, x=%f, z=%f.. \n", nid, fPosX, fPosZ);
strcpy(pNpc->m_strName, strName.c_str());
pNpc->m_pMap = g_pMain->GetZoneByID(pNpc->GetZoneID());
pNpc->m_NpcState = NPC_LIVE;
pNpc->m_byDirection = bDirection;
pNpc->SetRegion(pNpc->GetNewRegionX(), pNpc->GetNewRegionZ());
if (pNpc->GetMap() == NULL)
{
delete pNpc;
pNpc = NULL;
continue;
}
if (pNpc->m_byObjectType == SPECIAL_OBJECT)
{
_OBJECT_EVENT* pEvent = pNpc->GetMap()->GetObjectEvent(pNpc->m_sSid);
if (pEvent != NULL)
pEvent->byLife = 1;
}
// TRACE("Recv --> NpcUserInfoAll : uid=%d, sid=%d, name=%s, x=%f, z=%f. gate=%d, objecttype=%d \n", nid, sPid, szName, fPosX, fPosZ, byGateOpen, byObjectType);
if (!g_pMain->m_arNpcArray.PutData(pNpc->GetID(), pNpc))
{
TRACE("Npc PutData Fail - %d\n", pNpc->GetID());
delete pNpc;
continue;
}
if (bType == 0)
{
TRACE("Recv --> NpcUserInfoAll : nid=%d, sid=%d, name=%s\n", pNpc->GetID(), pNpc->m_sSid, strName.c_str());
continue;
}
// RegionNpcAdd()
pNpc->SendInOut(INOUT_IN, pNpc->GetX(), pNpc->GetZ(), pNpc->GetY());
}
}
示例5: RecvNpcInfoAll
// ai server에 처음 접속시 npc의 모든 정보를 받아온다..
void CAISocket::RecvNpcInfoAll(char* pBuf)
{
int index = 0;
BYTE byCount = 0; // 마리수
BYTE byType; // 0:처음에 등장하지 않는 몬스터, 1:등장
short nid; // NPC index
short sid; // NPC index
BYTE bZone; // Current zone number
short sPid; // NPC Picture Number
short sSize = 100; // NPC Size
int iweapon_1;
int iweapon_2;
char szName[MAX_NPC_SIZE+1]; // NPC Name
BYTE byGroup; // 소속 집단
BYTE byLevel; // level
float fPosX; // X Position
float fPosZ; // Z Position
float fPosY; // Y Position
BYTE byDirection; //
BYTE tNpcType; // 00 : Monster
// 01 : NPC
int iSellingGroup;
int nMaxHP; // 최대 HP
int nHP; // 현재 HP
BYTE byGateOpen; // 성문일경우 열림과 닫힘 정보
short sHitRate;
BYTE byObjectType; // 보통 : 0, 특수 : 1
byCount = GetByte(pBuf, index);
for(int i=0; i<byCount; i++)
{
byType = GetByte(pBuf, index);
nid = GetShort(pBuf, index);
sid = GetShort(pBuf, index);
sPid = GetShort(pBuf, index);
sSize = GetShort(pBuf, index);
iweapon_1 = GetDWORD(pBuf, index);
iweapon_2 = GetDWORD(pBuf, index);
bZone = GetByte(pBuf, index);
int nLength = GetVarString(szName, pBuf, sizeof(BYTE), index);
byGroup = GetByte(pBuf, index);
byLevel = GetByte(pBuf, index);
fPosX = Getfloat(pBuf, index);
fPosZ = Getfloat(pBuf, index);
fPosY = Getfloat(pBuf, index);
byDirection = GetByte(pBuf, index);
tNpcType = GetByte(pBuf, index);
iSellingGroup = GetDWORD(pBuf, index);
nMaxHP = GetDWORD(pBuf, index);
nHP = GetDWORD(pBuf, index);
byGateOpen = GetByte(pBuf, index);
sHitRate = GetShort(pBuf, index);
byObjectType = GetByte(pBuf, index);
//TRACE("RecvNpcInfoAll : nid=%d, szName=%s, count=%d\n", nid, szName, byCount);
if(nLength < 0 || nLength > MAX_NPC_SIZE) {
TRACE("#### RecvNpcInfoAll Fail : szName=%s\n", szName);
continue; // 잘못된 monster 아이디
}
//TRACE("Recv --> NpcUserInfo : uid = %d, x=%f, z=%f.. \n", nid, fPosX, fPosZ);
CNpc* pNpc = NULL;
pNpc = new CNpc;
if(pNpc == NULL) {
TRACE("#### Recv --> NpcUserInfoAll POINT Fail: uid=%d, sid=%d, name=%s, zone=%d, x=%f, z=%f.. \n", nid, sPid, szName, bZone, fPosX, fPosZ);
continue;
}
pNpc->Initialize();
pNpc->m_sNid = nid;
pNpc->m_sSid = sid;
pNpc->m_sPid = sPid;
pNpc->m_sSize = sSize;
pNpc->m_iWeapon_1 = iweapon_1;
pNpc->m_iWeapon_2 = iweapon_2;
strcpy(pNpc->m_strName, szName);
pNpc->m_byGroup = byGroup;
pNpc->m_byLevel = byLevel;
pNpc->m_bCurZone = bZone;
pNpc->m_pMap = m_pMain->GetZoneByID(bZone);
pNpc->m_fCurX = fPosX;
pNpc->m_fCurZ = fPosZ;
pNpc->m_fCurY = fPosY;
pNpc->m_byDirection = byDirection;
pNpc->m_NpcState = NPC_LIVE;
pNpc->m_tNpcType = tNpcType;
pNpc->m_iSellingGroup = iSellingGroup;
pNpc->m_iMaxHP = nMaxHP;
pNpc->m_iHP = nHP;
pNpc->m_byGateOpen = byGateOpen;
pNpc->m_sHitRate = sHitRate;
pNpc->m_byObjectType = byObjectType;
pNpc->m_NpcState = NPC_LIVE;
int nRegX = (int)fPosX / VIEW_DISTANCE;
int nRegZ = (int)fPosZ / VIEW_DISTANCE;
//.........这里部分代码省略.........