[v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

Results 1 to 5 of 5
  1. #1
    (O_o(o_O(O_O)o_O)O_o) Novak is offline
    MemberRank
    Apr 2009 Join Date
    The NetherlandsLocation
    1,120Posts

    [v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

    Hi there!

    I'm still trying to get a v157 going :/ Atm I'm looking to (properly) update the addCharacterInfo packet to get a working WARP_TO_MAP and be able to get in-game.

    The one thing I have no clue about though, is how do I get the mask if I can't sniff the version? Is it even possible to obtain via IDA?

    Or does anyone else happen to still have a v157 mask?

    Here is an example of my current [v144/v145] addCharacterInfo:
    PHP Code:
    public static void addCharacterInfo(MaplePacketLittleEndianWriter mplewMapleCharacter chr) {
            
    long mask 0xFD_FF_FF_FF_FF_FF_FF_FFL;//0xFF_BF_FF_FF_FF_FF_FF_FFL;
            
    mplew.writeLong(mask);
            
            
    mplew.write(0);
            for (
    int i 03i++) {
                
    mplew.writeInt(0);
            }
            
    mplew.write(0);
            
    mplew.write(0);
            
    mplew.writeInt(0);
            
    mplew.write(0);

            if ((
    mask 1) != 0) {
                
    addCharStats(mplewchr);
                
                
    mplew.write(chr.getBuddylist().getCapacity());

                
    mplew.write(chr.getBlessOfFairyOrigin() != null);
                if (
    chr.getBlessOfFairyOrigin() != null) {
                    
    mplew.writeMapleAsciiString(chr.getBlessOfFairyOrigin());
                }

                
    mplew.write(chr.getBlessOfEmpressOrigin() != null);
                if (
    chr.getBlessOfEmpressOrigin() != null) {
                    
    mplew.writeMapleAsciiString(chr.getBlessOfEmpressOrigin());
                }

                
    MapleQuestStatus ultExplorer chr.getQuestNoAdd(MapleQuest.getInstance(GameConstants.ULT_EXPLORER));
                
    mplew.write((ultExplorer != null) && (ultExplorer.getCustomData() != null));
                if ((
    ultExplorer != null) && (ultExplorer.getCustomData() != null)) {
                    
    mplew.writeMapleAsciiString(ultExplorer.getCustomData());
                }
            }
            if ((
    mask 2) != 0) {
                
    addMoneyInfo(mplewchr);
            }
            if ((
    mask 8) != 0) {
                
    addInventoryInfo(mplewchr);
            }
            if ((
    mask 0x100) != 0) {
                
    addSkillInfo(mplewchr);
            }
            if ((
    mask 0x8000) != 0) {
                
    addCoolDownInfo(mplewchr);
            }
            if ((
    mask 0x200) != 0) {
                
    addStartedQuestInfo(mplewchr);
            }
            if ((
    mask 0x4000) != 0) {
                
    addCompletedQuestInfo(mplewchr);
            }
            if ((
    mask 0x400) != 0) {
                
    //mplew.writeShort(0);
                
    addUnk400Info(mplewchr);
            }
            if ((
    mask 0x800) != 0) {
                
    addRingInfo(mplewchr);
            }
            if ((
    mask 0x1000) != 0) {
                
    addRocksInfo(mplewchr);
            }
            if ((
    mask 0x20000) != 0) {
                
    mplew.writeInt(0);
            }
            if ((
    mask 0x10000) != 0) {
                
    addMonsterBookInfo(mplewchr);
            }
            
    mplew.writeShort(0);
            
    mplew.writeShort(0);
            if ((
    mask 0x40000) != 0) {
                
    chr.QuestInfoPacket(mplew);
            }
            
    mplew.writeShort(0);//new143
            
    if ((mask 0x200000) != 0) {
                if ((
    chr.getJob() >= 3300) && (chr.getJob() <= 3312)) {
                    
    addJaguarInfo(mplewchr);
                }
            }
            if (
    GameConstants.isZero(chr.getJob())) {
                
    addZeroInfo(mplewchr);
                
    //chr.getStat().zeroData(mplew, chr);
            
    }
            
    mplew.writeShort(0);
            
    mplew.writeShort(0);

            if ((
    mask 0x10000000) != 0) {
                
    addStealSkills(mplewchr);
            }
            if ((
    mask 0x80000000) != 0) {
                
    addAbilityInfo(mplewchr);
            }

            
    mplew.writeInt(0); //new v134
            
    mplew.write(0);

            
    addHonorInfo(mplewchr);
            if (
    GameConstants.isAngelicBuster(chr.getJob())) {
            
    mplew.writeInt(1);
            
    mplew.writeInt(21173); //face
            
    mplew.writeInt(37141); //hair
            
    mplew.writeInt(1051291); // dressup suit cant unequip
            
    mplew.writeInt(0);
            
    mplew.writeInt(0);
            
    mplew.write(0);
            } else {
            
    mplew.writeLong(1);
            
    mplew.writeZeroBytes(17);
            }
            
    mplew.writeLong(getTime(-2));

            
    addEvolutionInfo(mplewchr);
            
    mplew.writeZeroBytes(3);//new 144
            
    mplew.write(0); //farm monsters length
            //if length > 1 for each monster int id and long expire

            
    addFarmInfo(mplewchr.getClient(), 0);
            
    mplew.writeInt(5);//-1
            
    mplew.writeInt(0);

            
    mplew.write(0);
            
    mplew.writeInt(0);
            
    mplew.writeLong(getTime(-2));
            
    mplew.writeInt(0);

            
    //newshit 143
            
    mplew.write(0);
            
    mplew.writeShort(1);
            
    mplew.writeInt(1);
            
    mplew.writeInt(0);
            
    mplew.writeInt(100);//was0 - 143
            
    mplew.writeLong(getTime(-2));
            
    mplew.writeInt(0);

            if ((
    mask 0x2000) != 0) {
                
    addCoreAura(mplewchr); //84 bytes + boolean (85 total)
            
    }

            
    mplew.writeShort(0); //for <short> length write 2 shorts

            
    mplew.writeInt(chr.getClient().getAccID());
            
    mplew.writeInt(chr.getId());
            
    mplew.writeInt(4); // size?
            
    mplew.writeInt(0);
            
    addRedLeafInfo(mplewchr);
        } 
    I'm pretty sure even if I have the mask, it'll still be very difficult to update the rest of it, but at least I'll get a step further.


  2. #2
    I'm overrated. Fraysa is offline
    MemberRank
    Apr 2008 Join Date
    4,891Posts

    Re: [v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

    The mask is -1 by default for all versions. Also, "flag" is a better name. It's not in IDA simply because IDA reads it and reads the packet accordingly.

    Good luck!

  3. #3
    (O_o(o_O(O_O)o_O)O_o) Novak is offline
    MemberRank
    Apr 2009 Join Date
    The NetherlandsLocation
    1,120Posts

    Re: [v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

    Quote Originally Posted by Fraysa View Post
    The mask is -1 by default for all versions. Also, "flag" is a better name. It's not in IDA simply because IDA reads it and reads the packet accordingly.

    Good luck!
    Alright yep, that makes sense. Good to know that it's always -1 :D That'll make things much easier. Thank you!

  4. #4
    I'm overrated. Fraysa is offline
    MemberRank
    Apr 2008 Join Date
    4,891Posts

    Re: [v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

    Quote Originally Posted by Novak View Post
    Alright yep, that makes sense. Good to know that it's always -1 :D That'll make things much easier. Thank you!
    No problem. If have any other questions regarding updating your server please do ask, I'm pretty bored.

  5. #5
    Omega sunnyboy is offline
    MemberRank
    Mar 2010 Join Date
    6,109Posts

    Re: [v157] addCharacterInfo Mask (warp_to_map/ setfield/ charDataDecode)

    Quote Originally Posted by Fraysa View Post
    The mask is -1 by default for all versions. Also, "flag" is a better name. It's not in IDA simply because IDA reads it and reads the packet accordingly.

    Good luck!
    if he's gonna rename it @Novak might as well name it correct, it's usFlag



Advertisement