Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Патчи на рассмотрении

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

Патчи на рассмотрении Рассматриваемые к принятию патчи

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.05.2010, 18:16   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch] Призыв объектов на транспорте

Выяснил что на оффе нельзя призывать объекты во время движения транспорта.

Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 69b2fa1..4cb8691 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -5030,6 +5030,17 @@ SpellCastResult Spell::CheckCast(bool strict)
 
                 break;
             }
+            case SPELL_EFFECT_SUMMON_OBJECT_SLOT1:
+            case SPELL_EFFECT_SUMMON_OBJECT_SLOT2:
+            case SPELL_EFFECT_SUMMON_OBJECT_SLOT3:
+            case SPELL_EFFECT_SUMMON_OBJECT_SLOT4:
+            {
+                if (m_caster->GetTypeId() == TYPEID_PLAYER)
+                    if (((Player*)m_caster)->HasMovementFlag(MOVEFLAG_ONTRANSPORT))
+                    return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
+                    
+                break;
+            }
             case SPELL_EFFECT_SUMMON_PET:
             {
                 if(m_caster->GetPetGUID())                  //let warlock do a replacement summon
То, что я хочу додумать:
Сумоны объектов должны также быть запрещены и в стартовой трубе даларанской арены, но как запретить там? Может какой-то особый флаг зоны выставляется у близов? Или делать такой же как, который я применил в патче даларанской арены - т.е. проверять если зона = Даларанская арена, то отмерять дистанцию от трубы и не позволять кастовать если проходит условие...

Последний раз редактировалось Insider42; 19.05.2010 в 19:49.
Insider42 вне форума   Ответить с цитированием
Старый 19.05.2010, 18:30   #2
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

В препарейшене на арене можно ставить портал локовский, исключение - оргриммарская арена, т.к. там лифт.

В Spell.cpp функция CheckCast есть кусок кода:
Код:
    for (int i = 0; i < MAX_EFFECT_INDEX; ++i)
    {
        // for effects of spells that have only one target
        switch(m_spellInfo->Effect[i])
        {
            case SPELL_EFFECT_INSTAKILL:
...
Я думаю сюда можно поставить четыре case-а, проверку и возвращать SPELL_FAILED_NOT_HERE при наличии транспорта.
LordJZ вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Insider42 (19.05.2010)
Старый 19.05.2010, 18:31   #3
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

1) спросить у игроков с оффа, о том какое сообщение точно выдается при попытке поставить круг или отснифать SMSG_CAST_FAILED

Перейти в Spell.cpp - CheckCast - найти это :
Код:
    for (int i = 0; i < MAX_EFFECT_INDEX; ++i)
    {
        // for effects of spells that have only one target
        switch(m_spellInfo->Effect[i])
вставить
Код:
            case SPELL_EFFECT_SUMMON_OBJECT_SLOT1:
            {
                if (m_caster->GetTypeId() == TYPEID_PLAYER)
                    if (((Player*)m_caster)->HasMovementFlag(MOVEFLAG_ONTRANSPORT) ||
                        m_caster->HasAura(SPELL_ARENA_PREPARATION))
                    return SPELL_FAILED_BAD_TARGETS;(здесь подставить корректное сообщение об ошибке)
                    
                    break;
            }
Возможно это не совсем верное решение, но офлайк прерывание с выводом еррор мессаджа можно сделать только здесь
MaS0n вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
ANTOMA (21.05.2010), Den (06.01.2011), Insider42 (19.05.2010)
Старый 19.05.2010, 18:32   #4
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
В препарейшене на арене можно ставить портал локовский, исключение - оргриммарская арена, т.к. там лифт.

В Spell.cpp функция CheckCast есть кусок кода:
Код:
    for (int i = 0; i < MAX_EFFECT_INDEX; ++i)
    {
        // for effects of spells that have only one target
        switch(m_spellInfo->Effect[i])
        {
            case SPELL_EFFECT_INSTAKILL:
...
Я думаю сюда можно поставить четыре case-а, проверку и возвращать SPELL_FAILED_NOT_HERE при наличии транспорта.
Мне говорят в Даларанской арене в трубе нельзя ставить, даже без препарации. Будто бы там какой-то флаг особый выставляется, или идёт проверка по зоне и расстоянии от трубы, как у меня в патче Даларанской арены :/
Insider42 вне форума   Ответить с цитированием
Старый 19.05.2010, 18:36   #5
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Хмм, я в 3.3 на арене почти не играл -- могли и убрать возможность в трубе ставить портал. До 3.3 можно было -- инфа 100%.

SPELL_EFFECT_SUMMON_OBJECT_SLOT1 <- может быть надо 2, 3 и 4 так же?

P.S. Насколько я помню, сообщение там You can't do that right now. Только не знаю что это в цифрах
LordJZ вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Insider42 (19.05.2010)
Старый 19.05.2010, 18:44   #6
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Хмм, я в 3.3 на арене почти не играл -- могли и убрать возможность в трубе ставить портал. До 3.3 можно было -- инфа 100%.
Тогда что с ним происходило когда начинало лить с трубы?
Insider42 вне форума   Ответить с цитированием
Старый 20.05.2010, 20:11   #7
unlucky
RMDC Donator
 
Аватар для unlucky
 
Регистрация: 07.03.2010
Сообщений: 5
Сказал(а) спасибо: 48
Поблагодарили 1 раз в 1 сообщении
unlucky На верном пути
По умолчанию

на даларанской арене в препарейшене можно ставить портал проверял сегодня(офф).
после выброса\выпрыга из трубы - не проверял можно ли его заюзать(портануться туда) но уверен что нельзя, либо он уберется там при старте арены.
порт мона ставить в препорейте на любой другой арене (кроме оргриммарская арена) и он работает при старте арены (не проверял только на далараноской).
unlucky вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
LordJZ (20.05.2010)
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
realm-dependent расстановка объектов и НПЦ rsa Отвергнутые патчи 5 03.03.2011 20:57
Призыв спутника Dredd Новичкам 5 24.12.2010 17:12
[patch] Размеры динамических объектов Insider42 Патчи на рассмотрении 2 29.05.2010 11:29
[patch] Скачок (Blink) на транспорте Insider42 Патчи на рассмотрении 0 20.05.2010 08:45
Деспавн объектов и деактивация virusav Баг-репорты 12 18.04.2010 20:56


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


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