Jump to content

[DEV] Dungeon Finder


Recommended Posts

@Spp_: About DungeonEncounters.dbc, currently, I am searching in it by name, map and difficulty (which is not ideal, but mostly correct), because I have not seen IDs from this dbc anywhere else...I think that new column in creature_addon with these IDs would be best solution, what do you think?

EDIT: Or maybe whole new table with DungeonEncounter ID, creature ID, map and difficulty would be handy....

Link to comment
Share on other sites

  • Replies 288
  • Created
  • Last Reply

Top Posters In This Topic

I thought of using InstanceString and map, entry, difficulty as key for the dungeonEncounter - however this would make need of massive (boring) rework for sd2..

All ideas with a new table will lack of the main problem - there always will be some event-based encounter which is not completed with killing one npc, so I am sure there needs to be done something on a higher level..

Link to comment
Share on other sites

in worst case only a non-existent spell that should be cast as achievement-criteria on encounter-end :P

As far as i know those encounters that do not kill a boss have a server side spell casted.

For example four horsemen encounter in Naxxramas:

pPlayer->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 59450, 0);

with proper SQL entries to actually check if it was 10 or 25 man:

INSERT INTO `achievement_criteria_requirement` (`criteria_id`,`type`,`value1`,`value2`) VALUES
('7192', '12', '0', '0'), ('7193', '12', '1', '0');

Regards.

Link to comment
Share on other sites

Repo is updated with lot of bugfix/completting code.

I think iam near of the complete SPP implementation. The last step (move maximum code from mangos class to LFGMgr.cpp) will be not done for now. I plan to rebase all the code only when the devellopement will be at the final stage.

@Dernise > GCC restored.

Still need feedback and don't forget it's devellopement thread :)

Link to comment
Share on other sites

Test again =)

1) Client don't show group building progress (that role is already enter to group)

2) Teleport from dungeon is incorrect, should teleport at last point of characters before it was teleported to the dungeon

3) I can't test dungeon finish reward =(

4) Some times client is crash at teleport to the dungeon and login after client cras if cher is in instance...

Link to comment
Share on other sites

Hi thanks KiriX for your precious feedback.

1) I still need more explanation about this point. I didn't correctly understaind what we should see. If anyone can explain me how it work on retail/screenchot/video...

2) Tested lot of time and normaly it work. If member get out of the instence (using main door) it will be teleported to the place he was before entering dongeon.

3) Dungeon reward is unfinished, i will work on it when the core will be more stable.

4) This was occuring too for me, iam investigate.

Latest push implement workaround to resolve unknow char.

Link to comment
Share on other sites

Ok, i'll give you screenshot. It's too hard for me explain what I mean =) My netive language is Russian =)

4) I try to delete char that crash client at login, but get server crash...

Call stack:
Address   Frame     Function      SourceFile
009C593A  00000000  Object::GetUInt64Value+3A  e:\\test\\rsa\\src\\game\\object.h line 159
009C60FB  00000000  Object::GetGuidValue+1B  e:\\test\\rsa\\src\\game\\object.h line 183
009C5308  00000000  Object::GetObjectGuid+18  e:\\test\\rsa\\src\\game\\object.h line 113
010C6031  00000000  LFGMgr::Leave+91  e:\\test\\rsa\\src\\game\\lfgmgr.cpp line 696
00B9B8EF  00000000  Group::RemoveMember+6F  e:\\test\\rsa\\src\\game\\group.cpp line 360
00BE3A33  00000000  Player::RemoveFromGroup+33  e:\\test\\rsa\\src\\game\\player.cpp line 2541
00BEB8F2  00000000  Player::DeleteFromDB+1B2  e:\\test\\rsa\\src\\game\\player.cpp line 4277
0112ADF2  00000000  WorldSession::HandleCharDeleteOpcode+462  e:\\test\\rsa\\src\\game\\characterhandler.cpp line 572
00DF0246  00000000  WorldSession::ExecuteOpcode+36  e:\\test\\rsa\\src\\game\\worldsession.cpp line 926
00DECF5B  00000000  WorldSession::Update+24B  e:\\test\\rsa\\src\\game\\worldsession.cpp line 239
00E04EE2  00000000  World::UpdateSessions+102  e:\\test\\rsa\\src\\game\\world.cpp line 1990
00E02F79  00000000  World::Update+289  e:\\test\\rsa\\src\\game\\world.cpp line 1508
00A87538  00000000  WorldRunnable::run+98  e:\\test\\rsa\\src\\mangosd\\worldrunnable.cpp line 61
012A3871  00000000  ACE_Based::Thread::ThreadTask+21  e:\\test\\rsa\\src\\shared\\threading.cpp line 187
5FD5FB55  00000000  ACE_OS_Thread_Adapter::invoke+E5  e:\\test\\rsa\\dep\\ace_wrappers\\ace\\os_thread_adapter.cpp line 86
5FCDABDA  00000000  ace_thread_adapter+2A  e:\\test\\rsa\\dep\\ace_wrappers\\ace\\base_thread_adapter.cpp line 120
60E3DFD3  00000000  _beginthreadex+243
60E3DF69  00000000  _beginthreadex+1D9
76ED1194  00000000  BaseThreadInitThunk+12
777DB495  00000000  RtlInitializeExceptionChain+63
777DB468  00000000  RtlInitializeExceptionChain+36

Line is not correct, I use not clean mangos core...

2) Incorrect telepor if I teleport by click on LFG eye near minimap then player is in instance...

Link to comment
Share on other sites

Delete all line in DB

character.group

character.group_instence

character.group_member

and you will be able to start

I think i have isolated the problem i must try it and if it's ok i will push it soon.

For your point 1 i think i now understaind.

You mean this. Patch_3.3_LFD_in_queue.jpg

So yes i will try to see what happen.

Link to comment
Share on other sites

Yes, you understand me correct now =)

One more problem:

Start LFG, teleport to the instance, Alt+F4, login into account but not login into world and try to delete char who was in instance when was Alt+F4 -> char not delete and server crash...

And after last commit LFG dont work for me =( I can registration, registr 5 players but nothing to happen =(

Link to comment
Share on other sites

Ok, i'll give you screenshot. It's too hard for me explain what I mean =) My netive language is Russian =)

4) I try to delete char that crash client at login, but get server crash...

Call stack:
Address   Frame     Function      SourceFile
009C593A  00000000  Object::GetUInt64Value+3A  e:\\test\\rsa\\src\\game\\object.h line 159
009C60FB  00000000  Object::GetGuidValue+1B  e:\\test\\rsa\\src\\game\\object.h line 183
009C5308  00000000  Object::GetObjectGuid+18  e:\\test\\rsa\\src\\game\\object.h line 113
010C6031  00000000  LFGMgr::Leave+91  e:\\test\\rsa\\src\\game\\lfgmgr.cpp line 696
00B9B8EF  00000000  Group::RemoveMember+6F  e:\\test\\rsa\\src\\game\\group.cpp line 360
00BE3A33  00000000  Player::RemoveFromGroup+33  e:\\test\\rsa\\src\\game\\player.cpp line 2541
00BEB8F2  00000000  Player::DeleteFromDB+1B2  e:\\test\\rsa\\src\\game\\player.cpp line 4277
0112ADF2  00000000  WorldSession::HandleCharDeleteOpcode+462  e:\\test\\rsa\\src\\game\\characterhandler.cpp line 572
00DF0246  00000000  WorldSession::ExecuteOpcode+36  e:\\test\\rsa\\src\\game\\worldsession.cpp line 926
00DECF5B  00000000  WorldSession::Update+24B  e:\\test\\rsa\\src\\game\\worldsession.cpp line 239
00E04EE2  00000000  World::UpdateSessions+102  e:\\test\\rsa\\src\\game\\world.cpp line 1990
00E02F79  00000000  World::Update+289  e:\\test\\rsa\\src\\game\\world.cpp line 1508
00A87538  00000000  WorldRunnable::run+98  e:\\test\\rsa\\src\\mangosd\\worldrunnable.cpp line 61
012A3871  00000000  ACE_Based::Thread::ThreadTask+21  e:\\test\\rsa\\src\\shared\\threading.cpp line 187
5FD5FB55  00000000  ACE_OS_Thread_Adapter::invoke+E5  e:\\test\\rsa\\dep\\ace_wrappers\\ace\\os_thread_adapter.cpp line 86
5FCDABDA  00000000  ace_thread_adapter+2A  e:\\test\\rsa\\dep\\ace_wrappers\\ace\\base_thread_adapter.cpp line 120
60E3DFD3  00000000  _beginthreadex+243
60E3DF69  00000000  _beginthreadex+1D9
76ED1194  00000000  BaseThreadInitThunk+12
777DB495  00000000  RtlInitializeExceptionChain+63
777DB468  00000000  RtlInitializeExceptionChain+36

Line is not correct, I use not clean mangos core...

2) Incorrect telepor if I teleport by click on LFG eye near minimap then player is in instance...

I have similar crash in Ubuntu x64, I'll post a unix crashlog soon.

------

EDIT: Crashlog http://pastebin.com/30ZSGiUw

------

------

EDIT2: After a quick look, may be it's related with player pointer when calling LFGMgr::Leave because it's always NULL (0x0) in all crashes (Excuse me if I'm wrong, I'm new reading crashlogs ^^) and LFGMgr::Leave() is always called from Group::AddMember() when it crash. Have you the same problem Kirix?

------

Link to comment
Share on other sites

Yes, you can comment

Line 311 and 312 in group.cpp to avoid this.

   //if (isLfgQueued())
   //    sLFGMgr.Leave(NULL, this);

Iam not happy with some of actual implementation so i will write new class from this point.

You can considere the next push as my final one on this branch and you will see new_dungeonfinder branch comming in some days (week?) :)

Link to comment
Share on other sites

cyberium why new branch? Why not to continue exist branch?

Mainly due to

- Data structure is too complex and need to be simplified and completly encapsuled in class.

- Too much structure in this code due to lot of testing by author so there is some uneeded or badly used variable.

- Too much code anywhere incrusted and not realy needed.

- So adding code to this is not easy at this stage.

I will keep some part like handler but sLFMgr need to be reworked/rebased.

Thanks

Link to comment
Share on other sites

Hi, i have some question about Official DF for my implementation.

Do the official one create only classic group composition like 1Tank, 1 Heal, 3 dps? For ex, 2tank, 1 heal, 2 dps or 1 tank 2 heal and 2 dps, can sometimes be a viable group?

When the group is created and all member teleported, if someone quit the group for error and reinvited just after, do he still gain the reward for LFG group in the end of the dungeon?

The teleport out/in option is aviable anytime without cooldown?

Actualy i choosed to keep the player in the queue if it will be logoff for a short laps of time. (<5 min) How it work on official?

Suppose already existed group, if leader do LFG inscription all member recieve Role proposal. If someone refuse is the inscription canceled or other member will enter in the queue without the member who refuse is role?

Thanks for advance :)

Link to comment
Share on other sites

Hi, i have some question about Official DF for my implementation.

Do the official one create only classic group composition like 1Tank, 1 Heal, 3 dps? For ex, 2tank, 1 heal, 2 dps or 1 tank 2 heal and 2 dps, can sometimes be a viable group?

When the group is created and all member teleported, if someone quit the group for error and reinvited just after, do he still gain the reward for LFG group in the end of the dungeon?

The teleport out/in option is aviable anytime without cooldown?

Actualy i choosed to keep the player in the queue if it will be logoff for a short laps of time. (<5 min) How it work on official?

Suppose already existed group, if leader do LFG inscription all member recieve Role proposal. If someone refuse is the inscription canceled or other member will enter in the queue without the member who refuse is role?

Thanks for advance :)

- Newer saw a random group with 2 tanks (1 character in dps role that changes to tank talents yes). I don't know what will happen in a premade group, but I think I remember that for example a group with 4 dps can't get into queue.

- Don't know

- I think yes, unless there's like 10seconds cooldown and it runs out in the loading

- Probably you're removed when you logoff. I go into queue -> select "disconnect" and then a message show in the chat that reads that i'm no longer in the dungeon queue (with the sound too)

- Nope, it's the same if you try to continue one dungeon when one of the members leave and you're in the middle of that dungeon.

Link to comment
Share on other sites

- Nope, it's the same if you try to continue one dungeon when one of the members leave and you're in the middle of that dungeon.

Ok so all member who accept roles will be in the queue in the same group without the member(s) who refused.

New question :

about teleportation, if member quit an LFG group and new one is added for replacement. After the teleportation this new member will be at the entrence of instence or near the group? Same question with member of the party do get out/ get in teleportation.

No other answear?

Specialy about group composition and teleport cooldown. Iam surprised about the possiblity to get out / get in from dungeon without restriction.

Link to comment
Share on other sites

- Nope, it's the same if you try to continue one dungeon when one of the members leave and you're in the middle of that dungeon.

Ok so all member who accept roles will be in the queue in the same group without the member(s) who refused.

New question :

about teleportation, if member quit an LFG group and new one is added for replacement. After the teleportation this new member will be at the entrence of instence or near the group? Same question with member of the party do get out/ get in teleportation.

No other answear?

Specialy about group composition and teleport cooldown. Iam surprised about the possiblity to get out / get in from dungeon without restriction.

No, you understand it wrong, if someone don't accept the role the group can't get into queue. It's in the same way if you're in the middle of dungeon and someone leaves (manually) and then you requeue to continue it, if someone don't accept it or refuse then the group can't get into queue. So if you're in that situation you have two options:

- Premade group before enter dungeon (in town): Party leader kick that one

- LFG group inside dungeon: Kick vote.

Teleportation:

From patch 3.3.3:

Dungeon Finder System

* If a player joins a dungeon run that already has been started, he/she will now be teleported to your group guide's current location, instead of to the entrance of the instance.

But as far I remember if you use the eye to go out (repair) and go in again, you're teleported to the entrance.

Also another interesting thing:

Parties randomly created via the Dungeon Finder will always be arranged in the party interface from top to bottom in the following order: tank, healer, damage, damage, damage.

Link to comment
Share on other sites

No, you understand it wrong, if someone don't accept the role the group can't get into queue. It's in the same way if you're in the middle of dungeon and someone leaves (manually) and then you requeue to continue it, if someone don't accept it or refuse then the group can't get into queue. So if you're in that situation you have two options:

- Premade group before enter dungeon (in town): Party leader kick that one

- LFG group inside dungeon: Kick vote.

My bad, ok this will help me a lot.

Teleportation:

From patch 3.3.3:

Dungeon Finder System

* If a player joins a dungeon run that already has been started, he/she will now be teleported to your group guide's current location, instead of to the entrance of the instance.

But as far I remember if you use the eye to go out (repair) and go in again, you're teleported to the entrance.

Thanks for this too.

Also another interesting thing:

Parties randomly created via the Dungeon Finder will always be arranged in the party interface from top to bottom in the following order: tank, healer, damage, damage, damage.

This is done by client i thing, i will do test about this.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use