MaNGOSR2
Would you like to react to this message? Create an account in a few clicks or log in to continue.
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

4 posters

Go down  Message [Page 1 of 1]

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

ike3



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?

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

rsa

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.

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

wratyr



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

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

rsa

rsa
Admin

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

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

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

wratyr



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

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

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

rsa

rsa
Admin

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

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

wratyr



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

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

rsa

rsa
Admin

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

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

Ulduar



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

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

rsa

rsa
Admin

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

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

Ulduar



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

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

ike3



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

Исследовал чуть глубже - 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());
}



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

Sponsored content



Back to top  Message [Page 1 of 1]

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