Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Баг-репорты

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

Баг-репорты Описываем проблемы и ошибки работы ядра

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.12.2010, 21:04   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию some small bugs

Две не большие проблеммы:
1) Начинаем кастить открываем лут с моба - каст должен прерыватся.
2) Открываем лут с моба и начинаем кастить ( к примеру камень портала) - лут должен закрывается.
С пунктом №1 решение есть:

PHP код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 9812578..1e893d1 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -7845,+7845,13 @@ void Player::SendLoot(ObjectGuid guidLootType loot_type)
     if (
uint64 lguid GetLootGUID())
         
m_session->DoLootRelease(lguid);
 
+    
// prevent cast spell - player looted
+    if (loot_type == LOOT_CORPSE)
+    {      
+        if (
IsNonMeleeSpellCasted(true))
+            
InterruptNonMeleeSpells(true);
+    }        
+        
     
Loot    *loot 0;
     
PermissionTypes permission ALL_PERMISSION

Последний раз редактировалось Den; 26.12.2010 в 21:01. Причина: убраны непонятные выделения...
Den вне форума   Ответить с цитированием
Старый 24.12.2010, 12:25   #2
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Заметил не так давно баг ( нетак давно потому, что некогда небыло и нет сервера ) на последних ~50 ревизиях:
Убиваем моба, делаем логаут, загружаемся, смотрим, труп моба который до логаута был IsFriendlyTo, стал IsHostileTo. Есть ещё такой момент , если персонаж будет в группе или рейде, то после логаута с мобом всё ок и лут можно брать. Откатился до 10123 ревизии, проблемма существует, но немного не так, после логаута моб IsFriendlyTo, но лута как бы нет. Видимо баг существует уже давно...

add
Ещё одна мелочь, игрок сделавший логаут и при этом находящийся в группе - не должен исключаться из неё.
в WorldSession.cpp void WorldSession::LogoutPlayer(bool Save)
вместо:
Код:
if(_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket)
поставить:
Код:
if(!_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket)
Конечно проблемма исчезает, но правильно ли ?

Последний раз редактировалось Den; 26.12.2010 в 21:02. Причина: убраны непонятные выделения...
Den вне форума   Ответить с цитированием
Старый 30.12.2010, 09:53   #3
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Типы урона, такие как: утопание, усталость, лава, слизь - должны тикать не раз в секунду , а в две:
Код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 90131f2..8ead314 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -1048,7 +1048,7 @@ void Player::HandleDrowning(uint32 time_diff)
             // Timer limit - need deal damage
             if (m_MirrorTimer[BREATH_TIMER] < 0)
             {
-                m_MirrorTimer[BREATH_TIMER]+= 1*IN_MILLISECONDS;
+                m_MirrorTimer[BREATH_TIMER]+= 2*IN_MILLISECONDS;
                 // Calculate and deal damage
                 // TODO: Check this formula
                 uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel()-1);
@@ -1084,7 +1084,7 @@ void Player::HandleDrowning(uint32 time_diff)
             // Timer limit - need deal damage or teleport ghost to graveyard
             if (m_MirrorTimer[FATIGUE_TIMER] < 0)
             {
-                m_MirrorTimer[FATIGUE_TIMER]+= 1*IN_MILLISECONDS;
+                m_MirrorTimer[FATIGUE_TIMER]+= 2*IN_MILLISECONDS;
                 if (isAlive())                                            // Calculate and deal damage
                 {
                     uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel()-1);
@@ -1117,7 +1117,7 @@ void Player::HandleDrowning(uint32 time_diff)
             m_MirrorTimer[FIRE_TIMER]-=time_diff;
             if (m_MirrorTimer[FIRE_TIMER] < 0)
             {
-                m_MirrorTimer[FIRE_TIMER]+= 1*IN_MILLISECONDS;
+                m_MirrorTimer[FIRE_TIMER]+= 2*IN_MILLISECONDS;
                 // Calculate and deal damage
                 // TODO: Check this formula
                 uint32 damage = urand(600, 700);
Den вне форума   Ответить с цитированием
Старый 30.12.2010, 14:11   #4
evilstar
Супер-модератор
 
Аватар для evilstar
 
Регистрация: 07.04.2010
Адрес: Москва
Сообщений: 221
Сказал(а) спасибо: 101
Поблагодарили 27 раз(а) в 17 сообщениях
evilstar Скоро придёт к известностиevilstar Скоро придёт к известности
Отправить сообщение для evilstar с помощью ICQ
Подмигивание

Цитата:
Сообщение от Den Посмотреть сообщение
add
Ещё одна мелочь, игрок сделавший логаут и при этом находящийся в группе - не должен исключаться из неё.
в WorldSession.cpp void WorldSession::LogoutPlayer(bool Save)
вместо:
Код:
if(_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket)
поставить:
Код:
if(!_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket)
Конечно проблемма исчезает, но правильно ли ?
На оффе до Катаклизма при логауте игрок покидал обычную группу (иногда и не покидал), но в рейде оставался. Сейчас эта ситуация немного меняется, сейчас даже при логауте игрок остается в группе.
__________________

Теперь и в Бете Warlords of Draenor & HotS !
evilstar вне форума   Ответить с цитированием
Старый 07.01.2011, 09:19   #5
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

По поводу: Убиваем моба, делаем логаут, загружаемся, смотрим, труп моба который до логаута был IsFriendlyTo, стал IsHostileTo.
Если не ошибаюсь, то просматривать надо, этих два места ?
1) Player.cpp


2) Object.cpp
Den вне форума   Ответить с цитированием
Старый 15.01.2011, 10:15   #6
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Некоторые проки от чантов на офе - не снимаются правой кнопкой мыши (у нас снимаются).
Проверил только: Берсерк, Мангуст, Рыцарь.
Что ж получается, нужно пихать конкретные спелы в void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket) ?

Выходит, что на офе , все проки аур от чантов, професии зачарование - не снимаются пкм ?
Den вне форума   Ответить с цитированием
Старый 22.01.2011, 07:46   #7
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Может быть это смешно, но после отмены логаута игрок не должен вставать.
У нас встаёт. В MiscHandler.cpp void WorldSession::HandleLogoutCancelOpcode( WorldPacket & /*recv_data*/ )
убераем ?
//! Stand Up
GetPlayer()->SetStandState(UNIT_STAND_STATE_STAND);
А тем временем, на офе есть баг у друида, с обликом птицы, после отмены логаута она подлетает , а потом снова садится, а у нас нету такого О черт, спалился ...
Den вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[small fix] Removes Stealth for Loot Den Патчи на рассмотрении 13 08.02.2011 17:36
[10516] Fix small typo in class ExplodeCorpseObjectCheck newsbot CMaNGOS Commits 0 22.09.2010 10:21
[10224] Small code style cleanup. newsbot CMaNGOS Commits 0 19.07.2010 07:30
Small backport from other branch. newsbot CMaNGOS Commits 0 05.04.2010 13:20


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


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