Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Help to determine packet in BMS'Leak .Idb

Newbie Spellweaver
Joined
Jan 26, 2017
Messages
19
Reaction score
2
Hi, i'm look into BMS'Leak server files to read and undertand the way nexon handle things in Server side, but there in an packet i cannot undertand in CUSkill::DoActiveSkill_Summon method
Can anyone help me to determine what packet (header: 25 or 0x19) is in this method? Look like it will send after Summoned created successful. I was tried to compare with send headers of GMS v62, but still couldn't found what it is.
Kyber - Help to determine packet in BMS'Leak .Idb - RaGEZONE Forums
Kyber - Help to determine packet in BMS'Leak .Idb - RaGEZONE Forums
 
Last edited:
Skilled Illusionist
Joined
Jul 17, 2010
Messages
333
Reaction score
165
Code:
COutPacket::COutPacket(&oPacket, 25, [B]1[/B]);
The last byte '1' tells it's loopback packet. So most likely it's in ~OnPacket.

CUser::OnPacket
Code:
case 0x19:
        CUser::OnUserEffect(this, iPacket);
        break;
Oh, it was UserEffect packet as Chikn said. (in this case, it's for remote users to show skill effect)
 
Upvote 0
Newbie Spellweaver
Joined
Jan 26, 2017
Messages
19
Reaction score
2
Code:
COutPacket::COutPacket(&oPacket, 25, [B]1[/B]);
The last byte '1' tells it's loopback packet. So most likely it's in ~OnPacket.

CUser::OnPacket
Code:
case 0x19:
        CUser::OnUserEffect(this, iPacket);
        break;
Oh, it was UserEffect packet as Chikn said. (in this case, it's for remote users to show skill effect)
Thank you guys <3
 
Upvote 0
Newbie Spellweaver
Joined
Jan 26, 2017
Messages
19
Reaction score
2
did anyone know what is this packet?? and did it exists in GMS version (v0.62)? @Chikn @Yuuroido
PHP:
COutPacket::COutPacket(&thisa, 24, 1);
LOBYTE(v12) = 2;
COutPacket::Encode4(&thisa, dwFieldID);
v9._m_pStr = 0;
ZXString<char>::operator=(&v9, &sPortal);
COutPacket::EncodeStr(&thisa, v9);
COutPacket::Encode1(&thisa, 0);
COutPacket::Encode1(&thisa, 0);
COutPacket::Encode1(&thisa, 0);
COutPacket::Encode1(&thisa, 0);
CUser::SendPacket(v4, &thisa);
It look like an packet to warp player to another map, but can't found this packet in GMS version. If i'm not wrong, GMS only using CStage::OnSetField to warp player, right?

P/s: nvm, i found it. Thank you guys <3
 
Last edited:
Upvote 0
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
i'm loving all these nexon names and references <3

just curious, are you making a nexon-replica emulator as well Kyber? or is this just to further better name/fix current packets and functionality of Odin :p

yes OnSetField is the only way you warp players to entirely different maps (for all versions and regions alike). assuming you know this since you found it, just remember if bLoopback is true, go to CUser::OnPacket and scroll to the bottom. at the bottom is an } else { condition with a second switch, this switch is for all the loopback opcodes. you can convert them to decimal if they aren't already (click on a condition and press H to switch between dec/hex) to easily find any loopback packet relating to the user.
 
Upvote 0
Newbie Spellweaver
Joined
Jan 26, 2017
Messages
19
Reaction score
2
just curious, are you making a nexon-replica emulator as well @Kyber? or is this just to further better name/fix current packets and functionality of Odin :p
-Yes, i'm making a nexon-replica emulator but in java with java 8, not C++, and ofcouse i also make all the method and variable naming like as nexon too :D:

yes OnSetField is the only way you warp players to entirely different maps (for all versions and regions alike). assuming you know this since you found it, just remember if bLoopback is true, go to CUser::OnPacket and scroll to the bottom. at the bottom is an } else { condition with a second switch, this switch is for all the loopback opcodes. you can convert them to decimal if they aren't already (click on a condition and press H to switch between dec/hex) to easily find any loopback packet relating to the user
-on the first time, I thought that packet will send to the client, but i has realized that it is a loopback packet (thanks to @Yuuroido), that send back to server and trace throught CUser::OnPacket :D: after that, i was found the packet 0x24 is: CUser::OnTransferFieldRequest, and in this function will sending a packet called CUser::SendSetFieldPacket to warp player :D:
 
Last edited:
Upvote 0
Back
Top