|
Патчи на рассмотрении Рассматриваемые к принятию патчи |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
25.04.2010, 08:57 | #1 |
Гость
Сообщений: 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 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Кстати, рандомная и не рандомная очередь на оффе общая чтобы уменьшить время ожидания. Последний раз редактировалось TOM_RUS; 25.04.2010 в 09:38. |
|
Пользователь сказал cпасибо: | sven (25.04.2010) |
25.04.2010, 10:29 | #3 |
Гость
Сообщений: 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, 11:08 | #4 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
|
внимательнее смотрим
Код:
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); |
25.04.2010, 10:58 | #6 |
Гость
Сообщений: 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:10 | #7 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
25.04.2010, 13:16 | #8 |
Гость
Сообщений: n/a
|
Рандом БГ сбрасываются раз в сутки для всех или у каждого в своё время, в зависимости от времени последней победы на рандом БГ?
|
25.04.2010, 13:36 | #9 |
RMDC Donator
Регистрация: 07.03.2010
Сообщений: 5
Сказал(а) спасибо: 48
Поблагодарили 1 раз в 1 сообщении
|
раз в сутки для всех
|
25.04.2010, 18:04 | #13 |
Новичок
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 27
Поблагодарили 7 раз(а) в 5 сообщениях
|
так по моему лучше будет
Код:
// 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 |
26.04.2010, 13:41 | #14 |
Гость
Сообщений: n/a
|
не
Код:
+ sBattleGroundMgr.AddBattleGround(GetInstanceID(), IsRandom ? BATTLEGROUND_RB : GetTypeID(), this); Код:
+ sBattleGroundMgr.AddBattleGround(GetInstanceID(), IsRandom() ? BATTLEGROUND_RB : GetTypeID(), this); |
27.04.2010, 07:02 | #15 |
Гость
Сообщений: n/a
|
ADDED 27.04.2010
+ Исправлены некоторые функции БГ, зависящие от ипензушв + Добавлено начисление Очков Арены за выигрышь случайном поле боя + Реализована функция сохранения первой победы на случайном поле боя и её ежедневный сброс + Обновлено под последнюю ревизию. DOWNLOAD NOW! Архив перезалит: DOWNLOAD NOW! Поскольку я скорее всего не буду делать общую очередь на рандом БГ и обычный БГ, то тему можно перенести в моды. Последний раз редактировалось GriffonHeart; 27.04.2010 в 07:13. |
27.04.2010, 12:03 | #16 | |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Цитата:
Код:
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; |
|
27.04.2010, 12:08 | #17 | |
Гость
Сообщений: n/a
|
Цитата:
uint8 isRandom = bgTypeId == BATTLEGROUND_RB; - оставить |
|
27.04.2010, 12:49 | #18 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Почему uint8 а не bool?
GriffonHeart, отличная работа. |
27.04.2010, 15:11 | #19 |
Гость
Сообщений: n/a
|
|
27.04.2010, 14:12 | #20 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
По-моему должно быть не
Код:
CONFIG_UINT32_VALUE_COUNT, CONFIG_UINT32_RANDOM_BG_RESET_HOUR Код:
CONFIG_UINT32_RANDOM_BG_RESET_HOUR, CONFIG_UINT32_VALUE_COUNT |
Пользователь сказал cпасибо: |
27.04.2010, 15:26 | #22 |
Гость
Сообщений: n/a
|
Первый пост обновлён.
Патч тестировался на лайф сервере с онлайном около 2к игроков, большенство проблем устранены. |
27.04.2010, 15:31 | #23 |
Гость
Сообщений: 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 |
Гость
Сообщений: 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 | |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Цитата:
|
|
27.04.2010, 23:02 | #26 |
Гость
Сообщений: n/a
|
|
28.04.2010, 02:32 | #27 | |
Гость
Сообщений: n/a
|
Цитата:
ADDED 28.04.2010 Исправлено создание не рандомных БГ DOWNLOAD NOW! Последний раз редактировалось GriffonHeart; 28.04.2010 в 06:26. |
|
28.04.2010, 16:18 | #28 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Стоит последний патч, сервер иногда виснет если на случайном бг есть игроки. Дампы снять не могу, т.к. его прибивает антифриз :/
|
28.04.2010, 17:56 | #30 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
ок, просто подумал именно на этот патч, ибо виснет именно когда есть игроки на рандом бг (у них прям глаза загорелись когда узнали что работает рандом бг). Буду искать причину методом откатов :/
|
29.04.2010, 07:01 | #31 |
Гость
Сообщений: n/a
|
Советую выставить min и max плеер в базе равными 10
Ибо варсонг 40x40 не есть гуд |
29.04.2010, 09:27 | #32 | |
Гость
Сообщений: n/a
|
Цитата:
Код:
INSERT INTO `battleground_template` (`id`, `MinPlayersPerTeam`, `MaxPlayersPerTeam`, `AllianceStartLoc`, `AllianceStartO`, `HordeStartLoc`, `HordeStartO`) VALUES (32, 10, 40, 0, 0, 0, 0); при регистрации 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 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
|
29.04.2010, 10:01 | #34 |
Гость
Сообщений: n/a
|
Хотя я знаю один баг с [patch] Random BattleGrounds! При обычной регистрации на бг (на все кроме случайного) такого нет!
Суть вот в чем: 1. Вы попадаете на бг, для примера возьму низину арати, при регистрации на Random BattleGrounds. 2. Далее начинается бг по истечению 2х минут (раньше не проверял, но думаю результат будет один и тот же) 3. Вас кикает с игры (кик не проверял)! Бывает разрыв связи (провайдер говорит что телефонная линия слаба или что-то в этом роде, телефонная компания само собой грешит на провайдера, не суть). Так вот вас выкидавает с мира! 4. Далее вы проходите авторизацию и попадает обратно на это же БГ Далее уже ошибки! (на примере Низины Арати) 1. Вы не можете использовать флаг! (точнее используете, но результат 0) 2. При смерти вас телепортирует на ближайшее кладбище, при этом не зависимо от того кому оно принадлежит на текущий мометн. 3. Спириты не работают, для вас само собой только. 4. При завершении бг, при наджатии на кнопку покинуть бг реакция 0. 5. Если вы через команду Гм телепортируетесь с бг например в Штормград и покинете группу, вам все равно будете приходить репутация, сообщения с бг, и вы до сих пор будуте числится в группе на Бг (только в группе)! Причина: я ее не знаю, но такая строка как Код:
BattleGround *bg = player(ну это само собой тот, кого выкинуло с мира)->GetBattleGround() Проверено 5 раз, 2 раза я проверял и 3 раза 3 разных человека! |
29.04.2010, 15:45 | #35 | |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Цитата:
|
|
30.04.2010, 02:38 | #36 |
Гость
Сообщений: n/a
|
Значит сохранение на рандом-бг не работает. Либо работает криво, надо смотреть.
|
30.04.2010, 20:58 | #37 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
|
03.05.2010, 05:52 | #38 |
Гость
Сообщений: n/a
|
ADDED 03.05.2010
+ За битву на поле боя с пометкой «К оружию!» игрок теперь получает такую же награду, как и за случайное поле боя. + Награды за первую в день победу являются взаимоисключающими: в день можно получить на более одной. Если игроку в качестве случайного выпало поле боя с пометкой «К оружию!», он получит только одну дополнительную награду. + Для корректной работы требуется патч [patch] Отображение BGWeekend в списке БГ + Попытка исправить сохранение/загрузку игрокв на Случайном БГ + Подогнано под последнюю ревизию DOWNLOAD NOW! Последний раз редактировалось GriffonHeart; 03.05.2010 в 05:56. |
03.05.2010, 11:36 | #39 |
RMDC Donator
Регистрация: 06.03.2010
Сообщений: 14
Сказал(а) спасибо: 157
Поблагодарили 6 раз(а) в 2 сообщениях
|
Простите меня но коль Вы много Ув. Грифон зацетировали слово "К оружию!" конечно может я Вас не так понял сильно прошу не кричать... но из сути поста я думаю что Вы немного не правы... пометка есть "Призыв к оружию" а не "К оружию!"
|
03.05.2010, 12:25 | #40 |
Гость
Сообщений: n/a
|
Я выдрал с патч-нотов близов
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[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 |