当前位置: 首页>>代码示例>>C++>>正文


C++ CMonster::SetEventMob方法代码示例

本文整理汇总了C++中CMonster::SetEventMob方法的典型用法代码示例。如果您正苦于以下问题:C++ CMonster::SetEventMob方法的具体用法?C++ CMonster::SetEventMob怎么用?C++ CMonster::SetEventMob使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CMonster的用法示例。


在下文中一共展示了CMonster::SetEventMob方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: RegenObject

CMonster* CRegenManager::RegenObject(DWORD dwID, DWORD dwSubID, DWORD dwGridID, EObjectKind wObjectKind, WORD wMonsterKind, const VECTOR3* vPos, DWORD dwGroupID, DWORD DropItemID /* = 0 */, DWORD dwDropRatio /* = 100  */,BOOL bRandomPos /* = TRUE */, BOOL bEventRegen /* = FALSE  */, DWORD ownedObjectIndex)
{
    /// 06. 08. 이영준
    /// 같은 아이디를 사용하는 객체가 있을경우
    /// 리젠을 시키지 않고 NULL값을 반환하자!
    if( g_pUserTable->FindUser( dwID ) )
    {
        ASSERT(0);
        return NULL;
    }

    VECTOR3 vOutPos( *vPos );

    // 필드보스일 경우
    if( wObjectKind == eObjectKind_FieldBossMonster )
    {
        // 필드보스 매니저에 리젠 위치가 1개 이상 등록되어 있다면
        if( FIELDBOSSMONMGR->GetRegenPositionCount() > 0 )
        {
            // 등록된 리젠 위치에서 랜덤으로 결정한다
            VECTOR3 pos = FIELDBOSSMONMGR->GetRegenPosition();
            vOutPos.x = pos.x;
            vOutPos.z = pos.z;
        }
    }

    const MAPTYPE MapNum = g_pServerSystem->GetMapNum();

    if( bRandomPos )
    {
        int maxCount = 5;

        CAIGroup * pGroup = GROUPMGR->GetGroup(dwGroupID, dwGridID);
        DWORD range = pGroup->GetRegenRange();

        // 090611 LUJ, 생성 위치가 충돌하지 않도록 반복해서 찾는다
        do
        {
            if( 0 > --maxCount )
            {
                vOutPos = *vPos;
                break;
            }

            RangePosAtOrig(
                *vPos,
                range,
                vOutPos);
        }
        while( g_pServerSystem->GetMap()->CollisionTilePos( vOutPos.x, vOutPos.z, MapNum ) );
    }

    switch( wObjectKind )
    {
    case eObjectKind_ToghterPlayMonster:
    case eObjectKind_SpecialMonster:
    case eObjectKind_Monster:
    // 080616 LUJ, 함정 추가
    case eObjectKind_Trap:
    // 090316 LUJ, 탈것 추가
    case eObjectKind_Vehicle:
    {
        MONSTER_TOTALINFO MonsterInfo = {0};
        BASEOBJECT_INFO Baseinfo;
        ZeroMemory(
            &Baseinfo,
            sizeof(Baseinfo));
        BASE_MONSTER_LIST* pMonsterListInfo = GAMERESRCMNGR->GetMonsterListInfo(wMonsterKind);

        if(pMonsterListInfo == NULL)
            return NULL;

        Baseinfo.dwObjectID = dwID;
        SafeStrCpy(Baseinfo.ObjectName, pMonsterListInfo->Name, MAX_NAME_LENGTH+1);
        Baseinfo.BattleID = dwGridID;
        //		g_Console.LOG(4, "Regen Succeeded : CHANNEL:%d, GROUPID: %d, ID: %d, NAME: %s, (x,z):(%f,%f)", dwGridID, dwGroupID, dwID, pMonsterListInfo->Name, vOutPos.x, vOutPos.z);

        MonsterInfo.Life = pMonsterListInfo->Life;
        MonsterInfo.MonsterKind = wMonsterKind;
        MonsterInfo.Group = (WORD)dwGroupID;
        // 090316 LUJ, 소유한 오브젝트 번호 설정
        MonsterInfo.OwnedObjectIndex = ownedObjectIndex;

        CMonster* pMonster = g_pServerSystem->AddMonster(dwSubID, &Baseinfo, &MonsterInfo, &vOutPos,wObjectKind);
        if(!pMonster)
            return NULL;

        pMonster->SetEventMob(bEventRegen);
        if(bEventRegen && dwGroupID==ITEMRECALL_GROUP_ID)	// 아이템소환몹은 비선공으로 설정한다.
            pMonster->SetForeAttack(FALSE);

        pMonster->SetDropItemID(DropItemID, dwDropRatio);

        return pMonster;

    }
    break;

    // 필드보스 - 05.12 이영준
    // 필드보스 리젠
//.........这里部分代码省略.........
开发者ID:xianyinchen,项目名称:LUNAPlus,代码行数:101,代码来源:RegenManager.cpp


注:本文中的CMonster::SetEventMob方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。