Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи на рассмотрении (http://mangos.ytdb.ru/forumdisplay.php?f=49)
-   -   [small fix] Removes Stealth for Loot (http://mangos.ytdb.ru/showthread.php?t=2739)

Den 24.10.2010 22:00

[small fix] Removes Stealth for Loot
 
При открывании лута - должен сниматься стелс.

PHP код:

diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 27f848c
..b6c853f 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -8109,+8109,14 @@ void Player::SendLoot(ObjectGuid guidLootType loot_type)
 
     if (
loot_type == LOOT_CORPSE && !guid.IsItem())
         
SetFlag(UNIT_FIELD_FLAGSUNIT_FLAG_LOOTING);
+        
+    
// Removes Stealth for Loot 
+    RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
+    
+    
WorldPacket data2(SMSG_LOOT_LIST0);
+    
GetSession()->SendPacket(&data2);
+    
+    
DEBUG_LOG("WORLD: Sent SMSG_LOOT_LIST");    
 }
 
 
void Player::SendNotifyLootMoneyRemoved() 

Хотелось бы узнать, правильно ли это ?

Insider42 25.10.2010 12:45

А Обшаривание карманов разве не прибъет?

Den 25.10.2010 14:14

Цитата:

Сообщение от Insider42 (Сообщение 15386)
А Обшаривание карманов разве не прибъет?

Угу , совсем забыл - прибивает...

Добавлено через 7 минут
Вот так работает как надо:


PHP код:

diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index df01f78
..c78fb70 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -8108,+8108,18 @@ void Player::SendLoot(ObjectGuid guidLootType loot_type)
 
     if (
loot_type == LOOT_CORPSE && !guid.IsItem())
         
SetFlag(UNIT_FIELD_FLAGSUNIT_FLAG_LOOTING);
+        
+    
// Removes Stealth for Loot
+    if (loot_type != LOOT_PICKPOCKETING)            // no remove stealth: for use Pick Pocket
+    {
+    
+        
RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
+            
+        
WorldPacket data(SMSG_LOOT_LIST0);    
+        
GetSession()->SendPacket(&data);
+    
+        
DEBUG_LOG("WORLD: Sent SMSG_LOOT_LIST");
+    }        
 }
 
 
void Player::SendNotifyLootMoneyRemoved() 


zergtmn 25.10.2010 14:49

Не логично делать это в SendLoot и не верно для item лута.
Скорее всего существует interrupt флаг "использование GO".

Insider42 25.10.2010 15:51

А чем флаг AURA_INTERRUPT_FLAG_CAST не понравился? По-моему открытие ГО тот же самый каст...

Den 01.11.2010 11:34

А вот так правильно будет ?

PHP код:

diff --git a/src/game/LootHandler.cpp b/src/game/LootHandler.cpp
index cb4f2b8
..75abe52 100644
--- a/src/game/LootHandler.cpp
+++ b/src/game/LootHandler.cpp
@@ -276,+276,16 @@ void WorldSession::HandleLootMoneyOpcodeWorldPacket /*recv_data*/ )
 
void WorldSession::HandleLootOpcodeWorldPacket recv_data )
 {
     
DEBUG_LOG("WORLD: CMSG_LOOT");
+    
+    
//////////// removes stealth for loot /////////////////////////////
+    if (_player->GetLootGUID() != LOOT_PICKPOCKETING)       // no remove stealth: for use Pick Pocket
+    {
+        if (
SPELL_AURA_MOD_STEALTH)
+        {
+            
_player->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);                        
+        }
+    }
+    
////////////////////////////////////////////////////////////////////    
 
     
ObjectGuid guid;
     
recv_data >> guid

ЗЫ Ещё штук с двадцать(если не больше) опкодов - которые снимают стелс(на офе), разве правильно будет пихать такую кучу проверок ?

LordJZ 01.11.2010 13:58

А это зачем?
Код:

WorldPacket data(SMSG_LOOT_LIST, 0);

Den 13.11.2010 22:00

Не стал создавать новую тему на такую же мелочь.
Вообщем описание:
1. Снимается стелс - когда персонаж сделал логаут (только по завершению).
2. Если у рога прокачены таланты: Overkill или Master of sublety , так же снимаются по завершению логаута.
3. Снимается рассовая абилка ночных эльфов Shadowmeld (тоже по завершению логаута).
4. Снимаются ауры инвиза - дающие предметы http://www.wowhead.com/item=3823 и http://www.wowhead.com/item=9172
5. И по завершению логаута, если персонаж был в стелсе (или вышел из него - прямо перед выходом) с него сбрасывается кулдаун , со стелса всмысле, это не касается рассовой абилки Shadowmelda .
Правильным ли будет это?


PHP код:

diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp
index 1e7c00c
..d3cd5de 100644
--- a/src/game/WorldSession.cpp
+++ b/src/game/WorldSession.cpp
@@ -294,+294,25 @@ void WorldSession::LogoutPlayer(bool Save)
         if (
uint64 lguid GetPlayer()->GetLootGUID())
             
DoLootRelease(lguid);
 
+        
// remove auras: stealth, shadowmeld (racial), overkill, master of sublety only for player logout complete
+        // remove auras use items 3823, 9172 only for player logout complete
+        // reset cooldown stealth only for player logout complete
+        if (_player->GetSession()->PlayerLogout())  
+        {      
+            if (
_player->HasAuraType(SPELL_AURA_MOD_STEALTH) ||        
+                
_player->HasAuraType(SPELL_AURA_MOD_POWER_REGEN_PERCENT) ||
+                
_player->HasAuraType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE) ||
+                
_player->HasAuraType(SPELL_AURA_MOD_INVISIBILITY_DETECTION) ||
+                
_player->HasSpellCooldown(1784))
+            {
+                
_player->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);                 // stealth
+                _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_POWER_REGEN_PERCENT);     // overkill
+                _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);     // master of subtlety    
+                _player->RemoveSpellsCausingAura(SPELL_AURA_MOD_INVISIBILITY_DETECTION);  // auras from item 3823, 9172
+                _player->RemoveSpellCooldown(1784);                                       // reset cooldown stealth
+            }
+        }                
+        
         
///- If the player just died before logging out, make him appear as a ghost
         //FIXME: logout must be delayed in case lost connection with client in time of combat
         
if (_player->GetDeathTimer()) 


MaS0n 13.11.2010 22:20

Проверка if (_player->GetSession()->PlayerLogout()) нелогична, функция LogoutPlayer(...) и так или вызывается четко по завершению логаута, если с таймером запроса, или используется для инстант логаута

Остальное вроде норм, хотя лучше б снимать реальные ауры на персе, а не целиком по типам

Den 06.02.2011 07:26

Наверное так , будет правильнее ?

Код:

diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index df1be45..534cd93 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -17197,9 +17197,25 @@ void Player::_SaveAuras()
    for(SpellAuraHolderMap::const_iterator itr = auraHolders.begin(); itr != auraHolders.end(); ++itr)
    {
        SpellAuraHolder *holder = itr->second;
+
+        bool save = true;
+        for (int32 j = 0; j < MAX_EFFECT_INDEX; ++j)
+        {
+              SpellEntry const* spellInfo = holder->GetSpellProto();
+            if (spellInfo->EffectApplyAuraName[j] == SPELL_AURA_MOD_STEALTH ||
+                  spellInfo->EffectApplyAuraName[j] == SPELL_AURA_MOD_INVISIBILITY ||
+                  spellInfo->EffectApplyAuraName[j] == SPELL_AURA_MOD_POWER_REGEN_PERCENT ||
+                  spellInfo->EffectApplyAuraName[j] == SPELL_AURA_MOD_DAMAGE_PERCENT_DONE ||
+                  spellInfo->EffectApplyAuraName[j] == SPELL_AURA_MOD_INVISIBILITY_DETECTION)
+              {
+                  save = false;
+                  break;
+              }
+        }
+
        //skip all holders from spells that are passive or channeled
        //do not save single target holders (unless they were cast by the player)
-        if (!holder->IsPassive() && !IsChanneledSpell(holder->GetSpellProto()) && (holder->GetCasterGUID() == GetGUID() || !holder->IsSingleTarget()))
+        if (save && !holder->IsPassive() && !IsChanneledSpell(holder->GetSpellProto()) && (holder->GetCasterGUID() == GetGUID() || !holder->IsSingleTarget()))
        {
            int32 damage[MAX_EFFECT_INDEX];
            int32 remaintime[MAX_EFFECT_INDEX];

Помню что, Сущность озера ледяных оков и Благословение аукиндона,так же, но вот указывать тип ауры, когда её используют ещё десяток спелов , которые не проверены....

zergtmn 06.02.2011 12:01

Попробуйте найти общие атрибуты у таких спеллов.

Amaru 06.02.2011 14:02

AURA_INTERRUPT_FLAG_TALK = 0x00000400, // 10

Код:

select id,spellname,rank,spellfamilyname from spellstore where aurainterruptflags & 0x00000400 = 0x00000400;
| id    | spellname                                | rank      | spellfamilyname |
|    66 | Invisibility                              |            |              3 |
|  1539 | Feed Pet                                  |            |              0 |
|  1784 | Stealth                                  |            |              8 |
|  1785 | Stealth                                  | Rank 2    |              8 |
|  1786 | Stealth                                  | Rank 3    |              8 |
|  1787 | Stealth                                  | Rank 4    |              8 |
|  1856 | Vanish                                    | Rank 1    |              8 |
|  1857 | Vanish                                    | Rank 2    |              8 |
|  3385 | Boar Charge                              |            |              0 |
|  3648 | Phase Out                                |            |              0 |
|  3680 | Lesser Invisibility                      |            |              13 |
|  4079 | Cloaking                                  |            |              0 |
|  4141 | Summon Myzrael                            |            |              0 |
|  4981 | Inducing Vision                          |            |              0 |
|  5010 | Scorch Breath                            |            |              0 |
|  5169 | Defias Disguise                          |            |              0 |
|  5215 | Prowl                                    |            |              7 |
|  5264 | South Seas Pirate Disguise                |            |              0 |
|  5265 | Stonesplinter Trogg Disguise              |            |              0 |
|  5266 | Syndicate Disguise                        |            |              0 |
|  5267 | Dalaran Wizard Disguise                  |            |              0 |
|  5268 | Dark Iron Dwarf Disguise                  |            |              0 |
|  5384 | Feign Death                              |            |              9 |
|  6298 | Form of the Moonstalker                  |            |              0 |
|  6538 | Dig Trap                                  |            |              0 |
|  6783 | Prowl                                    | Rank 2    |              7 |
|  6920 | Hide                                      | Rank 2    |              0 |
|  7104 | Sneak                                    |            |              0 |
|  7291 | Food (TEST)                              |            |              0 |
|  7870 | Lesser Invisibility                      |            |              5 |
|  7974 | Azrethoc's Flight                        | Rank 1    |              0 |
|  8218 | Sneak                                    |            |              0 |
|  8226 | Fake Death                                |            |              0 |
|  8359 | Left for Dead                            |            |              0 |
|  8606 | Summon Cyclonian                          |            |              0 |
|  8611 | Phase Shift                              |            |              0 |
|  8822 | Stealth                                  |            |              0 |
|  8874 | Stealth (TEST)                            | Rank 1    |              0 |
|  9093 | Rift Spawn Invisibility                  |            |              0 |
|  9192 | "Plucky" Resumes Human Form              | Shapeshift |              0 |
|  9220 | "Plucky" Resumes Chicken Form            | Shapeshift |              0 |
|  9587 | Magic Potion                              |            |              0 |
|  9736 | Arantir's Deception                      | Rank 1    |              0 |
|  9740 | Arantir's Deception                      | Rank 1    |              0 |
|  9913 | Prowl                                    | Rank 3    |              7 |
|  9976 | Polly Eats the E.C.A.C.                  | Rank 1    |              0 |
| 10032 | Uber Stealth                              |            |              0 |
| 10849 | Form of the Moonstalker (no invis)        |            |              0 |
| 11013 | Sneak                                    |            |              0 |
| 11327 | Vanish                                    | Rank 1    |              8 |
| 11329 | Vanish                                    | Rank 2    |              8 |
| 11392 | Invisibility                              |            |              13 |
| 11548 | Summon Spider God                        |            |              0 |
| 12189 | Summon Echeyakee                          |            |              0 |
| 12199 | Summon Ishamuhale                        |            |              0 |
| 12332 | Lathoric the Black                        |            |              0 |
| 12845 | Lesser Invisibility                      |            |              0 |
| 12883 | Longsight                                |            |              0 |


Amaru 06.02.2011 14:06

сорри в 1 пост все не влезло
Код:

| 15056 | Distract Move                            |            |              0 |
| 16031 | Releasing Corrupt Ooze                    |            |              0 |
| 16093 | Self Visual - Sleep Until Cancelled (DND) |            |              0 |
| 16380 | Greater Invisibility                      |            |              3 |
| 17651 | Image Projection                          |            |              0 |
| 17652 | Image Projection                          |            |              0 |
| 18400 | Piccolo of the Flaming Fire              |            |              0 |
| 23355 | Feed Pet Effect (Quest Test)              |            |              0 |
| 24450 | Prowl                                    | Rank 1    |              9 |
| 24453 | Prowl                                    | Rank 3    |              9 |
| 25247 | Longsight                                |            |              0 |
| 26888 | Vanish                                    | Rank 3    |              8 |
| 26889 | Vanish                                    | Rank 3    |              8 |
| 27617 | Vanish                                    | Rank 2    |              8 |
| 28500 | Invisibility                              |            |              13 |
| 29309 | Phase Shift                              |            |              0 |
| 29627 | Nether Step                              |            |              0 |
| 30015 | Summon Naias                              |            |              0 |
| 30628 | Arcane Invisibility                      |            |              3 |
| 31621 | Stealth                                  |            |              0 |
| 32612 | Invisibility                              |            |              3 |
| 32811 | Greater Invisibility                      |            |              3 |
| 32930 | Blue Beam                                |            |              6 |
| 35413 | Seed of Revitalization                    |            |              0 |
| 35571 | Feign Death Test                          |            |              9 |
| 36535 | Greater Invis (For Fragments of Memory)  |            |              3 |
| 36544 | Dispel Shadowmoon Infernal Invis          |            |              3 |
| 37097 | Crate Disguise                            |            |              0 |
| 37679 | Arakkoa Channeling (no duration)          |            |              0 |
| 38792 | Freeze Anim Interruptible                |            |              0 |
| 38909 | Green Beam - Left Hand                    |            |              0 |
| 39218 | Baelmon Channeling (no duration)          |            |              0 |
| 40259 | Boar Charge                              |            |              0 |
| 40772 | Boar Charge                              |            |              0 |
| 41253 | Greater Invisibility                      |            |              3 |
| 42378 | Spyglass 02                              |            |              0 |
| 43051 | Spyglass                                  |            |              0 |
| 43128 | Raptor Charge                            |            |              0 |
| 43157 | Tillinghast's Plague Canister            |            |              0 |
| 43778 | Channel Cast Directed (no effects)        |            |              0 |
| 44035 | Return to the Spirit Realm                |            |              0 |
| 44036 | Fade                                      |            |              0 |
| 44290 | Vanish                                    |            |              8 |
| 44530 | Boar Charge                              |            |              0 |
| 44795 | Parachute                                |            |              0 |
| 45220 | Channel Cast Directed (no effects)        |            |              0 |
| 45614 | Shroud of the Scourge                    |            |              0 |
| 47032 | Budd's Sneak                              |            |              0 |
| 50346 | Boar Charge                              |            |              0 |
| 50553 | Parachute                                |            |              0 |
| 51270 | Corpse Exploded                          |            |              0 |
| 51753 | Camouflage                                |            |              9 |
| 51755 | Camouflage                                |            |              3 |
| 52060 | Invisibility                              |            |              3 |
| 52742 | Sleep                                    |            |              0 |
| 53208 | Parachute                                |            |              0 |
| 54168 | Parachute                                |            |              0 |
| 54435 | Demonic Empowerment                      |            |              0 |
| 54436 | Demonic Empowerment                      |            |              0 |
| 54649 | Parachute                                |            |              0 |
| 55797 | Telluric Poultice                        |            |              0 |
| 58984 | Shadowmeld                                | Racial    |              0 |
| 59045 | Camoflogue                                | Rank 4    |              8 |
| 59646 | The Fall of Humanity                      | Racial    |              0 |
| 59721 | The Fall of Humanity                      | Racial    |              0 |
| 59722 | The Fall of Humanity                      | Racial    |              0 |
| 61243 | Parachute                                |            |              0 |
| 61267 | Intravenous Health Regeneration          |            |              0 |
| 61268 | Mana Regeneration                        |            |              0 |
| 62196 | Shadowmeld                                | Racial    |              0 |
| 62199 | Shadowmeld                                | Racial    |              0 |
| 67340 | Hide                                      | Rank 2    |              0 |
| 67765 | Invisibility                              |            |              3 |
| 69759 | Spirit Heal                              |            |              0 |
| 75731 | Instant Statue                            |            |              0 |
| 79404 | Parachute                                |            |              0 |
134 rows in set


Den 08.02.2011 17:36

Вложений: 1
С атрибутом для некоторых спелов, видимо не выйдет... ?
AURA_INTERRUPT_FLAG_UNK10 и + еще несколько типов аур, но это думаю не конец =))) Ну неспроста же, у близов не сохраняются эти спеллы.
А вот, на счет сбрасывание стелса, при некоторых действиях... Это какие-то извращения...
Это видно примерно половина , что проверил пока. И правильно пихать такие проверки, или есть более правильный/разумный ход ?


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

ru-mangos.ru - Русское сообщество MaNGOS