Ru-MaNGOS

Вернуться   Ru-MaNGOS > Разработка скриптов > Отвергнутые

Важная информация

Отвергнутые Патчи, не принятые разработчиками ScripDev2

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.04.2010, 21:34   #1
Chipleo
Пользователь
 
Аватар для Chipleo
 
Регистрация: 05.04.2010
Сообщений: 53
Сказал(а) спасибо: 4
Поблагодарили 24 раз(а) в 15 сообщениях
Chipleo На верном пути
По умолчанию [tmp fix] пропажа каналов при телепортах

Код:
@@ -75,11 +75,11 @@ void Channel::Join(uint64 p, const char *pass)
         MakeWrongPassword(&data);
         SendToOne(&data, p);
         return;
     }
 
-    Player *plr = sObjectMgr.GetPlayer(p);
+    Player *plr = HashMapHolder<Player>::Find(p);
 
     if(plr)
     {
         if(HasFlag(CHANNEL_FLAG_LFG) &&
             sWorld.getConfig(CONFIG_BOOL_RESTRICTED_LFG_CHANNEL) && plr->GetSession()->GetSecurity() == SEC_PLAYER &&
@@ -108,11 +108,12 @@ void Channel::Join(uint64 p, const char *pass)
     pinfo.player = p;
     pinfo.flags = 0;
     players[p] = pinfo;
 
     MakeYouJoined(&data);
-    SendToOne(&data, p);
+    if (plr) 
+		plr->GetSession()->SendPacket(&data); 
     JoinNotify(p);
 
     // if no owner first logged will become
     if(!IsConstant() && !m_ownerGUID)
когда игрок заходит в инст, он пропадает из каналов General,... такое же случается при гм командах дальних телепортов. Происходит изза того что на время перемещения игрок не в мире, поетому часть кода не работает.
Chipleo вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Lightunit (27.04.2010), Limpnau (12.06.2010), Vladimir (19.12.2010)
Старый 27.04.2010, 13:55   #2
Chipleo
Пользователь
 
Аватар для Chipleo
 
Регистрация: 05.04.2010
Сообщений: 53
Сказал(а) спасибо: 4
Поблагодарили 24 раз(а) в 15 сообщениях
Chipleo На верном пути
По умолчанию

Код:
----------------------------- src/game/Player.cpp -----------------------------
index 8a53809..8ebf515 100644
@@ -1946,6 +1946,17 @@ void Player::ProcessDelayedOperations()
         CastSpell(this, 26013, true);               // Deserter
     }
 
+    if(m_DelayedOperations & DELAYED_UPDATE_ZONE)
+    {
+        UpdateLocalChannels(m_zoneUpdateId);
+
+		// group update
+		if(GetGroup())
+			SetGroupUpdateFlag(GROUP_UPDATE_FLAG_ZONE);
+
+		UpdateZoneDependentAuras(m_zoneUpdateId);
+    }
+
     //we have executed ALL delayed ops, so clear the flag
     m_DelayedOperations = 0;
 }
@@ -6422,6 +6441,12 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
         DestroyZoneLimitedItem( true, newZone );
 
     // recent client version not send leave/join channel packets for built-in local channels
+	if(!IsInWorld())
+	{
+        ScheduleDelayedOperation(DELAYED_UPDATE_ZONE);
+		return;
+	}
+
     UpdateLocalChannels( newZone );
 
     // group update

------------------------------ src/game/Player.h ------------------------------
index d84e931..d003853 100644
@@ -740,6 +740,7 @@ enum PlayerDelayedOperations
     DELAYED_SAVE_PLAYER = 1,
     DELAYED_RESURRECT_PLAYER = 2,
     DELAYED_SPELL_CAST_DESERTER = 4,
+	DELAYED_UPDATE_ZONE = 8,
     DELAYED_END
 };
другой, более правильный способ исправления бага. Вместе с тем, замечен еще баг, который все еще не исправлен - если игрок в пати телепортируется в инст, а пати вне инста - пати видит статус игрока - оффлайн.

Последний раз редактировалось Chipleo; 27.04.2010 в 13:59.
Chipleo вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Limpnau (12.06.2010)
Старый 28.04.2010, 21:28   #3
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Такой баг кажется есть и в мастер ветке.
SeT вне форума   Ответить с цитированием
Старый 19.12.2010, 14:53   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Должно было быть поправлено после переноса обновления каналов в SendInitialPacketsAfterAddToMap
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 04:11. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot