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


C++ GameObjectPointer类代码示例

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


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

示例1: Carcass

bool Carcass(uint32 i, SpellPointer pSpell) // Becoming a Shadoweave Tailor
{
	if(!pSpell->u_caster->IsPlayer())
		return true;

	PlayerPointer	pPlayer = TO_PLAYER(pSpell->u_caster);
	QuestLogEntry	*pQuest = pPlayer->GetQuestLogForEntry( 10804 );
	CreaturePointer	NetherDrake = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 21648);
	GameObjectPointer FlayerCarcass = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 185155);

	if ( FlayerCarcass == NULLGOB )
	{
		FlayerCarcass = sEAS.SpawnGameobject(pPlayer, 185155, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, 1, 0, 0, 0, 0);
		FlayerCarcass->Despawn(60000);
	}
	if ( NetherDrake == NULL )
		return true;

	if ( NetherDrake->HasActiveAura(38502) )
		return true;

	if( pQuest!=NULL && pQuest->GetMobCount( 0 ) < pQuest->GetQuest()->required_mobcount[0] )
	{
		NetherDrake->CastSpell(NetherDrake, dbcSpell.LookupEntry( 38502 ), true);
		NetherDrake->GetAIInterface()->m_moveFly = true;
		NetherDrake->GetAIInterface()->MoveTo(pPlayer->GetPositionX(), pPlayer->GetPositionY()+2, pPlayer->GetPositionZ(), 0);
		pQuest->SetMobCount( 0, pQuest->GetMobCount( 0 )+1);
		pQuest->SendUpdateAddKill( 0 );
		pQuest->UpdatePlayerFields();
	}
	return true;
}
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:32,代码来源:Shadowmoon.cpp

示例2: OnDied

	void OnDied(UnitPointer pKiller)
	{
		GameObjectPointer pContainmentSphere = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( 284.700287f, -25.500309f, -16.606443f, TELESTRA_CS );
		if( pContainmentSphere != NULL )
			pContainmentSphere->SetState(1);

		ParentClass::OnDied(pKiller);
	};
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:8,代码来源:Instance_Nexus.cpp

示例3: OnDied

	void OnDied(UnitPointer  pKiller)
	{
		GameObjectPointer  pDoor = GetUnit()->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(-129.034f, 2166.16f, 129.187f, 18972);
		if(pDoor)
			pDoor->SetState(0);

		ParentClass::OnDied(pKiller);
	}
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:8,代码来源:Instance_ShadowfangKeep.cpp

示例4: ToLegionHold

bool ToLegionHold(uint32 i, AuraPointer pAura, bool apply)
{
	if ( pAura == NULL || pAura->GetUnitCaster() == NULL || !pAura->GetUnitCaster()->IsPlayer() )
		return true;

	PlayerPointer pPlayer = TO_PLAYER( pAura->GetUnitCaster() );

	CreaturePointer pJovaanCheck = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(-3310.743896f, 2951.929199f, 171.132538f, 21633);
	if ( pJovaanCheck != NULL )
		return true;

	QuestLogEntry *pQuest = pPlayer->GetQuestLogForEntry( 10563 );
	if ( pQuest == NULL )
	{
		pQuest = pPlayer->GetQuestLogForEntry( 10596 );
		if ( pQuest == NULL )
			return true;
	}

	if ( apply )
	{

		pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, 20366 );
		pPlayer->Root();
		CreaturePointer pJovaan = sEAS.SpawnCreature( pPlayer, 21633, -3310.743896f, 2951.929199f, 171.132538f, 5.054039f, 0 );	// Spawn Jovaan
		if ( pJovaan != NULL )
		{
			pJovaan->SetUInt64Value( UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2 );
			if ( pJovaan->GetAIInterface() != NULL )
			{
				pJovaan->GetAIInterface()->SetAllowedToEnterCombat( false );
			}
		}
		GameObjectPointer pGameObject = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 184834);
		if ( pGameObject != NULL )
		{
			pGameObject->Despawn(60000);
			pPlayer->UpdateNearbyGameObjects();
		}
	}
	else
	{
		if ( pQuest->GetMobCount( 2 ) < pQuest->GetQuest()->required_mobcount[2] )
		{
			pQuest->SetMobCount( 2, pQuest->GetMobCount( 2 ) + 1 );
			pQuest->SendUpdateAddKill( 2 );
			pQuest->UpdatePlayerFields();
		}
	
		pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, pPlayer->GetUInt32Value( UNIT_FIELD_NATIVEDISPLAYID ) );
		pPlayer->UnRoot();
	}

	return true;
}
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:55,代码来源:Shadowmoon.cpp

示例5: SpawnObjects

void SpawnObjects(shared_ptr<MapMgr> pmgr)
{
    if(!pmgr || pmgr->GetMapId() != 530)
        return;

    const static sgodata godata[] =
    {
        { 182173, -290.016f, 3702.42f, 56.6729f, 0.0349066f, 0, 0, 0.0174524f, 0.999848f, 1, 32, 0, 1 },            // stadium
        { 182174, -184.889f, 3476.93f, 38.205f, -0.0174535f, 0, 0, 0.00872664f, -0.999962f, 1, 32, 0, 1 },            // overlook
        { 182175, -471.462f, 3451.09f, 34.6432f, 0.174533f, 0, 0, 0.0871557f, 0.996195f, 1, 32, 0, 1 },                // brokenhill
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    };

    const static sgodata godata_banner[] =
    {
        { 183515, -289.61f, 3696.83f, 75.9447f, 3.12414f, 0, 0, 0.999962f, 0.00872656f, 1, 32, 1375, 1 },                    // stadium
        { 182525, -187.887f, 3459.38f, 60.0403f, -3.12414f, 0, 0, 0.999962f, -0.00872653f, 1, 32, 1375, 1 },                // overlook
        { 183514, -467.078f, 3528.17f, 64.7121f, 3.14159f, 0, 0, 1, -4.37114E-8f, 1, 32, 1375, 1 },                        // brokenhill
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    };

    uint32 i;
    const sgodata* p, *p2;
    for(i = 0; i < 3; ++i)
    {
        p = &godata[i];
        p2 = &godata_banner[i];

        GameObjectPointer pGo = pmgr->GetInterface()->SpawnGameObject(p->entry, p->posx, p->posy, p->posz, p->facing, false, 0, 0);
        if(pGo == NULL)
            continue;

        GameObjectPointer pGo2 = pmgr->GetInterface()->SpawnGameObject(p2->entry, p2->posx, p2->posy, p2->posz, p2->facing, false, 0, 0);
        if(pGo2 == NULL)
            continue;

        pGo->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p->state);
        pGo2->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p2->state);
        pGo->SetUInt32Value(GAMEOBJECT_FLAGS, p->flags);
        pGo2->SetUInt32Value(GAMEOBJECT_FLAGS, p2->flags);
        pGo->SetUInt32Value(GAMEOBJECT_FACTION, p->faction);
        pGo2->SetUInt32Value(GAMEOBJECT_FACTION, p2->faction);

        for(uint32 j = 0; j < 4; ++j)
        {
            pGo->SetFloatValue(GAMEOBJECT_ROTATION + j, p->orientation[j]);
            pGo2->SetFloatValue(GAMEOBJECT_ROTATION + j, p2->orientation[j]);
        }

        // now make his script
        pGo->SetScript(new HellfirePeninsulaBannerAI(pGo));
        ((HellfirePeninsulaBannerAI*)pGo->GetScript())->pBanner = pGo2;

        pGo->PushToWorld(pmgr);
        pGo2->PushToWorld(pmgr);

        pGo->GetScript()->OnSpawn();
        printf("Spawned gameobject entry %u for world pvp on hellfire.\n", p->entry);
    }
}
开发者ID:AriDEV,项目名称:AscEmu,代码行数:60,代码来源:ZoneHellfirePeninsula.cpp

示例6: OnDied

	void OnDied(UnitPointer mKiller)
     {
   GameObjectPointer  pDoor = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(1173.01f, 1389.91f, 31.9723f, 104600);
   if(pDoor == 0)
   return;

   // Open the door
   pDoor->SetState(0);
       
   RemoveAIUpdateEvent();
     }
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:11,代码来源:Instance_ScarletMonastery.cpp

示例7: SpawnGameObject

GameObjectPointer MapScriptInterface::SpawnGameObject(uint32 Entry, float cX, float cY, float cZ, float cO, bool AddToWorld, uint32 Misc1, uint32 Misc2)
{
	GameObjectPointer pGameObject = mapMgr->CreateGameObject(Entry);
	if(pGameObject == NULL || !pGameObject->CreateFromProto(Entry, mapMgr->GetMapId(), cX, cY, cZ, cO, 0.0f, 0.0f, 0.0f, 0.0f))
		return NULLGOB;

	pGameObject->SetInstanceID(mapMgr->GetInstanceID());
	pGameObject->SetPhase(1);

	if(AddToWorld)
		pGameObject->PushToWorld(mapMgr);

	return pGameObject;
}
开发者ID:CadeLaRen,项目名称:Xeon-MMORPG-Emulator,代码行数:14,代码来源:MapScriptInterface.cpp

示例8: HellfirePeninsulaBannerAI

        HellfirePeninsulaBannerAI(GameObjectPointer go) : GameObjectAIScript(go)
        {
            m_bannerStatus = BANNER_STATUS_NEUTRAL;
            Status = 50;

            switch(go->GetEntry())
            {
                case TOWER_WEST:
                    ControlPointName = "The Stadium";
                    towerid = TOWER_STADIUM;
                    break;

                case TOWER_NORTH:
                    ControlPointName = "The Overlook";
                    towerid = TOWER_OVERLOOK;
                    break;

                case TOWER_SOUTH:
                    ControlPointName = "Broken Hill";
                    towerid = TOWER_BROKENHILL;
                    break;

                default:
                    ControlPointName = "Unknown";
                    break;
            }
        }
开发者ID:AriDEV,项目名称:AscEmu,代码行数:27,代码来源:ZoneHellfirePeninsula.cpp

示例9: GossipHello

	void GossipHello( ObjectPointer pObject, PlayerPointer pPlayer, bool AutoSend )
	{
		if ( pObject == NULL || pObject->GetTypeId() != TYPEID_ITEM || pPlayer == NULL )
			return;

		QuestLogEntry* QuestEntry = pPlayer->GetQuestLogForEntry( 9452 );
		if ( QuestEntry == NULL )
			return;

#ifndef BLIZZLIKE
		//if ( QuestEntry->GetMobCount( 0 ) >= QuestEntry->GetQuest()->required_mobcount[ 0 ] )
		//	return;
#endif
		if ( pPlayer->GetMapMgr() == NULLMAPMGR )
			return;

		// Meh, double object looking - we should find a way to remove this
		GameObjectPointer School = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 181616 );
		if ( School == NULLGOB || pPlayer->CalcDistance( School ) > 5.0f )
			return;

#ifdef BLIZZLIKE
		sEventMgr.AddEvent( School, &GameObject::Despawn, static_cast< uint32 >( 20000 ), EVENT_GAMEOBJECT_ITEM_SPAWN, 1000, 1, 0 );
#else
		School->Despawn( 20000 );
#endif
		pPlayer->CastSpell( pPlayer, dbcSpell.LookupEntry( TO_ITEM( pObject )->GetProto()->Spells[ 0 ].Id ), false );
		uint32 Chance = RandomUInt( 10 );
		if ( Chance <= 3 )
		{
			CreaturePointer NewCreature = sEAS.SpawnCreature( pPlayer, 17102, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), pPlayer->GetOrientation(), 180000 );
			if ( NewCreature != NULLCREATURE )
			{
				NewCreature->GetAIInterface()->StopMovement( 500 );
				NewCreature->setAttackTimer( 1000, false );
				NewCreature->m_noRespawn = true;
			};

			return;
		};

		sEAS.AddItem( 23614, pPlayer );
		QuestEntry->SendUpdateAddKill( 1 );
		QuestEntry->UpdatePlayerFields();
		pPlayer->Gossip_Complete();
	};
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:46,代码来源:Azuremyst_Isle.cpp

示例10: OnActivate

	void OnActivate(PlayerPointer pPlayer)
	{
		if(!pPlayer)
			return;

		if(!pPlayer->GetQuestLogForEntry(10526))
			return;

		// Wth is that ? To remove ?
		GameObjectPointer gobj = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 184729);
		if(!gobj)
			return;

		gobj->Despawn(6*60*1000);

		CreaturePointer spike = sEAS.SpawnCreature(pPlayer, 21319, 1315.54, 6688.33, -18, 0.001, 0);
		spike->Despawn(5*60*1000, 0);
	}
开发者ID:Vanj-crew,项目名称:HearthStone-Emu,代码行数:18,代码来源:GameObjects.cpp

示例11: DropFlag

void DropFlag(PlayerPointer  pPlayer, uint32 spellID)
{
	if(!pPlayer || spellID != SILITHYST_SPELL)
		return;
	uint32 triggerID = pPlayer->GetTeam() == ALLIANCE ? ALLIANCE_RETURN : HORDE_RETURN;
	// we have to use AreaTrigger.dbc here
	AreaTrigger* pAreaTrigger = AreaTriggerStorage.LookupEntry(triggerID);
	if(pAreaTrigger)
		if(pPlayer->CalcDistance(pAreaTrigger->x, pAreaTrigger->y, pAreaTrigger->z) > 10.0f)
		{
			GameObjectPointer pGo = pPlayer->GetMapMgr()->GetInterface()->SpawnGameObject(SILITHYST_MOUND, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, true, 0, 0);
			if(pGo == NULL)
			{
				pGo->Destructor();
				pGo = NULLGOB;
			}
		};
}
开发者ID:Carbinfibre,项目名称:Script-Land,代码行数:18,代码来源:ZoneSilithus.cpp

示例12: HandleGOScale

bool ChatHandler::HandleGOScale(const char* args, WorldSession* m_session)
{
	GameObjectPointer go = m_session->GetPlayer()->m_GM_SelectedGO;
	if( !go )
	{
		RedSystemMessage(m_session, "No selected GameObject...");
		return true;
	}
	if(!args)
	{
		RedSystemMessage(m_session, "Invalid syntax. Should be .gobject scale 1.0");
		return false;
	}
	float scale = (float)atof(args);
	if(!scale) scale = 1;
	go->SetFloatValue(OBJECT_FIELD_SCALE_X, scale);
	BlueSystemMessage(m_session, "Set scale to %.3f", scale);
	return true;
}
开发者ID:CadeLaRen,项目名称:Xeon-MMORPG-Emulator,代码行数:19,代码来源:Level2.cpp

示例13: data

void WorldSession::HandleDuelCancelled(WorldPacket & recv_data)
{
	if( _player->DuelingWith ==  NULL )
		return;

	if( _player->m_duelState == DUEL_STATE_STARTED )
	{
		_player->DuelingWith->EndDuel( DUEL_WINNER_KNOCKOUT );
		return;
	}

	WorldPacket data( SMSG_DUEL_COMPLETE, 1 );
	data << uint8( 1 );

	SendPacket( &data );
	_player->DuelingWith->m_session->SendPacket( &data );

	GameObjectPointer arbiter = _player->GetMapMgr() ? _player->GetMapMgr()->GetGameObject( GET_LOWGUID_PART(_player->GetUInt64Value( PLAYER_DUEL_ARBITER )) ) : NULLGOB;
	if( arbiter != NULL )
	{
		arbiter->RemoveFromWorld( true );
		arbiter->Destructor();
		arbiter = NULLGOB;
 	}

	_player->DuelingWith->SetUInt64Value( PLAYER_DUEL_ARBITER, 0 );
	_player->SetUInt64Value( PLAYER_DUEL_ARBITER, 0 );

	_player->DuelingWith->SetUInt32Value( PLAYER_DUEL_TEAM, 0 );
	_player->SetUInt32Value( PLAYER_DUEL_TEAM, 0);

	_player->DuelingWith->m_duelState = DUEL_STATE_FINISHED;
	_player->m_duelState = DUEL_STATE_FINISHED;

	_player->DuelingWith->m_duelCountdownTimer = 0;
	_player->m_duelCountdownTimer = 0;

	_player->DuelingWith->DuelingWith = NULLPLR;
	_player->DuelingWith = NULLPLR;

}
开发者ID:CadeLaRen,项目名称:Xeon-MMORPG-Emulator,代码行数:41,代码来源:DuelHandler.cpp

示例14: HandleGOEnable

bool ChatHandler::HandleGOEnable(const char *args, WorldSession *m_session)
{
	GameObjectPointer GObj = NULLGOB;

	GObj = m_session->GetPlayer()->m_GM_SelectedGO;
	if( !GObj )
	{
		RedSystemMessage(m_session, "No selected GameObject...");
		return true;
	}
	if(GObj->GetUInt32Value(GAMEOBJECT_DYNAMIC) == 1)
	{
		// Deactivate
		GObj->SetUInt32Value(GAMEOBJECT_DYNAMIC, 0);
	} else {
		// /Activate
		GObj->SetUInt32Value(GAMEOBJECT_DYNAMIC, 1);
	}
	BlueSystemMessage(m_session, "Gameobject activate/deactivated.");
	return true;
}
开发者ID:CadeLaRen,项目名称:Xeon-MMORPG-Emulator,代码行数:21,代码来源:Level2.cpp

示例15: TFSpawnObjects

void TFSpawnObjects(shared_ptr<MapMgr> pmgr)
{
    if(!pmgr || pmgr->GetMapId() != 530)
        return;

    const static sgodata godata[] =
    {
        { 183104, -3081.65f, 5335.03f, 17.1853f, -2.14675f, 0, 0, 0.878817f, -0.477159f, 1, 32, 0, 1 },
        { 183411, -2939.9f, 4788.73f, 18.987f, 2.77507f, 0, 0, 0.983255f, 0.182236f, 1, 32, 0, 1 },
        { 183412, -3174.94f, 4440.97f, 16.2281f, 1.86750f, 0, 0, 0.803857f, 0.594823f, 1, 32, 0, 1 },
        { 183413, -3603.31f, 4529.15f, 20.9077f, 0.994838f, 0, 0, 0.477159f, 0.878817f, 1, 32, 0, 1 },
        { 183414, -3812.37f, 4899.3f, 17.7249f, 0.087266f, 0, 0, 0.043619f, 0.999048f, 1, 32, 0, 1 },
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    };

    uint32 i;
    const sgodata* p;
    for(i = 0; i < 5; ++i)
    {
        p = &godata[i];

        GameObjectPointer pGo = NULLGOB;
        pGo = pmgr->GetInterface()->SpawnGameObject(p->entry, p->posx, p->posy, p->posz, p->facing, false, 0, 0);
        if(!pGo)
            continue;

        pGo->SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, p->state);
        pGo->SetUInt32Value(GAMEOBJECT_FLAGS, p->flags);
        pGo->SetUInt32Value(GAMEOBJECT_FACTION, p->faction);

        for(uint32 j = 0; j < 4; ++j)
        {
            pGo->SetFloatValue(GAMEOBJECT_ROTATION + j, p->orientation[j]);
        }

        // now make his script
        pGo->SetScript(new TerokkarForestBannerAI(pGo));

        pGo->PushToWorld(pmgr);

        pGo->GetScript()->OnSpawn();
    }
}
开发者ID:AscEmu,项目名称:AscEmu,代码行数:43,代码来源:ZoneTerokkarForest.cpp


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