Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Модификации ядра > Запросы

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

Запросы Запросы

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.03.2010, 19:23   #1
selector
Пользователь
 
Аватар для selector
 
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
selector На верном пути
По умолчанию Instance enter

Доброго времени суток всему RMDC. Требуется помощь. Есть ли возможность запретить игрокам входить в инст во время боя с босом.

Допустим ситуация - в И(В)К рейд бьет боса, умирает человек, перемещается к СпиритХиллеру, в течении 30сек долетает до инста, заходит в него и продолжает бой. На оффициальном сервере нельзя войти в данж пока идет битва с босом(либо его убьют, либо вайп).

Немного поразмыслив, пришел к выводу, что запрет можно привязать к:
Код:
            case TYPE_BEASTS:
                mEncounter[0] = data;
                if(data==IN_PROGRESS)
                {
                    OpenDoor(mGatesGUID);
                    CloseDoor(mEntryDoorGUID);
                    CloseGateTimer = 30000;
                    SummonGormok();
                    mBeastsEnrageTimer = 900000;
                }
                else if(data==NOT_STARTED)
                {
                    OpenDoor(mEntryDoorGUID);
                    DespawnBeasts();
                }
                else if(data == DONE) OpenDoor(mEntryDoorGUID);
                break;
и подобному(для других босов/скриптов).

При:
Код:
if(data==IN_PROGRESS)
запрет на вход
При:
Код:
else if(data==NOT_STARTED)
и
Код:
else if(data == DONE) OpenDoor(mEntryDoorGUID);
Разрешить вход.


Насколько известно на триньке данное реализовано. Хотелось бы и у нас. Любые идеи/предложения/наработки приветствуются.

Понимаю, что СД2 мало относиться к ядру, но функция запрета то должна быть в нем родимом.
selector вне форума   Ответить с цитированием
Старый 15.03.2010, 19:34   #2
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

В своё время успел отследить изменения в тринити, вот они. Открываются в MS Word...
Вложения
Тип файла: rar encounter.rar (117.0 Кб, 34 просмотров)
Insider42 вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
selector (15.03.2010)
Старый 15.03.2010, 20:55   #3
selector
Пользователь
 
Аватар для selector
 
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
selector На верном пути
По умолчанию

Код:
        // TODO: move this to a map dependent location
        /*if(i_data && i_data->IsEncounterInProgress())
        {
            sLog.outDebug("MAP: Player '%s' can't enter instance '%s' while an encounter is in progress.", player->GetName(), GetMapName());
            player->SendTransferAborted(GetId(), TRANSFER_ABORT_ZONE_IN_COMBAT);
            return(false);
        }*/
in MapManager.cpp

Код:
    // cannot enter while players in the instance are in combat
    Group *pGroup = player->GetGroup();
    if(pGroup && pGroup->InCombatToInstance(GetInstanceId()) && player->isAlive() && player->GetMapId() != GetId())
    {
        player->SendTransferAborted(GetId(), TRANSFER_ABORT_ZONE_IN_COMBAT);
        return false;
    }
in Map.cpp

Все что требуется "заставить" заработать первую часть кода. Насколько я понял нужно ввести условия "если карта = данж и данж = рейдовый -> IsEncounterInProgress() "
selector вне форума   Ответить с цитированием
Старый 15.03.2010, 21:08   #4
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию

Просто раскомментировать плюс в инстанс-скрипте должно быть определено IsEncounterInProgress. Что-то типа
Код:
    bool IsEncounterInProgress() const
    {
        for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
            if (m_auiEncounter[i] == IN_PROGRESS)
                return true;

        return false;
    }
PSZ вне форума   Ответить с цитированием
Старый 15.03.2010, 21:25   #5
selector
Пользователь
 
Аватар для selector
 
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
selector На верном пути
По умолчанию

Сначало нужно сам запрос ввести наверно. Ведь задачу то мы поставим, а ссылаться IsEncounterInProgress куда будет? в ядре то не реализовано. К томуже:
Код:
    bool IsEncounterInProgress() const
    {
        for (uint8 i = 0; i < ENCOUNTERS; ++i)
            if (mEncounter[i] == IN_PROGRESS)
                return true;

        return false;
    }
и так присутствует.
selector вне форума   Ответить с цитированием
Старый 16.03.2010, 19:56   #6
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Как-то так:
http://github.com/zergtmn/mangos/com...6b630a869bed71
Есть один неприятный баг: если во время боя игрока выкинет из игры, при входе его портнет ко входу в инст.
zergtmn вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
selector (16.03.2010)
Старый 16.03.2010, 22:19   #7
selector
Пользователь
 
Аватар для selector
 
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
selector На верном пути
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
Как-то так:
http://github.com/zergtmn/mangos/com...6b630a869bed71
Есть один неприятный баг: если во время боя игрока выкинет из игры, при входе его портнет ко входу в инст.
Еще парочка неприятных багов замеченых игроками(использовал твой патч):
В Ульде, Огненых недрах, Каражане после фулл вайпа игроки не могут войти - пишет что бой все еще идет. СД2 проверил там боссы останавливаются как и должны. Остальные инсты проверяю и ищу закономерность.
selector вне форума   Ответить с цитированием
Старый 16.03.2010, 22:22   #8
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от selector Посмотреть сообщение
Еще парочка неприятных багов замеченых игроками(использовал твой патч):
В Ульде, Огненых недрах, Каражане после фулл вайпа игроки не могут войти - пишет что бой все еще идет. СД2 проверил там боссы останавливаются как и должны. Остальные инсты проверяю и ищу закономерность.
Скрипты кривые?
Надо проверить, чтобы после вайпа правильно устанавливалось состояние энкаунтера (FAIL, либо NOT_STARTED)

В огненных недрах вообще:
Код:
bool IsEncounterInProgress() const
    {
        return false;
    }
Даже во время боя должно пускать в инст.

Последний раз редактировалось zergtmn; 16.03.2010 в 22:28.
zergtmn вне форума   Ответить с цитированием
Старый 16.03.2010, 23:07   #9
selector
Пользователь
 
Аватар для selector
 
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
selector На верном пути
По умолчанию

Цитата:
Сообщение от zergtmn Посмотреть сообщение
Скрипты кривые?
Надо проверить, чтобы после вайпа правильно устанавливалось состояние энкаунтера (FAIL, либо NOT_STARTED)

В огненных недрах вообще:
Код:
bool IsEncounterInProgress() const
    {
        return false;
    }
Даже во время боя должно пускать в инст.
Да точно, скрипты кривые. Хех, пойду доправлять.
selector вне форума   Ответить с цитированием
Старый 18.03.2010, 18:42   #10
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Как успехи? Много ли подобных "корявых" скриптов в нынешнем SD2?
Nordway вне форума   Ответить с цитированием
Старый 18.03.2010, 19:08   #11
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Вообще проверку надо делать до телепортации в инст. Сейчас игрока сначала портует в инст, потом если идет бой, его выкидывает обратно (видно по полосе загрузки).
Дорабатывать патч мне пока некогда.
zergtmn вне форума   Ответить с цитированием
Старый 20.04.2010, 01:38   #12
Kujbor
Новичок
 
Аватар для Kujbor
 
Регистрация: 13.03.2010
Адрес: Самара
Сообщений: 20
Сказал(а) спасибо: 13
Поблагодарили 2 раз(а) в 1 сообщении
Записей в дневнике: 1
Kujbor На верном пути
По умолчанию

Не знаю как именно это реализованно на офе со стороны сервера, но добавлю, что при попытке войти духом в инст во время боя игрок воскрешается и остается с полХП у входа в инст (полоса загрузки кстати тоже появляется), при этом выскакивает соответствующее собщение.

И еще, к слову, в цлк есть еженедельне квесты, по одному из квестов необходимо убить дополнительного босса. Так вот этот босс боссом по сути не является, и во время боя с ним умершие игроки запросто заходят в данж. Это же относится к любым мобам.

Не пускает исключительно в случае боя с одним из постоянных боссов. Это так, на всякий случай инфа.
Kujbor вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10123] Fixed recent problem with enter to dungeons in group. newsbot CMaNGOS Commits 0 29.06.2010 23:50
[10113] Some cleanups in Instance loading code. newsbot CMaNGOS Commits 0 27.06.2010 19:32
Send SMSG_CORPSE_NOT_IN_INSTANCE if player in ghost form tries to enter an instance without player's newsbot CMaNGOS Commits 0 27.05.2010 22:00
instance.data Imprtat Новичкам 3 12.05.2010 15:31


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


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