Ru-MaNGOS

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

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.04.2010, 08:57   #1
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию [patch] Random BattleGrounds

Патч реализует нововведение близов в патче 3.3.3

Что реализовано:
+ Реализована очередь на случайное БГ
+ Нельзя вставать в очередь одновременно на случайное и обычное БГ
+ Игрок не знает, на какое БГ попадёт, пока не появится экран загрузки во время телепортации
+ За победу на случайном БГ даётся дополнительный хонор. Хонор расчитывается в зависимости от количества почётных убийств: 30 за первую победу в день (15 за вторую и последующую) и 5 за проигрышь
+ За первую победу на БГ даётся больше хонора + АП.
+ Первая победа на случайном БГ сохраняется в базе данных для каждого персонажа и обнуляется раз в день

Известные баги:
- На случайное БГ и обычное БГ разные очереди
- На случайное БГ нельзя выставить ограничение по минимальному и максимальному количеству игроков в зависимости от того, на какое БГ будут телепортированы игроки после заполнение очереди (рекомендуются выставить в БД 10x10 для БГ номер 32)
- Не удалось подобрать оптимальное значение для формулы расчёта хонора за каждое почётное убийство, поэтому формула остаётся неизменной, а количество почётных убийств за случайное БГ искусственно увеличено в 4 раза, чтобы подогнать под близлайк значения.

ADDED 27.04.2010
+ Исправлены некоторые функции БГ, зависящие от ипензушв
+ Добавлено начисление Очков Арены за выигрышь случайном поле боя
+ Реализована функция сохранения первой победы на случайном поле боя и её ежедневный сброс

Архив перезалит:
Исправлены ошибки компиляции:

ADDED 28.04.2010
Исправлено создание не рандомных БГ

ADDED 03.05.2010
+ За битву на поле боя с пометкой «К оружию!» игрок теперь получает такую же награду, как и за случайное поле боя.
+ Награды за первую в день победу являются взаимоисключающими: в день можно получить на более одной. Если игроку в качестве случайного выпало поле боя с пометкой «К оружию!», он получит только одну дополнительную награду.
+ Для корректной работы требуется патч [9878][patch] Отображение BGWeekend в списке БГ
+ Попытка исправить сохранение/загрузку игрокв на Случайном БГ
+ Подогнано под последнюю ревизию

DOWNLOAD NOW!

Последний раз редактировалось GriffonHeart; 07.06.2010 в 10:30.
  Ответить с цитированием
28 пользователя(ей) сказали cпасибо:
ANTOMA (25.04.2010), Den (25.04.2010), Fear (25.04.2010), Feel the Power (25.04.2010), Foks (03.05.2010), Insider42 (25.04.2010), KiriX (27.04.2010), labor (26.04.2010), Lightunit (25.04.2010), LordJZ (25.04.2010), Maximus (16.08.2010), MaxXx2021 (30.04.2010), Mayss (27.04.2010), partizanes (29.08.2010), PSZ (25.04.2010), Shadez (25.04.2010), sven (25.04.2010), unlucky (25.04.2010), VENOM (12.05.2010), Viste (25.04.2010), wk23 (27.04.2010), YuruY (25.04.2010)
Старый 25.04.2010, 09:28   #2
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
- 25 очков арены за первую победу на случайном БГ (не ясно, как они начисляются - сразу или раз в неделю)
Раз в день естественно и сразу.
Кстати, рандомная и не рандомная очередь на оффе общая чтобы уменьшить время ожидания.

Последний раз редактировалось TOM_RUS; 25.04.2010 в 09:38.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
sven (25.04.2010)
Старый 25.04.2010, 10:29   #3
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

GriffonHeart, а свой патч та сами проверяли?
в ядре есть прикольные строки, например
Код:
void Spell::EffectOpenLock(SpellEffectIndex eff_idx)
.........
if (bg->GetTypeID() == BATTLEGROUND_AB || bg->GetTypeID() == BATTLEGROUND_AV)
и вот это (с вашего патча)
Код:
+    bgTypeId = isRandom ? BATTLEGROUND_RB : bgTypeId;
+
все резко портит! Сразу перестают все флаги работать!

Да и вот еще
Код:
        case 3820:                                          // EY
            if (bg && bg->GetTypeID() == BATTLEGROUND_EY)
                bg->FillInitialWorldStates(data);
            else
            {
как с этим быть?
Сам конечно еще не проверял, но уверен что работать не будут ни флаги, ни FillInitialWorldStates!

Последний раз редактировалось Rage Hunter; 25.04.2010 в 10:39.
  Ответить с цитированием
Старый 25.04.2010, 10:58   #4
frostid
Гость
 
Сообщений: n/a
По умолчанию

2>..\..\src\game\BattleGroundMgr.cpp(1825) : error C2374: 'isRandom' : redefinition; multiple initialization
2> ..\..\src\game\BattleGroundMgr.cpp(1824) : see declaration of 'isRandom'
2>..\..\src\game\BattleGround.cpp(804) : error C2065: 'win_kills' : undeclared identifier
2>..\..\src\game\BattleGround.cpp(815) : error C2065: 'loos_kills' : undeclared identifier
  Ответить с цитированием
Старый 25.04.2010, 11:08   #5
zhenya
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
zhenya Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Rage Hunter Посмотреть сообщение
....
внимательнее смотрим
Код:
BattleGround * BattleGroundMgr::CreateNewBattleGround(BattleGroundTypeId bgTypeI
Код:
+        BattleGroundTypeId random_bgs[] = {BATTLEGROUND_AV, BATTLEGROUND_WS, BATTLEGROUND_AB, BATTLEGROUND_EY/*, BATTLEGROUND_SA, BATTLEGROUND_IC*/};
+        uint32 bg_num = urand(0,3/*5*/);
+        bgTypeId = random_bgs[bg_num];
+        bg_template = GetBattleGroundTemplate(bgTypeId);
в последнем куске меняется bgTypeId и bg_template. Какие могут быть проблемы? то что бг рандомный сохраняется в isRandom.
zhenya вне форума   Ответить с цитированием
Старый 25.04.2010, 11:10   #6
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
...
- 25 очков арены за первую победу на случайном БГ (не ясно, как они начисляются - сразу или раз в неделю)
...
Сразу, как и за квесты в 3.3.
LordJZ вне форума   Ответить с цитированием
Старый 25.04.2010, 12:06   #7
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Rage Hunter Посмотреть сообщение
GriffonHeart, а свой патч та сами проверяли?
Вот сейчас проверяю на лайф-сервере.
Да, заметил касяк с bgTypeID, исправил, после доп. тестов обновлю патч.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
sven (27.04.2010)
Старый 25.04.2010, 13:16   #8
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Рандом БГ сбрасываются раз в сутки для всех или у каждого в своё время, в зависимости от времени последней победы на рандом БГ?
  Ответить с цитированием
Старый 25.04.2010, 13:36   #9
unlucky
RMDC Donator
 
Аватар для unlucky
 
Регистрация: 07.03.2010
Сообщений: 5
Сказал(а) спасибо: 48
Поблагодарили 1 раз в 1 сообщении
unlucky На верном пути
По умолчанию

раз в сутки для всех
unlucky вне форума   Ответить с цитированием
Старый 25.04.2010, 15:19   #10
Neggod
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Суровый Город
Сообщений: 41
Сказал(а) спасибо: 23
Поблагодарили 25 раз(а) в 13 сообщениях
Записей в дневнике: 1
Neggod На верном пути
Отправить сообщение для Neggod с помощью Skype™
По умолчанию

6 утра по мск вместе с подземельями.
Neggod вне форума   Ответить с цитированием
Старый 25.04.2010, 16:03   #11
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от Neggod Посмотреть сообщение
6 утра по мск вместе с подземельями.
Подземелья в 11:00 ресетятся, а квесты на рандом подземелья, рандом бг, дэйлики в 5:00.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
sven (27.04.2010)
Старый 25.04.2010, 18:04   #12
Viste
Новичок
 
Аватар для Viste
 
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 27
Поблагодарили 7 раз(а) в 5 сообщениях
Viste На верном пути
По умолчанию

так по моему лучше будет
Код:
     // add bg to update list
     // This must be done here, because we need to have already invited some players when first BG::Update() method is executed
     // and it doesn't matter if we call StartBattleGround() more times, because m_BattleGrounds is a map and instance id never changes
-    sBattleGroundMgr.AddBattleGround(GetInstanceID(), GetTypeID(), this);
+    sBattleGroundMgr.AddBattleGround(GetInstanceID(), IsRandom ? BATTLEGROUND_RB : GetTypeID(), this);
вместо
Код:
+    bgTypeId = isRandom ? BATTLEGROUND_RB : bgTypeId;
+
__________________
С недавних времен TrinityCore User
Viste вне форума   Ответить с цитированием
Старый 25.04.2010, 18:21   #13
Neggod
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Суровый Город
Сообщений: 41
Сказал(а) спасибо: 23
Поблагодарили 25 раз(а) в 13 сообщениях
Записей в дневнике: 1
Neggod На верном пути
Отправить сообщение для Neggod с помощью Skype™
По умолчанию

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Подземелья в 11:00 ресетятся, а квесты на рандом подземелья, рандом бг, дэйлики в 5:00.
Пардон, я имел ввиду квест. В 8:00 на Урале(2 часа разницы с Мск). Периодически, перед парами, бегаю в рандом.
Neggod вне форума   Ответить с цитированием
Старый 26.04.2010, 13:41   #14
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

не
Код:
+    sBattleGroundMgr.AddBattleGround(GetInstanceID(), IsRandom ? BATTLEGROUND_RB : GetTypeID(), this);
а
Код:
+    sBattleGroundMgr.AddBattleGround(GetInstanceID(), IsRandom() ? BATTLEGROUND_RB : GetTypeID(), this);
  Ответить с цитированием
Старый 27.04.2010, 07:02   #15
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

ADDED 27.04.2010
+ Исправлены некоторые функции БГ, зависящие от ипензушв
+ Добавлено начисление Очков Арены за выигрышь случайном поле боя
+ Реализована функция сохранения первой победы на случайном поле боя и её ежедневный сброс
+ Обновлено под последнюю ревизию.
DOWNLOAD NOW!

Архив перезалит:
DOWNLOAD NOW!

Поскольку я скорее всего не буду делать общую очередь на рандом БГ и обычный БГ, то тему можно перенести в моды.

Последний раз редактировалось GriffonHeart; 27.04.2010 в 07:13.
  Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
ANTOMA (27.04.2010), Den (27.04.2010), Insider42 (27.04.2010), PSZ (27.04.2010), sven (27.04.2010), unlucky (27.04.2010)
Старый 27.04.2010, 12:03   #16
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
ADDED 27.04.2010
+ Исправлены некоторые функции БГ, зависящие от ипензушв
+ Добавлено начисление Очков Арены за выигрышь случайном поле боя
+ Реализована функция сохранения первой победы на случайном поле боя и её ежедневный сброс
+ Обновлено под последнюю ревизию.
DOWNLOAD NOW!

Архив перезалит:
DOWNLOAD NOW!

Поскольку я скорее всего не буду делать общую очередь на рандом БГ и обычный БГ, то тему можно перенести в моды.
Код:
10>BattleGroundHandler.cpp
10>..\..\src\game\BattleGroundMgr.cpp(1832) : error C2374: 'isRandom' : redefinition; multiple initialization
10>        ..\..\src\game\BattleGroundMgr.cpp(1831) : see declaration of 'isRandom'
Такого явно не должно быть
Код:
    uint8 isRandom = bgTypeId == BATTLEGROUND_RB;
Insider42 вне форума   Ответить с цитированием
Старый 27.04.2010, 12:08   #17
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Код:
10>BattleGroundHandler.cpp
10>..\..\src\game\BattleGroundMgr.cpp(1832) : error C2374: 'isRandom' : redefinition; multiple initialization
10>        ..\..\src\game\BattleGroundMgr.cpp(1831) : see declaration of 'isRandom'
Такого явно не должно быть
Код:
    uint8 isRandom = bgTypeId == BATTLEGROUND_RB;
uint8 isRandom = 0; - удалить
uint8 isRandom = bgTypeId == BATTLEGROUND_RB; - оставить
  Ответить с цитированием
Старый 27.04.2010, 12:49   #18
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Почему uint8 а не bool?

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

По-моему должно быть не
Код:
    CONFIG_UINT32_VALUE_COUNT,
    CONFIG_UINT32_RANDOM_BG_RESET_HOUR
а
Код:
    CONFIG_UINT32_RANDOM_BG_RESET_HOUR,
    CONFIG_UINT32_VALUE_COUNT
Insider42 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 27.04.2010, 15:11   #20
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Почему uint8 а не bool?

GriffonHeart, отличная работа.
Ну как бы потому что он в пакет клиенту уходит в качестве uint8
  Ответить с цитированием
Старый 27.04.2010, 15:18   #21
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Архив перезалит
Исправлены ошибки компиляции:
DOWNLOAD NOW!
  Ответить с цитированием
Пользователь сказал cпасибо:
unlucky (29.04.2010)
Старый 27.04.2010, 15:26   #22
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Первый пост обновлён.
Патч тестировался на лайф сервере с онлайном около 2к игроков, большенство проблем устранены.
  Ответить с цитированием
Старый 27.04.2010, 15:31   #23
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

Можно пару вопросов автору?
1.
GetTypeID(bool GetRandom = false) возвращает m_RandomTypeID или m_TypeID в зависимости от GetRandom. RandomTypeID имеет значение 0, если бг рандом то у него тип бг например Варсонг, теперь предположим нажимаю на флаг на всг срабоатвает
GamaObject.cpp
Код:
Use(.....)
                        case 179786:                        // Warsong Flag
                            if(bg->GetTypeID(true) == BATTLEGROUND_WS)
                                bg->EventPlayerClickedOnFlag(player, this);
получается
if(bg->GetTypeID(true) == BATTLEGROUND_WS)
bg->EventPlayerClickedOnFlag(player, this);

GetTypeID(true) возвращает RandomTypeID = 2, а не 32 поскольку true
после чего выполняется bg->EventPlayerClickedOnFlag(player, this);
Все прекрасно! расмотрим пример если это не рандом бг!
bgRandomTypeId = 0 судя по коду
m_TypeID = 2 (ВСГ)
опять таки на бг нажимем на флаг и вызывается код который выше написан в теге
в результате
GetTypeID(true) возвращает RandomTypeID = 0, а не 2 поскольку true

Ну не знаю, может я что-то упустил! Постарался описать все попонятнее!

возможно это решит проблему
Код:
    // reset the new bg (set status to status_wait_queue from status_none)
    bg->Reset();

+  if(!isRandom)
+       bgRandomTypeId = bgTypeId;

    // start the joining of the bg
    bg->SetStatus(STATUS_WAIT_JOIN);

Последний раз редактировалось Rage Hunter; 27.04.2010 в 15:44.
  Ответить с цитированием
Старый 27.04.2010, 16:16   #24
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Нет, конечно, так не должно было быть.
Так будет лучше?
Код:
BattleGround * BattleGroundMgr::CreateNewBattleGround(BattleGroundTypeId bgTypeId, PvPDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated)
{
    // get the template BG
    BattleGround *bg_template = GetBattleGroundTemplate(bgTypeId);
    if (!bg_template)
    {
        sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
        return NULL;
    }

    //for arenas there is random map used
    if (bg_template->isArena())
    {
        BattleGroundTypeId arenas[] = {BATTLEGROUND_NA, BATTLEGROUND_BE, BATTLEGROUND_RL/*, BATTLEGROUND_DS, BATTLEGROUND_RV*/};
        uint32 arena_num = urand(0,2/*4*/);
        bgTypeId = arenas[arena_num];
        bg_template = GetBattleGroundTemplate(bgTypeId);
        if (!bg_template)
        {
            sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
            return NULL;
        }
    }

    bool isRandom = false;

    if(bgTypeId==BATTLEGROUND_RB)
    {
        BattleGroundTypeId random_bgs[] = {BATTLEGROUND_AV, BATTLEGROUND_WS, BATTLEGROUND_AB, BATTLEGROUND_EY/*, BATTLEGROUND_SA, BATTLEGROUND_IC*/};
        uint32 bg_num = urand(0,3/*5*/);
        bgTypeId = random_bgs[bg_num];
        bg_template = GetBattleGroundTemplate(bgTypeId);
        if (!bg_template)
        {
            sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
            return NULL;
        }
        isRandom = true;
    }

    BattleGround *bg = NULL;
    // create a copy of the BG template
    switch(bgTypeId)
    {
        case BATTLEGROUND_AV:
            bg = new BattleGroundAV(*(BattleGroundAV*)bg_template);
            break;
        case BATTLEGROUND_WS:
            bg = new BattleGroundWS(*(BattleGroundWS*)bg_template);
            break;
        case BATTLEGROUND_AB:
            bg = new BattleGroundAB(*(BattleGroundAB*)bg_template);
            break;
        case BATTLEGROUND_NA:
            bg = new BattleGroundNA(*(BattleGroundNA*)bg_template);
            break;
        case BATTLEGROUND_BE:
            bg = new BattleGroundBE(*(BattleGroundBE*)bg_template);
            break;
        case BATTLEGROUND_AA:
            bg = new BattleGroundAA(*(BattleGroundAA*)bg_template);
            break;
        case BATTLEGROUND_EY:
            bg = new BattleGroundEY(*(BattleGroundEY*)bg_template);
            break;
        case BATTLEGROUND_RL:
            bg = new BattleGroundRL(*(BattleGroundRL*)bg_template);
            break;
        case BATTLEGROUND_SA:
            bg = new BattleGroundSA(*(BattleGroundSA*)bg_template);
            break;
        case BATTLEGROUND_DS:
            bg = new BattleGroundDS(*(BattleGroundDS*)bg_template);
            break;
        case BATTLEGROUND_RV:
            bg = new BattleGroundRV(*(BattleGroundRV*)bg_template);
            break;
        case BATTLEGROUND_IC:
            bg = new BattleGroundIC(*(BattleGroundIC*)bg_template);
            break;
        case BATTLEGROUND_RB:
            bg = new BattleGroundRB(*(BattleGroundRB*)bg_template);
            break;
        default:
            //error, but it is handled few lines above
            return 0;
    }

    // will also set m_bgMap, instanceid
    sMapMgr.CreateBgMap(bg->GetMapId(), bg);

    bg->SetClientInstanceID(CreateClientVisibleInstanceId(isRandom ? BATTLEGROUND_RB : bgTypeId, bracketEntry->GetBracketId()));

    // reset the new bg (set status to status_wait_queue from status_none)
    bg->Reset();

    // start the joining of the bg
    bg->SetStatus(STATUS_WAIT_JOIN);
    bg->SetBracket(bracketEntry);
    bg->SetArenaType(arenaType);
    bg->SetRated(isRated);
    bg->SetRandom(isRandom);
    bg->SetTypeID(isRandom ? BATTLEGROUND_RB : bgTypeId);
    bg->SetRandomTypeID(bgTypeId);

    return bg;
}
  Ответить с цитированием
Пользователь сказал cпасибо:
Старый 27.04.2010, 21:12   #25
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Нет, конечно, так не должно было быть.
Так будет лучше?
Код:
BattleGround * BattleGroundMgr::CreateNewBattleGround(BattleGroundTypeId bgTypeId, PvPDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated)
{
    // get the template BG
    BattleGround *bg_template = GetBattleGroundTemplate(bgTypeId);
    if (!bg_template)
    {
        sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
        return NULL;
    }

    //for arenas there is random map used
    if (bg_template->isArena())
    {
        BattleGroundTypeId arenas[] = {BATTLEGROUND_NA, BATTLEGROUND_BE, BATTLEGROUND_RL/*, BATTLEGROUND_DS, BATTLEGROUND_RV*/};
        uint32 arena_num = urand(0,2/*4*/);
        bgTypeId = arenas[arena_num];
        bg_template = GetBattleGroundTemplate(bgTypeId);
        if (!bg_template)
        {
            sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
            return NULL;
        }
    }

    bool isRandom = false;

    if(bgTypeId==BATTLEGROUND_RB)
    {
        BattleGroundTypeId random_bgs[] = {BATTLEGROUND_AV, BATTLEGROUND_WS, BATTLEGROUND_AB, BATTLEGROUND_EY/*, BATTLEGROUND_SA, BATTLEGROUND_IC*/};
        uint32 bg_num = urand(0,3/*5*/);
        bgTypeId = random_bgs[bg_num];
        bg_template = GetBattleGroundTemplate(bgTypeId);
        if (!bg_template)
        {
            sLog.outError("BattleGround: CreateNewBattleGround - bg template not found for %u", bgTypeId);
            return NULL;
        }
        isRandom = true;
    }

    BattleGround *bg = NULL;
    // create a copy of the BG template
    switch(bgTypeId)
    {
        case BATTLEGROUND_AV:
            bg = new BattleGroundAV(*(BattleGroundAV*)bg_template);
            break;
        case BATTLEGROUND_WS:
            bg = new BattleGroundWS(*(BattleGroundWS*)bg_template);
            break;
        case BATTLEGROUND_AB:
            bg = new BattleGroundAB(*(BattleGroundAB*)bg_template);
            break;
        case BATTLEGROUND_NA:
            bg = new BattleGroundNA(*(BattleGroundNA*)bg_template);
            break;
        case BATTLEGROUND_BE:
            bg = new BattleGroundBE(*(BattleGroundBE*)bg_template);
            break;
        case BATTLEGROUND_AA:
            bg = new BattleGroundAA(*(BattleGroundAA*)bg_template);
            break;
        case BATTLEGROUND_EY:
            bg = new BattleGroundEY(*(BattleGroundEY*)bg_template);
            break;
        case BATTLEGROUND_RL:
            bg = new BattleGroundRL(*(BattleGroundRL*)bg_template);
            break;
        case BATTLEGROUND_SA:
            bg = new BattleGroundSA(*(BattleGroundSA*)bg_template);
            break;
        case BATTLEGROUND_DS:
            bg = new BattleGroundDS(*(BattleGroundDS*)bg_template);
            break;
        case BATTLEGROUND_RV:
            bg = new BattleGroundRV(*(BattleGroundRV*)bg_template);
            break;
        case BATTLEGROUND_IC:
            bg = new BattleGroundIC(*(BattleGroundIC*)bg_template);
            break;
        case BATTLEGROUND_RB:
            bg = new BattleGroundRB(*(BattleGroundRB*)bg_template);
            break;
        default:
            //error, but it is handled few lines above
            return 0;
    }

    // will also set m_bgMap, instanceid
    sMapMgr.CreateBgMap(bg->GetMapId(), bg);

    bg->SetClientInstanceID(CreateClientVisibleInstanceId(isRandom ? BATTLEGROUND_RB : bgTypeId, bracketEntry->GetBracketId()));

    // reset the new bg (set status to status_wait_queue from status_none)
    bg->Reset();

    // start the joining of the bg
    bg->SetStatus(STATUS_WAIT_JOIN);
    bg->SetBracket(bracketEntry);
    bg->SetArenaType(arenaType);
    bg->SetRated(isRated);
    bg->SetRandom(isRandom);
    bg->SetTypeID(isRandom ? BATTLEGROUND_RB : bgTypeId);
    bg->SetRandomTypeID(bgTypeId);

    return bg;
}
Нам это тоже добавлять или будет какая-то другая версия исправления в патче в первом посту?
Insider42 вне форума   Ответить с цитированием
Старый 27.04.2010, 23:02   #26
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Нам это тоже добавлять или будет какая-то другая версия исправления в патче в первом посту?
Я думаю последний вариант отличный, вот теперь у меня нет замечаний по патчу, сообрал все воедино, проверил, ОТЛИЧНО работает!

PS: GriffonHeart'у респект!
  Ответить с цитированием
Старый 28.04.2010, 02:32   #27
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Нам это тоже добавлять или будет какая-то другая версия исправления в патче в первом посту?
Добавлять, а исправленная версия далее:

ADDED 28.04.2010
Исправлено создание не рандомных БГ
DOWNLOAD NOW!

Последний раз редактировалось GriffonHeart; 28.04.2010 в 06:26.
  Ответить с цитированием
Старый 28.04.2010, 16:18   #28
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Стоит последний патч, сервер иногда виснет если на случайном бг есть игроки. Дампы снять не могу, т.к. его прибивает антифриз :/
Insider42 вне форума   Ответить с цитированием
Старый 28.04.2010, 17:37   #29
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Стоит последний патч, сервер иногда виснет если на случайном бг есть игроки. Дампы снять не могу, т.к. его прибивает антифриз :/
Не замечал такого! А вот кв бгшные не все почему-то работают (кв на победу)
  Ответить с цитированием
Пользователь сказал cпасибо:
Insider42 (28.04.2010)
Старый 28.04.2010, 17:56   #30
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Rage Hunter Посмотреть сообщение
Не замечал такого! А вот кв бгшные не все почему-то работают (кв на победу)
ок, просто подумал именно на этот патч, ибо виснет именно когда есть игроки на рандом бг (у них прям глаза загорелись когда узнали что работает рандом бг). Буду искать причину методом откатов :/
Insider42 вне форума   Ответить с цитированием
Старый 29.04.2010, 07:01   #31
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Советую выставить min и max плеер в базе равными 10
Ибо варсонг 40x40 не есть гуд
  Ответить с цитированием
Старый 29.04.2010, 09:27   #32
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Советую выставить min и max плеер в базе равными 10
Ибо варсонг 40x40 не есть гуд
Не согласен с вами! У меня в базе сейчас стоит
Код:
INSERT INTO `battleground_template` (`id`, `MinPlayersPerTeam`, `MaxPlayersPerTeam`, `AllianceStartLoc`, `AllianceStartO`, `HordeStartLoc`, `HordeStartO`) VALUES
(32, 10, 40, 0, 0, 0, 0);
изменил тока минимум на 10
при регистрации 45 на 45 человек (болеше онлайн не позволяет)
получется так
из 45 Альянса 10 на (например) ВСГ и из 45 орды 10 на всг
20 на Низину и 20 на низину 15 на Берег Древних и 15 на Берег древних!
Суть в том что 40 человек на ВСг не попадает, а только лимит установленный на данном бг, в частности 10 на ВСГ, 20 на низине, 15 на Береге, 40 Альтерак, 15 ОКО. Если участники остаются, то они продолжают сидеть в очереде!

Последний раз редактировалось Rage Hunter; 29.04.2010 в 09:42. Причина: пропущенный знаки припинания раставил (может и не все)
  Ответить с цитированием
Старый 29.04.2010, 09:39   #33
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Ибо варсонг 40x40 не есть гуд
Может вы с .debug bg пробовали?
Insider42 вне форума   Ответить с цитированием
Старый 29.04.2010, 10:01   #34
Rage Hunter
Гость
 
Сообщений: n/a
По умолчанию

Хотя я знаю один баг с [patch] Random BattleGrounds! При обычной регистрации на бг (на все кроме случайного) такого нет!
Суть вот в чем:
1. Вы попадаете на бг, для примера возьму низину арати, при регистрации на Random BattleGrounds.
2. Далее начинается бг по истечению 2х минут (раньше не проверял, но думаю результат будет один и тот же)
3. Вас кикает с игры (кик не проверял)! Бывает разрыв связи (провайдер говорит что телефонная линия слаба или что-то в этом роде, телефонная компания само собой грешит на провайдера, не суть). Так вот вас выкидавает с мира!
4. Далее вы проходите авторизацию и попадает обратно на это же БГ
Далее уже ошибки! (на примере Низины Арати)
1. Вы не можете использовать флаг! (точнее используете, но результат 0)
2. При смерти вас телепортирует на ближайшее кладбище, при этом не зависимо от того кому оно принадлежит на текущий мометн.
3. Спириты не работают, для вас само собой только.
4. При завершении бг, при наджатии на кнопку покинуть бг реакция 0.
5. Если вы через команду Гм телепортируетесь с бг например в Штормград и покинете группу, вам все равно будете приходить репутация, сообщения с бг, и вы до сих пор будуте числится в группе на Бг (только в группе)!

Причина:
я ее не знаю, но такая строка как
Код:
BattleGround *bg = player(ну это само собой тот, кого выкинуло с мира)->GetBattleGround()
возвращает bg = NULL и это факт и проверено!

Проверено 5 раз, 2 раза я проверял и 3 раза 3 разных человека!
  Ответить с цитированием
Старый 29.04.2010, 15:45   #35
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Rage Hunter Посмотреть сообщение
Хотя я знаю один баг с [patch] Random BattleGrounds! При обычной регистрации на бг (на все кроме случайного) такого нет!
Суть вот в чем:
1. Вы попадаете на бг, для примера возьму низину арати, при регистрации на Random BattleGrounds.
2. Далее начинается бг по истечению 2х минут (раньше не проверял, но думаю результат будет один и тот же)
3. Вас кикает с игры (кик не проверял)! Бывает разрыв связи (провайдер говорит что телефонная линия слаба или что-то в этом роде, телефонная компания само собой грешит на провайдера, не суть). Так вот вас выкидавает с мира!
4. Далее вы проходите авторизацию и попадает обратно на это же БГ
Далее уже ошибки! (на примере Низины Арати)
1. Вы не можете использовать флаг! (точнее используете, но результат 0)
2. При смерти вас телепортирует на ближайшее кладбище, при этом не зависимо от того кому оно принадлежит на текущий мометн.
3. Спириты не работают, для вас само собой только.
4. При завершении бг, при наджатии на кнопку покинуть бг реакция 0.
5. Если вы через команду Гм телепортируетесь с бг например в Штормград и покинете группу, вам все равно будете приходить репутация, сообщения с бг, и вы до сих пор будуте числится в группе на Бг (только в группе)!

Причина:
я ее не знаю, но такая строка как
Код:
BattleGround *bg = player(ну это само собой тот, кого выкинуло с мира)->GetBattleGround()
возвращает bg = NULL и это факт и проверено!

Проверено 5 раз, 2 раза я проверял и 3 раза 3 разных человека!
Подтверждаю, баг есть.
Insider42 вне форума   Ответить с цитированием
Старый 30.04.2010, 02:38   #36
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Значит сохранение на рандом-бг не работает. Либо работает криво, надо смотреть.
  Ответить с цитированием
Старый 30.04.2010, 20:58   #37
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Значит сохранение на рандом-бг не работает. Либо работает криво, надо смотреть.
Как успехи? Сейчас это единственный баг который сильно огорчает игроков, половина жалоб на него. Ведь если попал в такую ситуацию то помочь может только телепорт камнем, либо ГМ.
Insider42 вне форума   Ответить с цитированием
Старый 03.05.2010, 05:52   #38
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

ADDED 03.05.2010
+ За битву на поле боя с пометкой «К оружию!» игрок теперь получает такую же награду, как и за случайное поле боя.
+ Награды за первую в день победу являются взаимоисключающими: в день можно получить на более одной. Если игроку в качестве случайного выпало поле боя с пометкой «К оружию!», он получит только одну дополнительную награду.
+ Для корректной работы требуется патч [patch] Отображение BGWeekend в списке БГ
+ Попытка исправить сохранение/загрузку игрокв на Случайном БГ
+ Подогнано под последнюю ревизию

DOWNLOAD NOW!

Последний раз редактировалось GriffonHeart; 03.05.2010 в 05:56.
  Ответить с цитированием
11 пользователя(ей) сказали cпасибо:
alexluana (21.05.2013), ANTOMA (04.05.2010), Den (03.05.2010), Insider42 (03.05.2010), Lightunit (03.05.2010), Nordway (03.05.2010), PSZ (03.05.2010), selector (03.05.2010), sven (03.05.2010), unlucky (03.05.2010), Viste (03.05.2010)
Старый 03.05.2010, 11:36   #39
sven
RMDC Donator
 
Регистрация: 06.03.2010
Сообщений: 14
Сказал(а) спасибо: 157
Поблагодарили 6 раз(а) в 2 сообщениях
sven На верном пути
По умолчанию

Простите меня но коль Вы много Ув. Грифон зацетировали слово "К оружию!" конечно может я Вас не так понял сильно прошу не кричать... но из сути поста я думаю что Вы немного не правы... пометка есть "Призыв к оружию" а не "К оружию!"
sven вне форума   Ответить с цитированием
Старый 03.05.2010, 12:25   #40
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Я выдрал с патч-нотов близов
  Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10795] I must less press random buttons before push in monkey mode. newsbot CMaNGOS Commits 0 30.11.2010 03:51
[10556] Add frand function for random floats with min/max, similar to urand newsbot CMaNGOS Commits 0 29.09.2010 23:20
[9983] Leave at AFK applied only to battlegrounds (not arena) newsbot CMaNGOS Commits 0 27.05.2010 17:12
[9598] update battlegrounds per map + cleanup at delete newsbot CMaNGOS Commits 0 17.03.2010 02:06
[9568] Add function to manually start random movement. newsbot CMaNGOS Commits 0 11.03.2010 01:50


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


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