Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Межфракционное БГ. #1381

Open
Thermaltake opened this issue Aug 17, 2013 · 11 comments
Open

Межфракционное БГ. #1381

Thermaltake opened this issue Aug 17, 2013 · 11 comments

Comments

@Thermaltake
Copy link

Только не бейте меня :D
Суть. Наверное, многие тут слышали и видели это. (я не видел).
У многих онлайн на серверах уже, наверное, по падал (особенно с новыми наворотами, когда много чего по поломалось).
Можно было бы в ядро прилепить это дело. Суть в том, когда игрок принимает вход на БГ уже, его должно кинуть за ту фракцию на БГ, в которой меньше народу, а если поровну, то в свою фракцию. Тем самым, выходит, что для балансирования на БГ, часть игроков с одной фракции могут играть ЗА противоположную фракцию.

Один коммит на трини нашел подобный, https://github.com/Lillecarl/TrinityCore/commit/019c382a1984491273370535bf445c28c9067787 но там, к сожалению, есть то, что мне не понятно.
Пробовал сам по коду гулять, хотел, хотя бы найти место, где выбирается, за какую фракцию кинуть.. Изменял фракции местами и еще всякую дребедень делал, не получалось, все кидало всех на свои места.

Кто то может подсказать, с какого места идет распределение игроков, за кого им играть на БГ ? (только прямо про фракцию указывать не нужно... а то знаю rsa..)

Может, кто еще что подскажет, где и что нужно будет делать..
Если что то не так думаю, тоже желаю это узнать.

@Sar777
Copy link
Member

Sar777 commented Aug 17, 2013

void BattleGround::AddPlayer(Player* plr)

тут пробовал что менять с тимой?

@Thermaltake
Copy link
Author

Это первое во что я полез менять.
В общем то, я просто даже не понял, где назначается тима, в которой плеер будет на БГ. (она же даже не в AddPlayer ?)

@Thermaltake
Copy link
Author

Сейчас внимательнее пересмотрел..
https://github.com/mangosR2/mangos/blob/master/src/game/BattleGround/BattleGround.cpp#L1359
https://github.com/mangosR2/mangos/blob/master/src/game/Player.h#L2160

С моими знаниями не совсем понятно m_bgData.bgTeam ....

@rsa
Copy link
Member

rsa commented Aug 17, 2013

Распределение начинается с постановки в очередь. А тим назначается в SetBGTeam().
чтобы реализовать вашу идею надо копаться в WorldSession::HandleBattleFieldPortOpcode, вот в этом месте:
// set the destination team
_player->SetBGTeam(ginfo.GroupTeam);
но там еще после порта может быть проверка так что не все так просто.

@Thermaltake
Copy link
Author

В общем то, получилось сделать. Что то с чем то, конечно :D
Но мне кажется, слишком безобразно...
В общем.. До SetBGTeam я задаю, в зависимости от кол-во игроков на БГ, тиму и фракцию игроку. Затем уже в остальных местах все как и раньше, использовалось из GetTeam();

Суммонит на БГ нормально, туда куда и должно по фракции. На всг и флаги берутся и на низине и оке захватывается все нормально. Единственное, нужно будет разобраться, чтобы при релоге на БГ это дело не сбивалось. Просто, если кинет не за свою фракцию на БГ, после релога черт знает что.
А так же с изменением репутации и кладбищами...

@Sar777
Copy link
Member

Sar777 commented Aug 18, 2013

да... камней подводных там ппц, помню когда-то хотел реализовать, тогда был комп корч и по тестить толком не мог, и забил

@rsa
Copy link
Member

rsa commented Aug 19, 2013

ну кинули бы код глянуть. уж что-что, а покритиковать всегда желающие найдутся :)

@Thermaltake
Copy link
Author

Я сегодня еще думал разобраться с кое чем, а потом кинуть...
В общем, https://gist.github.com/Thermaltake/3e45f7260e129fbf52c7 утром немного поправил. Краш убрал и фракция после выхода нормально возвращается. Ps, БГ лучше ставить в режим отладки сразу.
Однако, мне кажется эти грабли с ресом на БГ и прочем... Легче на время БГ игроку менять расу. Может кто знает, как?
И еще нужно будет под это дело, думаю, очередь переделать...

Вот, сегодня хочу до проверять и чуть доделать правильнее.

Только не надо сильно уж критиковать. У меня знаний то мало, поэтому сделал, как мне было понятнее.

@Thermaltake
Copy link
Author

С ресом разобрался на БГ. С захватом точек тоже. Если кому нужно будет, скину переделанный код с доделкой...

@Taumer
Copy link

Taumer commented Aug 22, 2013

Это, как минимум, интересно. Скиньте, пожалуйста

@rsa
Copy link
Member

rsa commented Aug 22, 2013

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants