本文整理汇总了C++中GameObject::GetMapMgr方法的典型用法代码示例。如果您正苦于以下问题:C++ GameObject::GetMapMgr方法的具体用法?C++ GameObject::GetMapMgr怎么用?C++ GameObject::GetMapMgr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GameObject
的用法示例。
在下文中一共展示了GameObject::GetMapMgr方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleGODelete
bool ChatHandler::HandleGODelete(const char *args, WorldSession *m_session)
{
GameObject* GObj = m_session->GetPlayer()->m_GM_SelectedGO;
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
bool foundonmap = true;
if(GObj->m_spawn && GObj->m_spawn->entry == GObj->GetEntry() && GObj->IsInWorld())
{
uint32 cellx = GObj->GetMapMgr()->GetPosX(GObj->m_spawn->x);
uint32 celly = GObj->GetMapMgr()->GetPosY(GObj->m_spawn->y);
if(cellx < _sizeX && celly < _sizeY)
{
foundonmap = false;
GOSpawnList::iterator itr;
ASSERT(GObj->GetMapMgr()->GetBaseMap() != NULL)
CellSpawns *c = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsList(cellx, celly);
if(c != NULL)
{
for(itr = c->GOSpawns.begin(); itr != c->GOSpawns.end(); itr++)
{
if((*itr) == GObj->m_spawn)
{
foundonmap = true;
c->GOSpawns.erase(itr);
break;
}
}
}
}
GObj->DeleteFromDB();
if(foundonmap)
{
delete GObj->m_spawn;
GObj->m_spawn = NULL;
}
}
GObj->Despawn(0, 0); // Deleted through ExpireAndDelete
GObj = NULLGOB;
if(foundonmap)
BlueSystemMessage(m_session, "Deleted selected object and erased it from spawn map.");
else
BlueSystemMessage(m_session, "Deleted selected object.");
m_session->GetPlayer()->m_GM_SelectedGO = NULLGOB;
return true;
}
示例2: HandleGODelete
bool ChatHandler::HandleGODelete(const char *args, WorldSession *m_session)
{
GameObject *GObj = m_session->GetPlayer()->m_GM_SelectedGO;
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
if (GObj->m_spawn != NULL && GObj->m_spawn->entry == GObj->GetEntry())
{
uint32 cellx = uint32(((_maxX - GObj->m_spawn->x) / _cellSize));
uint32 celly = uint32(((_maxY - GObj->m_spawn->y) / _cellSize));
if (cellx < _sizeX && celly < _sizeY)
{
CellSpawns* sp = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsList(cellx, celly);
if (sp != NULL)
{
for (GOSpawnList::iterator itr = sp->GOSpawns.begin(); itr != sp->GOSpawns.end(); ++itr)
if ((*itr) == GObj->m_spawn)
{
sp->GOSpawns.erase(itr);
break;
}
}
GObj->DeleteFromDB();
delete GObj->m_spawn;
GObj->m_spawn = NULL;
}
}
GObj->DeleteFromDB();
GObj->Despawn(0);
delete GObj;
m_session->GetPlayer()->m_GM_SelectedGO = 0;
/* std::stringstream sstext;
GameObject *GObj = m_session->GetPlayer()->m_GM_SelectedGO;
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
GObj->GetMapMgr()->GetBaseMap()->GetTemplate()->RemoveIndex<GameObject>(GObj); // remove index
GObj->Despawn(3600000);
GObj->DeleteFromDB();
sObjHolder.Delete<GameObject>(GObj);
m_session->GetPlayer()->m_GM_SelectedGO = NULL;
GreenSystemMessage(m_session, "GameObject successfully deleted from world and database !");
*/
return true;
}
示例3: HandleGODelete
bool ChatHandler::HandleGODelete(const char *args, WorldSession *m_session)
{
GameObject *GObj = m_session->GetPlayer()->GetSelectedGo();
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
if(GObj->m_spawn != 0 && GObj->m_spawn->entry == GObj->GetEntry())
{
uint32 cellx=float2int32(((_maxX-GObj->m_spawn->x)/_cellSize));
uint32 celly=float2int32(((_maxY-GObj->m_spawn->y)/_cellSize));
if(cellx < _sizeX && celly < _sizeY)
{
//m_session->GetPlayer()->GetMapMgr()->GetBaseMap()->GetSpawnsListAndCreate(cellx,celly)->GOSpawns.erase(GObj->m_spawn);
CellSpawns * c = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsListAndCreate(cellx, celly);
for(GOSpawnList::iterator itr = c->GOSpawns.begin(); itr != c->GOSpawns.end(); ++itr)
if((*itr) == GObj->m_spawn)
{
c->GOSpawns.erase(itr);
break;
}
GObj->DeleteFromDB();
delete GObj->m_spawn;
}
}
GObj->Despawn(0);
sGMLog.writefromsession( m_session, "deleted gameobject %s, entry %u", GameObjectNameStorage.LookupEntry(GObj->GetEntry())->Name, GObj->GetEntry() );
delete GObj;
m_session->GetPlayer()->m_GM_SelectedGO = 0;
/* std::stringstream sstext;
GameObject *GObj = m_session->GetPlayer()->m_GM_SelectedGO;
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
GObj->GetMapMgr()->GetBaseMap()->GetTemplate()->RemoveIndex<GameObject>(GObj); // remove index
GObj->Despawn(3600000);
GObj->DeleteFromDB();
sObjHolder.Delete<GameObject>(GObj);
m_session->GetPlayer()->m_GM_SelectedGO = NULL;
GreenSystemMessage(m_session, "GameObject successfully deleted from world and database !");
*/
return true;
}
示例4: HandleGODelete
bool ChatHandler::HandleGODelete(const char *args, WorldSession *m_session)
{
GameObject *GObj = m_session->GetPlayer()->GetSelectedGo();
if( GObj == NULL )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
if( GObj->m_spawn != NULL && GObj->m_spawn->entry == GObj->GetEntry() )
{
uint32 cellx = uint32(((_maxX-GObj->m_spawn->x)/_cellSize));
uint32 celly = uint32(((_maxY-GObj->m_spawn->y)/_cellSize));
if( cellx < _sizeX && celly < _sizeY )
{
CellSpawns * sp = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsList( cellx, celly );
if( sp != NULL )
{
for( GOSpawnList::iterator itr = sp->GOSpawns.begin(); itr != sp->GOSpawns.end(); ++itr )
if( (*itr) == GObj->m_spawn )
{
sp->GOSpawns.erase( itr );
break;
}
}
GObj->DeleteFromDB();
delete GObj->m_spawn;
GObj->m_spawn = NULL;
}
}
GObj->Despawn(0, 0); // We do not need to delete the object because GameObject::Despawn with no time => ExpireAndDelete() => _Expire() => delete GObj;
sGMLog.writefromsession(m_session,"deleted game object entry %u on map %u at X:%f Y:%f Z:%f Name %s", GObj->GetEntry(),GObj->GetMapId(),GObj->GetPositionX(),GObj->GetPositionY(),GObj->GetPositionZ(),GameObjectNameStorage.LookupEntry(GObj->GetEntry())->Name);
m_session->GetPlayer()->m_GM_SelectedGO = 0;
/* std::stringstream sstext;
GameObject *GObj = m_session->GetPlayer()->m_GM_SelectedGO;
if( !GObj )
{
RedSystemMessage(m_session, "No selected GameObject...");
return true;
}
GObj->GetMapMgr()->GetBaseMap()->GetTemplate()->RemoveIndex<GameObject>(GObj); // remove index
GObj->Despawn(3600000);
GObj->DeleteFromDB();
sObjHolder.Delete<GameObject>(GObj);
m_session->GetPlayer()->m_GM_SelectedGO = NULL;
GreenSystemMessage(m_session, "GameObject successfully deleted from world and database !");
*/
return true;
}
示例5: HandleGODelete
bool ChatHandler::HandleGODelete(const char* args, WorldSession* m_session)
{
GameObject* GObj = m_session->GetPlayer()->GetSelectedGo();
if(!GObj)
{
RedSystemMessage(m_session, "No selected GameObject...");
return false;
}
if(GObj->IsInBg())
{
RedSystemMessage(m_session, "GameObjects can't be deleted in Battlegrounds");
return false;
}
if(GObj->m_spawn && GObj->m_spawn->entry == GObj->GetEntry())
{
uint32 cellx = uint32(((_maxX - GObj->m_spawn->x) / _cellSize));
uint32 celly = uint32(((_maxY - GObj->m_spawn->y) / _cellSize));
if(cellx < _sizeX && celly < _sizeY)
{
CellSpawns* sp = GObj->GetMapMgr()->GetBaseMap()->GetSpawnsList(cellx, celly);
if(sp)
{
for(GOSpawnList::iterator itr = sp->GOSpawns.begin(); itr != sp->GOSpawns.end(); ++itr)
{
if((*itr) == GObj->m_spawn)
{
sp->GOSpawns.erase(itr);
break;
}
}
}
GObj->DeleteFromDB();
delete GObj->m_spawn;
GObj->m_spawn = NULL;
}
}
sGMLog.writefromsession(m_session, "deleted game object entry %u on map %u at X:%f Y:%f Z:%f Name %s", GObj->GetEntry(), GObj->GetMapId(), GObj->GetPositionX(), GObj->GetPositionY(), GObj->GetPositionZ(), GameObjectNameStorage.LookupEntry(GObj->GetEntry())->Name);
GObj->Despawn(0, 0); // We do not need to delete the object because GameObject::Despawn with no time => ExpireAndDelete() => _Expire() => delete GObj;
m_session->GetPlayer()->m_GM_SelectedGO = 0;
return true;
}
示例6: UseFishingNode
void GameObject::UseFishingNode(Player *player)
{
sEventMgr.RemoveEvents( this );
if( GetUInt32Value( GAMEOBJECT_FLAGS ) != 32 ) // Clicking on the bobber before something is hooked
{
player->GetSession()->OutPacket( SMSG_FISH_NOT_HOOKED );
EndFishing( player, true );
return;
}
/* Unused code: sAreaStore.LookupEntry(GetMapMgr()->GetAreaID(GetPositionX(),GetPositionY()))->ZoneId*/
uint32 zone = player->GetAreaID();
if( zone == 0 ) // If the player's area ID is 0, use the zone ID instead
zone = player->GetZoneId();
FishingZoneEntry *entry = FishingZoneStorage.LookupEntry( zone );
if( entry == NULL ) // No fishing information found for area or zone, log an error, and end fishing
{
sLog.outError( "ERROR: Fishing zone information for zone %d not found!", zone );
EndFishing( player, true );
return;
}
uint32 maxskill = entry->MaxSkill;
uint32 minskill = entry->MinSkill;
if( player->_GetSkillLineCurrent( SKILL_FISHING, false ) < maxskill )
player->_AdvanceSkillLine( SKILL_FISHING, float2int32( 1.0f * sWorld.getRate( RATE_SKILLRATE ) ) );
GameObject * school = NULL;
this->AquireInrangeLock(); //make sure to release lock before exit function !
for ( InRangeSet::iterator it = GetInRangeSetBegin(); it != GetInRangeSetEnd(); ++it )
{
if ( (*it) == NULL || (*it)->GetTypeId() != TYPEID_GAMEOBJECT || (*it)->GetUInt32Value(GAMEOBJECT_TYPE_ID) != GAMEOBJECT_TYPE_FISHINGHOLE)
continue;
school = static_cast<GameObject *>( *it );
if ( !isInRange( school, (float)school->GetInfo()->sound1 ) )
{
school = NULL;
continue;
}
else
break;
}
this->ReleaseInrangeLock();
if ( school != NULL ) // open school loot if school exists
{
lootmgr.FillGOLoot( &school->loot, school->GetEntry(), school->GetMapMgr() ? ( school->GetMapMgr()->iInstanceMode ? true : false ) : false );
player->SendLoot( school->GetGUID(), LOOT_FISHING );
EndFishing( player, false );
school->CatchFish();
if ( !school->CanFish() )
sEventMgr.AddEvent( school, &GameObject::Despawn, ( 1800000 + RandomUInt( 3600000 ) ), EVENT_GAMEOBJECT_EXPIRE, 10000, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT ); // respawn in 30 - 90 minutes
}
else if( Rand( ( ( player->_GetSkillLineCurrent( SKILL_FISHING, true ) - minskill ) * 100 ) / maxskill ) ) // Open loot on success, otherwise FISH_ESCAPED.
{
lootmgr.FillFishingLoot( &loot, zone );
player->SendLoot( GetGUID(), LOOT_FISHING );
EndFishing( player, false );
}
else // Failed
{
player->GetSession()->OutPacket( SMSG_FISH_ESCAPED );
EndFishing( player, true );
}
}