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!

[Leak] [v179+] PacketBakery's EncodeForRemote [Nexon] [FULL]

(O_o(o_O(O_O)o_O)O_o)
Loyal Member
Joined
Apr 9, 2009
Messages
1,088
Reaction score
322
Happy Holidays~! The theme of this year's releases is: Nexon buff stuff!

This thread is 100% spoonfeeding! You can plug this stuff directly into eric's source!
Also this thread is not clickbait.

So where eric so nicely showed you where the TwoStates go in OnUserEnterField (http://forum.ragezone.com/f427/release-nexons-twostatetemporarystat-buffs-1122668/), there's a bunch more stuff that should be cleaned up. The TwoStates are only a part of the humongous (at least in recent versions) packet that sends the buff information of players that entered a map.

So in order to implement this packet (EncodeForRemote) we want to start out at OnUserEnterField.

Step 1:
Remove everything buff related from your OnUserEnterField packet (It's inferior).

Step 2 (skip if you have a good source):
We're being cool here so rename MapleBuffStat.java to CharacterTemporaryStat.java and change all flag names and values to Nexon ones. Also turn the rest of your src into a nexon alike one. We're working on it right now anyway so nbd just keep going. This way adding eric's release will be easier too. (Thread not sponsored by Eric(TM))

Step 3:
Grab the packet:



Step 4:
Now the first thing to take note of, is probably nMaxIndex, this is just the number of int's that are written when writing the buff mask. So for v179, it is 18. (don't quote me on this).
If you didn't realize this you might as well just stop it right here.

Step 5:
This line of code:
PHP:
this.pStopForceAtom.Encode(oPacket);
Will very likely give you errors. So to fix that, add this class:
PHP:
/**
 *
 * @author PacketBakery
 */
 
public class StopForceAtom {

    public int nIdx, nCount, nWeaponID;
    public List < Integer > aAngleInfo = new ArrayList < > ();

    public void Decode(InPacket iPacket) {
        this.nIdx = iPacket.DecodeInt();
        this.nCount = iPacket.DecodeInt();
        this.nWeaponID = iPacket.DecodeInt();
        int nSize = iPacket.DecodeInt();
        for (int i = 0; i < nSize; i++) {
            this.aAngleInfo.add(iPacket.DecodeInt());
        }
    }

    public void Encode(OutPacket oPacket) {
        oPacket.EncodeInt(this.nIdx);
        oPacket.EncodeInt(this.nCount);
        oPacket.EncodeInt(this.nWeaponID);
        oPacket.EncodeInt(this.aAngleInfo.size());
        for (Integer nAngle: this.aAngleInfo) {
            oPacket.EncodeInt(nAngle);
        }
    }
}
If you noticed that this basically does absolutely nothing, that's correct. You'll have to do the rest of this StopForceAtom stuff yourself.

Step 5:
This is probably the last piece of code giving you issues now:
PHP:
for (TSIndex pIndex : TSIndex.values()) {
            this.aTemporaryStat.get(pIndex.nIndex).Encode(mplew);
        }
Don't worry though! These are the TwoStates that eric just released. (Yay!) So head over to his thread which is written infinitely better than this one(though I haven't read it yet), and implement that poop too: http://forum.ragezone.com/f427/release-nexons-twostatetemporarystat-buffs-1122668/

P.S.
Also, uhm, flags PacketBakery didn't know are named Unk, the rest is named nexon. The structure of the packet is accurate (Don't quote me on this either though (Cuz I didn't fully read this one, but it looks the same as my own.).) .

Novak - [Leak] [v179+] PacketBakery's EncodeForRemote [Nexon] [FULL] - RaGEZONE Forums


poop HE CAUGHT ME, I SWEAR DUDE THATS NOT WHAT I MEAN I SWEAR PLS PLS PLS I JUST MEANT THAT MINE WORKS SO THIS ONE DEFFFF WORKS!! BETTER EVEN!!!

P.S.S.
If you don't do nexon code, you should probably start writing your own right now. Also this one wasn't made by me, I wanted to release mine which isn't 100% nexon alike but we wanna do nexon releases only starting today so i'm giving you someone else's instead.
(Take note that if you are making an odin one you should first stop and recode your src, or wait for PacketBakery (TM) full leak.)

P.S.S.S.
A big note though. This packet is one of two very similar ones. And yes, that means there's another absurdly humongous packet for you to get if you want buffs working just that tiny little bit better. To be fair the other one is the one you want most. Besides EncodeForRemote you also have encodeForLocal. The latter one is the one used in the local user buff packet. A lot of sources (*cough* acernis *cough*) have it where there are multiple packets with the giveBuffe opcode and the giveBuff packet encodes differently based on different skill id's. This is however absolutely not how the buffPacket should be handled, considering the leaks we have now doing it like this defines the fact you are absolutely retarded. So you'll have to look into encodeForLocal and make an encoder similar to this EncodeForRemote one. When you've finished this homework assignment send it to eric for grading.

P.S.S.S.S.
Please note that the buffPacket in most sources might be short, but ORDER OF ENCODE MATTERS. This means that by looping like done in most sources the values you write for certain flags COULD be read as the value for another included flag by the client. This is why these packets are both extremely long lists of if statements, they have to follow the client's pattern. (Eric actually didn't know this and kept telling me to just loop for ages)

P.S.S.S.S.S.
Would've liked to release my own but we're a fully nexon forum now. So rip you guys.

P.S.S.S.S.S.S.
Don't ask my for my own, i'm not odin either. My packet is exactly the same besides my packets constructors are a tad different and I didn't code StatOption yet. Other than that it's the same so no way I could give and you could copy pasta.

P.S.S.S.S.S.S.S.
Eric is taking over this section. If you ever release something not nexon you aren't safe anymore.
 
Last edited:
Newbie Spellweaver
Joined
Sep 11, 2016
Messages
59
Reaction score
81
@Novak
i just read this thread again, you changed my code.
PHP:
for (TSIndex pIndex : TSIndex.values()) {
    this.aTemporaryStat.get(pIndex.nIndex).encodeForClient(oPacket);
}

This was not how it is in my src.

It looks like this
PHP:
for (TSIndex pIndex : TSIndex.values()) {
    this.aTemporaryStat.get(pIndex.nIndex).Encode(oPacket);
}

On top of that, your thread says this (wtf lol)
PHP:
for (TSIndex pIndex : TSIndex.values()) {
    this.aTemporaryStat.get(pIndex.nIndex).encodeForClient(mplew);
}
 
Back
Top