Jump to content

RP dungeons


DennouNeko
 Share

Recommended Posts

I was playing around, trying to get something entirely different, and I've started to pay attention to extra characters that client uses.

For now got some logs from the RP dungeon (The Three Missing Warriors, done with 2 characters) and summoning a puppet.

It seems that during RP dungeons and when summoning a puppet, server asks client to log in to a channel as a pet with specific EntityId (golems count as regular pets, according to packets :p), and account id/sesison key pair are same as when our character was logging in, although with puppet one packet seems to be missing.
Anyway, in both cases one major difference from a regular login is that there's an extra byte at the end of ChannelLogin packet, and seems to be constant (0x0b).

Gonna play around a bit and see if I'll manage to recreate the packet sequence on Aura.

The notable packets sent from server (and roles that I think they play):

RequestClientSecondaryConnect = 0x4E29;
RequestClientStartRP = 0x902A;
RequestClientEndRP = 0x902B;

Edit: Also, ironically, RP characters and puppets are in NPC entity id range :P 

 

Edited by DennouNeko
  • Like 2
Link to comment
Share on other sites

Got some very good news. Did some experiments and managed to switch to RP character and return from it! (Used Tarlach actor as a template for testing).

It's a bit late at my place, but if I haven't forgotten anything, the attached files should be enough to try it out.

rpstart command turns you into a RP character, rpend brings your back to your original body.

RP.zip

 

Also... a result of early experiments - I was controlling the "Human", but for some reason my character didn't disappear (not mentioning both should be in Dun :P )

mabinogi_2016_06_21_001.jpg

  • Like 2
Link to comment
Share on other sites

Hope so, although Puppeteer skills may be a bit tricky.

As for initializing the RP, have yet to wrap it up in a function, figure out a right way of cleaning up characters that won't be needed anymore, add few comments and guess gonna try to create a pull request. Still needs a bit of testing, once I get home, but so far it looks promissing.

Link to comment
Share on other sites

Nice work. About your character being visible, I vaguely remember someone telling me years ago that your actual character is warped out of sight for the duration of the RP, though I haven't done much research into this topic myself yet, so I don't know if that's in any way true.

Link to comment
Share on other sites

From what I noticed in logs so far, it seems that the main character is being somehow removed from region without being disconnected and warped to its own location (same region and coordinates) without sending EntityAppear or region updates.

Without the first part, nearby players don't notice that the character has been hidden. At this point main character receives EntityDisappears (own) + EntitiesDisappear (rest of nearby entities).
Without second part own client won't hide the character and often it was even freezing on me during switch.

For now working on making and keeping the character invisible during RP. Officials rather doesn't use the GM Hide (ConditionsA.Invisible) for this, since didn't see any condition updates in logs.

 

And while writing this I had an idea... In one SM (GoP, I think) there are those crystals that let you take control over mob. Will have to try and get logs of that since it seems to be semi-related to RP.

Link to comment
Share on other sites

Would it be likely they are just teleporting the characters outside the walls?

I believe most if not all RPs start with cutscenes, which would do well to hide the teleporting taking place. But then, there's Puppetry and that Shadow Mission you've mentioned to think about now.  Maybe it's something like pet summons?

Edited by Talow
Link to comment
Share on other sites

18 minutes ago, Talow said:

Would it be likely they are just teleporting the characters outside the walls?

I believe most if not all RPs start with cutscenes, which would do well to hide the teleporting taking place. But then, there's Puppetry and that Shadow Mission you've mentioned to think about now.  Maybe it's something like pet summons?

Doesn't seem like it. I did verify the region id and coordinates from entering the 3 warriors RP dungeon with GM panel, they point to Alby lobby, that small area in front of statue, so the point that my character was standing at.
Unlike pets and golems, RP characters and puppets are logging in as separate characters using same connection as main character, and that's confirmed.

btw, Saga 1 ep 7 also may provide some meaningful informations, since first mission is a RP mission after single line of dialogue from NPC and it's repeatable.

Edited by DennouNeko
Link to comment
Share on other sites

Got some heads up on the Spirit Crystal, that I've mentioned earlier.

For starters, it's using an action (id 50045) that has a charge time, about 2s.
It seems that it's using yet another way of controlling another character, that involves sending to client EnterDynamicRegion with mob's EntityID, some new packet (op 0x4E3A) that includes character's id and mob's id and playing around with original character + spawning extra ghost on take over.

Also, seems like I was mistaken about the golem being a pet... Was browsing through the log to find any similarities to crystal and found ChannelLogin a bit lower than I've expected, so Golem is also an NPC, that can be roleplayed :P

Edited by DennouNeko
  • Like 1
Link to comment
Share on other sites

Well... Getting a feeling, that I should have done at least half of the code a lot better, but starting to have some working solution. There are sill some issues to fix, like RP characters aren't fully initialized and have no skills. I haven't even started working on dynamic regions so yeah... not ready for a pull request yet.

Anyway, seems like I got a hang of starting and ending of RP sessions, even managed to modify the dungeons to account for NPC Players.

For those interested, the branch I'm working on is at https://github.com/DennouNeko/aura/tree/add-role-playing

Here's the script I'm currently using for testing purposes: test_commands.cs
So yeah, if everything goes fine, it's going to be this easy to start any RP dungeon/mission.

And now some photos :P 
Characters are numbered, because it's the index from pre-defined list of actor templates.

mabinogi_2016_06_25_006.jpgmabinogi_2016_06_25_007.jpg

(getting Tarlach and Ruairi for this one was a pure coincidence xD)

Link to comment
Share on other sites

4 minutes ago, Talow said:

This will be a bit off topic but how similarly to regular dungeons do Shadow Missions function, if you've ever taken a look? I ask because there are RP dungeons tied to the Stonehenges as well.

Dungeons have basically nothing to do with Shadow Missions in how they work, but role playing isn't strictly tied to dungeons.

Link to comment
Share on other sites

  • 3 weeks later...

Got quite a bit work done today...
For testing purposes added the Three Missing Warriors RP dungeon (based on commit in Sairii's G1 branch), learned a lot about cutscenes and sending them to client too early, and hopefully finished npc builder-helper class, RolePlayingNPC.
As usual, the current working branch can be found at DennouNeko/add-role-playing.

Right now it's actually possible to clear that dungeon, although it won't spawn chests or grant keywords to players.
To enter it, give leader the locket (>item 73002) and drop it on Alby's altair.

Also... The first image shows how it ends, when you forget to equip face and hair :P 
mabinogi_2016_07_12_001.jpgmabinogi_2016_07_12_004.jpg

 

And I have small request... I'd need to get a log of someone entering this dungeon as Mari, since I did get only Tarlach and Ruairi when playing around and need that for equipment, inventory, stat and skill updates.
Needed packets start with first SkillInfo (shortly after ChannelLogin), and end with ChannelCharacterInfoRequestR, so you can strip the first few packets with login credentials.

Edited by DennouNeko
link and packet description
  • Like 2
Link to comment
Share on other sites

Seems like dynamic regions were easier to handle than I thought... Pretty much most of necessary changes were done while working on dungeons.

Also, managed to add RP characters to the list of creatures returned by Dungeon.GetCreators, so it should be possible now to spawn chests and (with a bit of extra excersise) add keywords for players.

Good thing is, you don't have to worry about handling RP characters, untill SM or Dungeon is designed for Role Playing.
Unfortunately, can't test for each and every possibility, so some issues are bound to show up later on.
For now, gotta clean up the code a bit, add comments + intellisense and it should be all for initial functionality.

As usual, current test script: test_commands.cs

And as a demo, a short trip into Guild Hall as a RP character.

20160714165626439.png

  • Like 2
Link to comment
Share on other sites

41 minutes ago, Talow said:

Were there rewards at the end of dungeons for RP characters? I don't recall that.

As far as I remember, in nearly all cases you get booted out of dungeon once it's cleared, so you never even get the chance to check for them, but made it possible mostly for the keywords.

Edit:
I've modified the Three Missing Warriors to make all players leave once dungeon is cleared, updating only the keywords and not spawning chests.

Edited by DennouNeko
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...