MaNGOSR2

MangosR2 is a free, open source MMORPG framework, derived from MaNGOS project


You are not connected. Please login or register

LFG: Same player twice in group

View previous topic View next topic Go down  Message [Page 1 of 1]

1 LFG: Same player twice in group on Thu Jan 17 2013, 08:06

I am trying to find out why I have this strange behaviour. In my branch I leverage LFG system to enable bots to join Dungeon Finder. Everything works perfectly except that I get one bot in group twice!

The methods I call are:

1. sLFGMgr.Join() supplying LFGPlayerState all the necessary parameters. One call per player.
2. Listen for SMSG_LFG_PROPOSAL_UPDATE and accepting the proposal using sLFGMgr.UpdateProposal(). One call per player.
3. Listen for SMSG_LFG_ROLE_CHECK_UPDATE and setting roles finishing with sLFGMgr.UpdateRoleCheck(). One call per player.

LFGMgr::TryCreateGroup returns the correct group.

The log filtered by double-joined player guid (7326):

2013-01-17 10:53:56 LFGMgr::AddToQueue: player 7326 joined, type 1
2013-01-17 10:53:56 LFGMgr::AddToSearchMatrix 7326 added, dungeons size 17
2013-01-17 10:53:56 SMSG_LFG_UPDATE_PLAYER 7326 updatetype: 5
2013-01-17 10:53:56 SMSG_LFG_UPDATE_SEARCH 7326 update: 1
2013-01-17 10:53:56 SMSG_LFG_UPDATE_SEARCH 7326 update: 1
2013-01-17 10:54:06 SMSG_LFG_QUEUE_STATUS 7326 dungeonEntry: 1
2013-01-17 10:54:42 SMSG_LFG_QUEUE_STATUS 7326 dungeonEntry: 1
2013-01-17 10:54:55 LFGMgr::SetRoles role for player 7326 set to 4
2013-01-17 10:54:55 LFGMgr::RemoveFromSearchMatrix 7326 removed, dungeons size 17
2013-01-17 10:54:55 SMSG_LFG_UPDATE_PLAYER 7326 updatetype: 10
2013-01-17 10:54:55 SMSG_LFG_UPDATE_PLAYER 7326 updatetype: 13
2013-01-17 10:54:55 SMSG_LFG_PROPOSAL_UPDATE proposal 1, player 7326, state: 0
2013-01-17 10:55:00 SMSG_LFG_UPDATE_PLAYER 7326 updatetype: 10
2013-01-17 10:55:00 LFGMgr::RemoveFromQueue: player 7326 removed, type 1
2013-01-17 10:55:00 LFGMgr::RemoveFromSearchMatrix 7326 removed, dungeons size 17
2013-01-17 10:55:00 LFGMgr::RemoveFromSearchMatrix 7326 removed, dungeons size 17
!twice in group!
2013-01-17 10:55:00 ERROR:SQL: INSERT INTO group_member(groupId,memberGuid,memberFlags,subgroup,roles) VALUES('3','7326','0','0','5')
2013-01-17 10:55:00 ERROR:SQL ERROR: Duplicate entry '3-7326' for key 'PRIMARY'
2013-01-17 10:55:01 LFGMgr::AddEvent guid 7326 type 1
2013-01-17 10:55:01 LFGMgr::AddEvent guid 7326 type 1

I don't think this is R2 bug. Likely I am missing some call or calling something twice. What could be the cause of such issue? Did anybody experienced this with non-bot players?

View user profile

2 Re: LFG: Same player twice in group on Sat Jan 19 2013, 17:20

rsa


Admin
saving group member id to DB called for all players in group, but for group leader twice. this old bug (may be not bug?), not related to LFG. i'm not make anything with this - not have any difference with another behavior.

View user profile

3 Re: LFG: Same player twice in group on Fri May 17 2013, 13:51

то есть исправить нельзя? лфг не работает?

View user profile

4 Re: LFG: Same player twice in group on Sat May 18 2013, 11:35

rsa


Admin
wratyr wrote:то есть исправить нельзя? лфг не работает?

Это откуда-ж такой вывод сделан?!! Мда... Как в анекдоте про пушкина на суку.

View user profile

5 Re: LFG: Same player twice in group on Sat May 18 2013, 22:12

вывод сделан из того что сервер собран из мастера, лфг собирает группу и телепортирует в подземелье, но 1 из участников группы(как я понял лидера) добавляется 2 раза и занимает 2 слота.
И в подземелье попадает 4 человека, 5-ый получает кд.
Поэтому и интересуюсь.

Как я понял, выше описана подобная проблема.

View user profile

6 Re: LFG: Same player twice in group on Sun May 19 2013, 04:00

rsa


Admin
бред... выше описана проблема с попыткой дважды сохранить одного и того же члена группы. никакого отношения к ЛФГ, как и каких-то последствий, кроме строчки ошибки в логе, не имеет. потому и заниматься никому не интересно.

View user profile

7 Re: LFG: Same player twice in group on Sun May 19 2013, 07:44

а как быть с моей проблемой?

View user profile

8 Re: LFG: Same player twice in group on Sun May 19 2013, 08:04

rsa


Admin
если вы ее будете описывать так, как сейчас - то решать самому. как минимум, требуются результаты проверки на тестовом сервере R2.
до сих пор такой проблемы никто не публиковал.

View user profile

9 Re: LFG: Same player twice in group on Sun May 19 2013, 15:58

Учитывая, что на тестовом сервере я ну и еще пара-тройка тестеров бывают(и то наверное в разное время заходим), то технически протестировать не выйдет(

View user profile

10 Re: LFG: Same player twice in group on Sun May 19 2013, 16:02

rsa


Admin
интересно, а как вы думаете я ЛФГ писал? 5 окон запускал и тестил... не вижу никаких проблем.

View user profile

11 Re: LFG: Same player twice in group on Sun May 19 2013, 16:19

Черт, я не додумался до этого :D
А с другой стороны, на кой черт оно нужно! Мангос же не Триня, где паблик сервера держат ради доната!
P.S: Жаль боты пакеты слать не умеют! От них пользы больше, чем от игроков. Не ноют, не афкашут, в носу не ковыряются! Удовольствие одно.

View user profile

12 Re: LFG: Same player twice in group on Sat Jun 15 2013, 05:40

Можем вернутся к этой теме?

Исследовал чуть глубже - 2 раза добавляется лидер, причем по коду это здесь:

LFGMgr::UpdateProposal


Code:
...
if (!pGroup)
{
        // ln 1381
        // Special case to add leader to LFD pGroup:
        AddMemberToLFDGroup(leader->GetObjectGuid()); // лидер здесь добавляется в группу
        pProposal->RemoveMember(leader->GetObjectGuid());
        leader->GetLFGPlayerState()->SetProposal(NULL);
}



Code:
...

// line 1413
// move players from proposal to pGroup
for (GuidSet::const_iterator itr = proposalGuids.begin(); itr != proposalGuids.end(); ++itr)
{
    ...
    pGroup->AddMember(pPlayer->GetObjectGuid(), pPlayer->GetName()); // здесь он добавляется еще раз
}


В первом блоке лидера удалили из пропозала, но в сете он остался, в результате - добавляем в группу еще раз.

Если добавить условие, например:

Code:
if (!pPlayer->GetGroup() || pPlayer->GetGroup() != pGroup)
{
         pGroup->AddMember(pPlayer->GetObjectGuid(), pPlayer->GetName());
}



проблема фиксится.

View user profile

Sponsored content


View previous topic View next topic Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum