Newbie Spellweaver
- Joined
- Aug 27, 2016
- Messages
- 91
- Reaction score
- 1
Hi guys, its been a while. Finally got some free time and want to get back into MapleDev. A few years now? I was talking to ERic how the structure of Odin work and it helped a great deal however I still dont understand everything and still will like to learn.
So in MoopleDev the Ninja Ambush skill I believe doesnt work properly as:
1. It does 1 damage or it misses
2. It does do it periodically as its states.
I tracked it down being in the Special Move Handler with the packet:
After this I dont know what to do.
I tried using a buff that does work in the game to get more familiar with it but it left more questions then answers. For example using MapleWarrior. So here I think packets work in general in regards to Buffs.
Maple Warrior Packet:
1. The client invokes the method messageReceived(IOsession session, Object message)
Where it grabs the packets and parses it knowing which class / handler to invoke to.
2. It goes into its respective handler class (SpecialMoveHandler):
What I am confused about is that it pops out of the messageRecieved method and then where does it go from there? Doesnt the server need to send the new stats to the client? Which class is that?
Also as you can see I wouldnt know where to start with ninja ambush as its a periodic and does damage buff?
Last thing, when you are reading bytes or shorts from the packet does it keep track for example, if I said slea.readByte() and my packet was lets say 5B 00 30 40 50 30 it would read 5B right? then if I did it again would it read 00 ? and if i did sea.readInt() would it read 0x30 50 40 30?
So in MoopleDev the Ninja Ambush skill I believe doesnt work properly as:
1. It does 1 damage or it misses
2. It does do it periodically as its states.
I tracked it down being in the Special Move Handler with the packet:
Code:
5B 00 5A BF 03 00 AC E1 3E 00 1E 01 74 00 00 00 E8 03
After this I dont know what to do.
I tried using a buff that does work in the game to get more familiar with it but it left more questions then answers. For example using MapleWarrior. So here I think packets work in general in regards to Buffs.
Maple Warrior Packet:
Code:
5B 00 7E 02 06 00 A8 E1 3E 00 1E 52 01 4F 01 80 E8 03
1. The client invokes the method messageReceived(IOsession session, Object message)
Where it grabs the packets and parses it knowing which class / handler to invoke to.
Code:
Grabbing Packet: SeekableLittleEndianAccessor slea = newGenericSeekableLittleEndianAccessor(new ByteArrayByteStream(content));
Storing Packet Header: short packetId = slea.readShort();
Identifying which handler: final MaplePacketHandler packetHandler = processor.getHandler(packetId);
Invoking the respective handler: packetHandler.handlePacket(slea, client);
2. It goes into its respective handler class (SpecialMoveHandler):
Code:
Stores your maple Character: MapleCharacter chr = c.getPlayer();
No idea what it does but it reads 4 bytes from the packet?: chr.getAutobanManager().setTimestamp(4, slea.readInt());
Get the skill id from the packet: int skillid = slea.readInt();
Get skill level from Packet: int __skillLevel = slea.readByte();
Creates a Skill object: Skill skill = SkillFactory.getSkill(skillid);
Gets the effect: MapleStatEffect effect = skill.getEffect(skillLevel);
Then Apply the effect ?: skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos);
What I am confused about is that it pops out of the messageRecieved method and then where does it go from there? Doesnt the server need to send the new stats to the client? Which class is that?
Also as you can see I wouldnt know where to start with ninja ambush as its a periodic and does damage buff?
Last thing, when you are reading bytes or shorts from the packet does it keep track for example, if I said slea.readByte() and my packet was lets say 5B 00 30 40 50 30 it would read 5B right? then if I did it again would it read 00 ? and if i did sea.readInt() would it read 0x30 50 40 30?
Last edited: