Exemplo n.º 1
0
void WeatherInfo::SendUpdate()
{
	WorldPacket data(SMSG_WEATHER, 9);
	BuildWeatherPacket(&data, m_currentEffect, m_currentDensity);

	sWorld.SendZoneMessage(&data, m_zoneId, 0);
}
Exemplo n.º 2
0
void WeatherInfo::SendUpdate()
{
    WorldPacket data(SMSG_WEATHER, 9);
    BuildWeatherPacket(&data, m_currentEffect, m_currentDensity);
//  MapMgr* mgr = sInstanceMgr.GetMapMgr(dbcAreaTable.LookupEntry(m_zoneId)->mapId);
//  if(mgr)
//      mgr->SendPacketToPlayers(m_zoneId, FACTION_MASK_ALL, &data);
    //MapSessions aren't threadsafe, reverted to old way until solved.
    sWorld.SendZoneMessage(&data, m_zoneId, 0);
}
Exemplo n.º 3
0
void WeatherInfo::SendUpdate(Player* plr) //Updates weather for player's zone-change only if new zone weather differs
{
    if (plr->m_lastSeenWeather == m_currentEffect) //return if weather is same as previous zone
        return;

    plr->m_lastSeenWeather = m_currentEffect;

    WorldPacket data(SMSG_WEATHER, 9);
    BuildWeatherPacket(&data, m_currentEffect, m_currentDensity);
    plr->GetSession()->SendPacket(&data);
}
Exemplo n.º 4
0
void WeatherInfo::SendUpdate()
{
	WorldPacket * data;
	data = BuildWeatherPacket(m_currentEffect, m_currentDensity);
	MapMgr* mgr = sInstanceMgr.GetMapMgr(dbcArea.LookupEntryForced(m_zoneId)->mapId);
	if(mgr)
	{
		//use an event to get into the correct context then, cause SendZoneMessage is gay...in a bad way.
		sEventMgr.AddEvent(mgr, &MapMgr::EventSendPacketToPlayers, int32(m_zoneId), int32(FACTION_MASK_ALL), data, EVENT_WEATHER_UPDATE, 0, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);
	}
	//MapSessions aren't thread safe, reverted to old way until solved.
	//sWorld.SendZoneMessage(&data, m_zoneId, 0);
}
Exemplo n.º 5
0
void WeatherMgr::SendWeather(Player* plr)  //Update weather when player has changed zone (WorldSession::HandleZoneUpdateOpcode)
{
    std::map<uint32, WeatherInfo*>::iterator itr;
    itr = m_zoneWeathers.find(plr->GetZoneId());

    if (itr == m_zoneWeathers.end())
    {
        WorldPacket data(SMSG_WEATHER, 9);
        BuildWeatherPacket(&data, 0, 0);
        plr->GetSession()->SendPacket(&data);
        plr->m_lastSeenWeather = 0;

        return;
    }
    else
    {
        itr->second->SendUpdate(plr);
    }
}