v144.3 Character Creation Problem

Junior Spellweaver
Joined
May 3, 2007
Messages
135
Reaction score
3
I am currently using AstralMS's source for v144.3 since I can't get it to work on v144.2 I changed the server to v144.3. I am unable to create a characters for explorers, zero, and luminous. If it is, do you think you can help me find the OPCode for character creation for v144.3? Thank you in advance.



NOTE: I am able to create every other character besides any job that is created as Explorer.

"CreateChar" in CharLoginHandler.java
Code:
    public static void CreateChar(final LittleEndianAccessor slea, final MapleClient c) {        String name;
        byte gender, skin, unk;
        short subcategory;
        int face, hair, hairColor = -1, hat = -1, top, bottom = -1, shoes, weapon, cape = -1, faceMark = -1, shield = -1;
        JobType job;
        name = slea.readMapleAsciiString();
        if (!MapleCharacterUtil.canCreateChar(name, false)) {
            System.out.println("char name hack: " + name);
            return;
        }
        slea.readInt(); //-1
        int job_type = slea.readInt();
        job = JobType.getByType(job_type);
        if (job == null) {
            System.out.println("New job type found: " + job_type);
            return;
        }
        for (JobConstants.LoginJob j : JobConstants.LoginJob.values()) {
            if (j.getJobType() == job_type) {
                if (j.getFlag() != JobConstants.LoginJob.JobFlag.ENABLED.getFlag()) {
                    System.out.println("job was tried to be created while not enabled");
                    return;
                }
            }
        }
        subcategory = slea.readShort();
        gender = slea.readByte();
        skin = slea.readByte();
        unk = slea.readByte(); //6/7/8
        face = slea.readInt();
        hair = slea.readInt();
        if (job.hairColor) {
            hairColor = slea.readInt();
        }
        if (job.skinColor) {
            slea.readInt();
        }
        if (job.faceMark) {
            faceMark = slea.readInt();
        }
        if (job.hat) {
            hat = slea.readInt();
        }
        top = slea.readInt();
        if (job.bottom) {
            bottom = slea.readInt();
        }
        if (job.cape) {
            cape = slea.readInt();
        }
        shoes = slea.readInt();
        weapon = slea.readInt();
        if (slea.available() >= 4) {
            shield = slea.readInt();
        }
        int index = 0;
        boolean noSkin = job == JobType.Demon || job == JobType.Mercedes || job == JobType.Jett;
        int[] items = new int[]{face, hair, hairColor, noSkin ? -1 : skin, faceMark, hat, top, bottom, cape, shoes, weapon, shield};
        for (int i : items) {
            if (i > -1) {
                if (!LoginInformationProvider.getInstance().isEligibleItem(gender, index, job.type, i)) {
                    System.out.println(gender + " | " + index + " | " + job.type + " | " + i);
                    return;
                }
                index++;
            }
        }
        MapleCharacter newchar = MapleCharacter.getDefault(c, job);
        newchar.setWorld((byte) c.getWorld());
        newchar.setFace(face);
        newchar.setSecondFace(face);
        if (hairColor < 0) {
            hairColor = 0;
        }
        if (job != JobType.Mihile) {
            hair += hairColor;
        }
        newchar.setHair(hair);
        newchar.setSecondHair(hair);
        if (job == JobType.AngelicBuster) {
            newchar.setSecondFace(21173);
            newchar.setSecondHair(37141);
        } else if (job == JobType.Zero) {
            newchar.setSecondFace(21290);
            newchar.setSecondHair(37623);
        }
        newchar.setGender(gender);
        newchar.setName(name);
        newchar.setSkinColor(skin);
        if (faceMark < 0) {
            faceMark = 0;
        }
        newchar.setFaceMarking(faceMark);
        final MapleItemInformationProvider li = MapleItemInformationProvider.getInstance();
        final MapleInventory equip = newchar.getInventory(MapleInventoryType.EQUIPPED);
        Item item;
        //-1 Hat | -2 Face | -3 Eye acc | -4 Ear acc | -5 Topwear 
        //-6 Bottom | -7 Shoes | -9 Cape | -10 Shield | -11 Weapon
        //todo check zero's beta weapon slot
        int[][] equips = new int[][]{{hat, -1}, {top, -5}, {bottom, -6}, {cape, -9}, {shoes, -7}, {weapon, -11}, {shield, -10}};
        for (int[] i : equips) {
            if (i[0] > 0) {
                item = li.getEquipById(i[0]);
                item.setPosition((byte) i[1]);
                item.setGMLog("Character Creation");
                equip.addFromDB(item);
            }
        }
        // Additional skills for all first job classes. Some skills are not added by default,
        // so adding the skill ID here between the {}, will give the skills you entered to the desired job.
        int[][] skills = new int[][]{
            {80001152},//Resistance
            {80001152, 1281},//Explorer
            {10001244, 10000252, 80001152},//Cygnus
            {20000194},//Aran
            {20010022, 20010194},//Evan
            {20020109, 20021110, 20020111, 20020112}, //Mercedes
            {},//Demon
            {},//Phantom
            {},//Dualblade
            {50001214},//Mihile
            {20040216, 20040217, 20040218, 20040219, 20040220, 20040221, 20041222},//Luminous
            {},//Kaiser
            {60011216, 60010217, 60011218, 60011219, 60011220, 60011221, 60011222},//AngelicBuster
            {},//Cannoneer
            {30020232, 30020233, 30020234, 30020240, 30021238},//Xenon
            {100000279, 100000282, 100001262, 100001263, 100001264, 100001265, 100001266, 100001268},//Zero
            {228, 80001151},//Jett
            {},//Hayato
            {40020000, 40020001, 40020002, 40021023, 40020109}//Kanna
        };
        if (skills[job.type].length > 0) {
            final Map<Skill, SkillEntry> ss = new HashMap<>();
            Skill s;
            for (int i : skills[job.type]) {
                s = SkillFactory.getSkill(i);
                int maxLevel = s.getMaxLevel();
                if (maxLevel < 1) {
                    maxLevel = s.getMasterLevel();
                }
                ss.put(s, new SkillEntry((byte) 1, (byte) maxLevel, -1));
            }
            if (job == JobType.Zero) {
                ss.put(SkillFactory.getSkill(101000103), new SkillEntry((byte) 8, (byte) 10, -1));
                ss.put(SkillFactory.getSkill(101000203), new SkillEntry((byte) 8, (byte) 10, -1));
            }
            newchar.changeSkillLevel_Skip(ss, false);
        }
        int[][] guidebooks = new int[][]{{4161001, 0}, {4161047, 1}, {4161048, 2000}, {4161052, 2001}, {4161054, 3}, {4161079, 2002}};
        int guidebook = 0;
        for (int[] i : guidebooks) {
            if (newchar.getJob() == i[1]) {
                guidebook = i[0];
            } else if (newchar.getJob() / 1000 == i[1]) {
                guidebook = i[0];
            }
        }
        if (guidebook > 0) {
            newchar.getInventory(MapleInventoryType.ETC).addItem(new Item(guidebook, (byte) 0, (short) 1, (byte) 0));
        }
        
        if (job == JobType.Zero) {
            newchar.setLevel((short) 100);
            newchar.getStat().str = 518;
            newchar.getStat().maxhp = 6910;
            newchar.getStat().hp = 6910;
            newchar.getStat().maxmp = 100;
            newchar.getStat().mp = 100;
            newchar.setRemainingSp(3, 0); //alpha
            newchar.setRemainingSp(3, 1); //beta
        }


        if (MapleCharacterUtil.canCreateChar(name, c.isGm()) && (!LoginInformationProvider.getInstance().isForbiddenName(name) || c.isGm()) && (c.isGm() || c.canMakeCharacter(c.getWorld()))) {
            MapleCharacter.saveNewCharToDB(newchar, job, subcategory);
            c.getSession().write(LoginPacket.addNewCharEntry(newchar, true));
            c.createdChar(newchar.getId());
            //newchar.newCharRewards();
        } else {
            c.getSession().write(LoginPacket.addNewCharEntry(newchar, false));
        }
    }

RecvPacketOpcode.JAVA
Code:
package handling;

public enum RecvPacketOpcode implements WritableIntValueHolder {


    /*
     * General Oopcodes.
     * Used for general purposes.
     */
    RSA_KEY(false),
    STRANGE_DATA,
    LOGIN_REDIRECTOR(false, (short) 0x01),
    CRASH_INFO(false, (short) 0x2E),
    PONG(false, (short) 0x2F),
    /*
     * Login Opcodes.
     * Used for login packets.
     */
    GUEST_LOGIN(true, (short) 0x16),
    SERVERSTATUS_REQUEST(false, (short) 0x1D),
    TOS(true, (short) 0x1D),
    VIEW_SERVERLIST(false, (short) 0x21),
    SERVERLIST_REQUEST(false, (short) 0x22),
    REDISPLAY_SERVERLIST(true, (short) 0x23),
    CHAR_SELECT_NO_PIC(false, (short) 0x25),
    PLAYER_LOGGEDIN(false, (short) 0x27),
    CHECK_CHAR_NAME(true, (short) 0x28),
    DELETE_CHAR(true, (short) 0x2C),
    AUTH_REQUEST(false, (short) 0x30),
    CHAR_SELECT(true, (short) 0x31),
    VIEW_REGISTER_PIC(true, (short) 0x32),
    VIEW_SELECT_PIC(true, (short) 0x35),
    CLIENT_START(false, (short) 0x38),
    CLIENT_FAILED(false, (short) 0x39),
    PART_TIME_JOB(true, (short) 0x3B),
    CHARACTER_CARD(true, (short) 0x3C),
    ENABLE_LV50_CHAR(true, (short) 0x3D),
    CREATE_LV50_CHAR(true, (short) 0x3E),
    ENABLE_SPECIAL_CREATION(true, (short) 0x3E),
    CLIENT_HELLO(false, (short) 0x3F),
    LOGIN_PASSWORD(false, (short) 0x40),
    CREATE_SPECIAL_CHAR(true, (short) 0x41),
    CHARLIST_REQUEST(false, (short) 0x43),
    CREATE_CHAR(false, (short) 0x45),
    CREATE_ULTIMATE(false, (short) 0x999),//46
    AUTH_SECOND_PASSWORD(true, (short) 0x47),
    CLIENT_ERROR(false, (short) 0x4A),
    /*
     * Channel Opcodes.
     * Used for in-game packets.
     */
    CHANGE_MAP(true, (short) 0x51),
    CHANGE_CHANNEL(true, (short) 0x52),
    ENTER_CASH_SHOP(true, (short) 0x54),
    ENTER_FARM(true, (short) 0x57),
    ENTER_AZWAN(true, (short) 0x4D),
    ENTER_AZWAN_EVENT(true, (short) 0x4A),
    LEAVE_AZWAN(true, (short) 0x4B),
    ENTER_PVP(true, (short) 0x50),
    ENTER_PVP_PARTY(true, (short) 0x50),
    LEAVE_PVP(true, (short) 0x999),
    MOVE_PLAYER(true, (short) 0x5E),
    CANCEL_CHAIR(true, (short) 0x60),
    USE_CHAIR(true, (short) 0x61),
    CLOSE_RANGE_ATTACK(true, (short) 0x62),
    RANGED_ATTACK(true, (short) 0x63),
    MAGIC_ATTACK(true, (short) 0x64),
    PASSIVE_ENERGY(true, (short) 0x65),
    TAKE_DAMAGE(true, (short) 0x68),
    PVP_ATTACK(true, (short) 0x69),
    GENERAL_CHAT(true, (short) 0x6A),
    CLOSE_CHALKBOARD(true, (short) 0x6B),
    FACE_EXPRESSION(true, (short) 0x6C),
    FACE_ANDROID(true, (short) 0x6D),
    USE_ITEMEFFECT(true, (short) 0x6E),
    WHEEL_OF_FORTUNE(true, (short) 0x6F),
    USE_TITLE(true, (short) 0x71),//70
    ANGELIC_CHANGE(true, (short) 0x72),//71
    CHANGE_CODEX_SET(true, (short) 0x7A),//79
    CODEX_UNK(true, (short) 0x7B),
    MONSTER_BOOK_DROPS(true, (short) 0x7D),//7C
    NPC_TALK(true, (short) 0x7F),//7E
    NPC_TALK_MORE(true, (short) 0x81),//80
    NPC_SHOP(true, (short) 0x82),//81
    STORAGE(true, (short) 0x84),//83
    USE_HIRED_MERCHANT(true, (short) 0x85),//84
    MERCH_ITEM_STORE(true, (short) 0x86),//85
    PACKAGE_OPERATION(true, (short) 0x7F),//87
    MECH_CANCEL(true, (short) 0x88),//87
    OWL(true, (short) 0x8C),//8A
    OWL_WARP(true, (short) 0x8D),//8A
    ITEM_SORT(true, (short) 0x92),//90
    ITEM_GATHER(true, (short) 0x93),//91
    ITEM_MOVE(true, (short) 0x94),//92
    MOVE_BAG(true, (short) 0x95),//93
    SWITCH_BAG(true, (short) 0x96),//94
    USE_ITEM(true, (short) 0x98),//96
    CANCEL_ITEM_EFFECT(true, (short) 0x99),//97
    USE_SUMMON_BAG(true, (short) 0x9B),//99
    PET_FOOD(true, (short) 0x9C),//9A
    USE_MOUNT_FOOD(true, (short) 0x9D),//9B
    USE_SCRIPTED_NPC_ITEM(true, (short) 0x9E),//9C
    USE_RECIPE(true, (short) 0x9F),//9D
    USE_NEBULITE(true, (short) 0xA0),//9E
    USE_ALIEN_SOCKET(true, (short) 0xA1),//9F
    USE_ALIEN_SOCKET_RESPONSE(true, (short) 0xA2),//A0
    USE_NEBULITE_FUSION(true, (short) 0xA3),//A1
    USE_CASH_ITEM(true, (short) 0xA4),//A2
    USE_CATCH_ITEM(true, (short) 0xA6),//A4
    USE_SKILL_BOOK(true, (short) 0xAB),//A9
    USE_EXP_POTION(true, (short) 0xAC),//A8
    TOT_GUIDE(true, (short) 0xB5),
    USE_OWL_MINERVA(true, (short) 0xBC),//BA
    USE_TELE_ROCK(true, (short) 0xBD),//BB
    USE_RETURN_SCROLL(true, (short) 0xBE),//BC
    USE_UPGRADE_SCROLL(true, (short) 0xBF),//BD
    USE_FLAG_SCROLL(true, (short) 0xC0),//BE
    USE_EQUIP_SCROLL(true, (short) 0xC1),//BF
    USE_POTENTIAL_SCROLL(true, (short) 0xC6),//C3
    USE_ABYSS_SCROLL(true, (short) 0xC7),//C4
    USE_CARVED_SEAL(true, (short) 0xC8),//C5
    USE_BAG(true, (short) 0xC9),
    USE_CRAFTED_CUBE(true, (short) 0xCA),
    USE_MAGNIFY_GLASS(true, (short) 0xCD),//CA
    DISTRIBUTE_AP(true, (short) 0xD0),//CD
    AUTO_ASSIGN_AP(true, (short) 0xD1),//CE
    HEAL_OVER_TIME(true, (short) 0xD2),//CF
    DISTRIBUTE_SP(true, (short) 0xD5),//D2
    SPECIAL_MOVE(true, (short) 0xD6),//D3
    CANCEL_BUFF(true, (short) 0xD7),//D4
    SKILL_EFFECT(true, (short) 0xD8),//D5
    MESO_DROP(true, (short) 0xD9),//D6
    GIVE_FAME(true, (short) 0xDA),//D7
    CHAR_INFO_REQUEST(true, (short) 0xDC),//D9
    SPAWN_PET(true, (short) 0xDD),//DA
    GET_BOOK_INFO(true, (short) 0xDF),//DC
    USE_FAMILIAR(true, (short) 0xE0),//DD
    SPAWN_FAMILIAR(true, (short) 0xE1),//DE
    RENAME_FAMILIAR(true, (short) 0xE2),//DF
    PET_BUFF(true, (short) 0xE3),//E0
    CANCEL_DEBUFF(true, (short) 0xE4),//E1
    CHANGE_MAP_SPECIAL(true, (short) 0xE5),//e2
    USE_INNER_PORTAL(true, (short) 0xE6),//E3
    TROCK_ADD_MAP(true, (short) 0xE7),//e4
    LIE_DETECTOR(true, (short) 0xE8),//E5
    LIE_DETECTOR_SKILL(true, (short) 0xE9),//E6
    LIE_DETECTOR_RESPONSE(true, (short) 0xEA),//E7
    REPORT(true, (short) 0xEC),//E9
    QUEST_ACTION(true, (short) 0xED),//EA
    REISSUE_MEDAL(true, (short) 0xEE),//EB
//    BUFF_RESPONSE(true, (short) 0xEF),//EC
    SKILL_MACRO(true, (short) 0xF3),//F0
    REWARD_ITEM(true, (short) 0xF5),//F2
    ITEM_MAKER(true, (short) 0x999),
    REPAIR_ALL(true, (short) 0xFE),//C7
    REPAIR(true, (short) 0xFF),//C8
    SOLOMON(true, (short) 0xC9),
    GACH_EXP(true, (short) 0xCA),
    FOLLOW_REQUEST(true, (short) 0xFD),
    PQ_REWARD(true, (short) 0xFE),
    FOLLOW_REPLY(true, (short) 0x101),
    AUTO_FOLLOW_REPLY(true, (short) 0x999),
    USE_TREASURE_CHEST(true, (short) 0x999),
    PROFESSION_INFO(true, (short) 0x102),
    USE_POT(true, (short) 0x999),//D6
    CLEAR_POT(true, (short) 0xD7),
    FEED_POT(true, (short) 0xD8),
    CURE_POT(true, (short) 0xD9),
    REWARD_POT(true, (short) 0xDA),
    AZWAN_REVIVE(true, (short) 0xDB),
    USE_COSMETIC(true, (short) 0x999),
    INNER_CIRCULATOR(true, (short) 0xDF),
    PVP_RESPAWN(true, (short) 0xE0),
    GAIN_FORCE(true, (short) 0xE1),
    ADMIN_CHAT(true, (short) 0x126),//119
    PARTYCHAT(true, (short) 0x127),//120
    COMMAND(true, (short) 0x129),//121
    SPOUSE_CHAT(true, (short) 0x12A),//122
    MESSENGER(true, (short) 0x12B),//123
    PLAYER_INTERACTION(true, (short) 0x12C),//124
    PARTY_OPERATION(true, (short) 0x12D),//125
    DENY_PARTY_REQUEST(true, (short) 0x12E),//126
    ALLOW_PARTY_INVITE(true, (short) 0x12F),//127
    EXPEDITION_OPERATION(true, (short) 0x130),//128
    EXPEDITION_LISTING(true, (short) 0x131),//129
    GUILD_OPERATION(true, (short) 0x132),//12A
    DENY_GUILD_REQUEST(true, (short) 0x133),//12B
    ADMIN_COMMAND(true, (short) 0x134),//12C
    ADMIN_LOG(true, (short) 0x135),//12D
    BUDDYLIST_MODIFY(true, (short) 0x137), //12E
    NOTE_ACTION(true, (short) 0x999),//127
    USE_DOOR(true, (short) 0x13A),//131
    USE_MECH_DOOR(true, (short) 0x13B),//132
    CHANGE_KEYMAP(true, (short) 0x13D), //134
    RPS_GAME(true, (short) 0x135),
    RING_ACTION(true, (short) 0x136),
    WEDDING_ACTION(true, (short) 0x137),
    ALLIANCE_OPERATION(true, (short) 0x13B),
    DENY_ALLIANCE_REQUEST(true, (short) 0x13C),
    REQUEST_FAMILY(true, (short) 0x999),//13D
    OPEN_FAMILY(true, (short) 0x13E),//13E
    FAMILY_OPERATION(true, (short) 0x13F),
    DELETE_JUNIOR(true, (short) 0x140),
    DELETE_SENIOR(true, (short) 0x141),
    ACCEPT_FAMILY(true, (short) 0x142),
    USE_FAMILY(true, (short) 0x143),
    FAMILY_PRECEPT(true, (short) 0x144),
    FAMILY_SUMMON(true, (short) 0x145),
    BBS_OPERATION(true, (short) 0x150),//10B
    SOLOMON_EXP(true, (short) 0x151),//10C
    NEW_YEAR_CARD(true, (short) 0x11E),
    XMAS_SURPRISE(true, (short) 0x111),
    TWIN_DRAGON_EGG(true, (short) 0x112),
    ARAN_COMBO(true, (short) 0x15E),//0x152
    TRANSFORM_PLAYER(true, (short) 0x999),
    CYGNUS_SUMMON(true, (short) 0x999),
    CRAFT_DONE(true, (short) 0x162),//157
    CRAFT_EFFECT(true, (short) 0x163),//158
    CRAFT_MAKE(true, (short) 0x164),//159
    CHANGE_ROOM_CHANNEL(true, (short) 0x169),//15D
    EVENT_CARD(true, (short) 0x15E),
    CHOOSE_SKILL(true, (short) 0x15F),
    SKILL_SWIPE(true, (short) 0x160),
    VIEW_SKILLS(true, (short) 0x999),//161
    CANCEL_OUT_SWIPE(true, (short) 0x162),
    YOUR_INFORMATION(true, (short) 0x163),
    FIND_FRIEND(true, (short) 0x164),
    PINKBEAN_CHOCO_OPEN(true, (short) 0x165),
    PINKBEAN_CHOCO_SUMMON(true, (short) 0x166),
    BUY_SILENT_CRUSADE(true, (short) 0x127),
    BUDDY_ADD(true, (short) 0x1A2),
    MOVE_PET(true, (short) 0x1B8),//1A8
    PET_CHAT(true, (short) 0x1B9),//1A9
    PET_COMMAND(true, (short) 0x1BA),//1AA
    PET_LOOT(true, (short) 0x1BB),//1AB
    PET_AUTO_POT(true, (short) 0x1BC),//1AC
    PET_IGNORE(true, (short) 0x1BD),//1AD
    MOVE_HAKU(true, (short) 0x1C1),//1B1
    CHANGE_HAKU(true, (short) 0x1C2),//1B2
    //HAKU_1D8(true, (short) 0x1D8),//test
    //HAKU_1D9(true, (short) 0x1D9),//test
    MOVE_SUMMON(true, (short) 0x1C8),//1b8
    SUMMON_ATTACK(true, (short) 0x1C9),//1B9
    DAMAGE_SUMMON(true, (short) 0x1CA),//1BA
    SUB_SUMMON(true, (short) 0x1CB),//1BB
    REMOVE_SUMMON(true, (short) 0x1CC),//1BC
    PVP_SUMMON(true, (short) 0x1CE),//1BE
    MOVE_DRAGON(true, (short) 0x1CF),//1C0
    USE_ITEM_QUEST(true, (short) 0x1D2),//1C4
    MOVE_ANDROID(true, (short) 0x1D3),//1C5
    UPDATE_QUEST(true, (short) 0x1D5),//1C7//+16
    QUEST_ITEM(true, (short) 0x1D6),//1C8
    MOVE_FAMILIAR(true, (short) 0x1DC),//1CC
    TOUCH_FAMILIAR(true, (short) 0x1DD),//1CD
    ATTACK_FAMILIAR(true, (short) 0x1DE),//1CE
    REVEAL_FAMILIAR(true, (short) 0x1DF),//1CF
    QUICK_SLOT(true, (short) 0x1D0),
    PAM_SONG(true, (short) 0x1D8),
    MOVE_LIFE(true, (short) 0x208),//1EC
    AUTO_AGGRO(true, (short) 0x1EE),
    FRIENDLY_DAMAGE(true, (short) 0x999),//1ef
    MONSTER_BOMB(true, (short) 0x1F0),
    HYPNOTIZE_DMG(true, (short) 0x1F1),
    MOB_BOMB(true, (short) 0x1F5),
    MOB_NODE(true, (short) 0x1F6),
    DISPLAY_NODE(true, (short) 0x1F7),
    MONSTER_CARNIVAL(true, (short) 0x1F8),
    NPC_ACTION(true, (short) 0x222),//203
    ITEM_PICKUP(true, (short) 0x227),//208
    DAMAGE_REACTOR(true, (short) 0x22A),//20B
    TOUCH_REACTOR(true, (short) 0x22B),//20C
    CLICK_REACTOR(true, (short) 0x22C),//20D
    MAKE_EXTRACTOR(true, (short) 0x22F),//210
    UPDATE_ENV(true, (short) 0x17E),
    SNOWBALL(true, (short) 0x182),
    LEFT_KNOCK_BACK(true, (short) 0x183),
    CANDY_RANKING(true, (short) 0x185),//
    COCONUT(true, (short) 0x186),
    SHIP_OBJECT(true, (short) 0x999),
    PARTY_SEARCH_START(true, (short) 0x197),
    PARTY_SEARCH_STOP(true, (short) 0x198),
    START_HARVEST(true, (short) 0x24E),//22F
    STOP_HARVEST(true, (short) 0x24F),//230
    QUICK_MOVE(true, (short) 0x19E),
    CS_UPDATE(true, (short) 0x28A),//257
    BUY_CS_ITEM(true, (short) 0x28B),//258
    COUPON_CODE(true, (short) 0x28C),//259
    CASH_CATEGORY(true, (short) 0x291),//25D
    PLACE_FARM_OBJECT(false, (short) 0x278),
    FARM_SHOP_BUY(false, (short) 0x27D),
    FARM_COMPLETE_QUEST(false, (short) 0x281),
    FARM_NAME(false, (short) 0x282),
    HARVEST_FARM_BUILDING(false, (short) 0x283),
    USE_FARM_ITEM(false, (short) 0x284),
    RENAME_MONSTER(false, (short) 0x294),
    NURTURE_MONSTER(false, (short) 0x295),
    EXIT_FARM(false, (short) 0x299),
    FARM_QUEST_CHECK(false, (short) 0x29D),
    FARM_FIRST_ENTRY(false, (short) 0x2A8),
    GOLDEN_HAMMER(true, (short) 0x2A4),//1BB
    VICIOUS_HAMMER(true, (short) 0x1BD),
    PYRAMID_BUY_ITEM(true, (short) 0x999),
    CLASS_COMPETITION(true, (short) 0x999),
    MAGIC_WHEEL(true, (short) 0x2EB),
    REWARD(true, (short) 0x2EC),
    BLACK_FRIDAY(true, (short) 0x2BE),
    UPDATE_RED_LEAF(true, (short) 0x29C),
    //Not Placed:
    SPECIAL_STAT(false, (short) 0x10C),//107
    UPDATE_HYPER(true, (short) 0x171),//
    RESET_HYPER(true, (short) 0x172),//
    DRESSUP_TIME(true, (short) 0x17F),
    DF_COMBO(true, (short) 0x10F),
    BUTTON_PRESSED(true, (short) 0x1E3),//1D3
    OS_INFORMATION(true, (short) 0x1E6),//1D6
    LUCKY_LOGOUT(true, (short) 0x2B6),
    MESSENGER_RANKING(true, (short) 0x1DD);
    private short code = -2;


    @[I][B][URL="http://forum.ragezone.com/members/2000004426.html"]Override[/URL][/B][/I]
    public void setValue(short code) {
        this.code = code;
    }


    @[I][B][URL="http://forum.ragezone.com/members/2000004426.html"]Override[/URL][/B][/I]
    public final short getValue() {
        return code;
    }
    private final boolean CheckState;


    private RecvPacketOpcode() {
        this.CheckState = true;
    }


    private RecvPacketOpcode(final boolean CheckState) {
        this.CheckState = CheckState;
    }


    private RecvPacketOpcode(final boolean CheckState, short code) {
        this.CheckState = CheckState;
        this.code = code;
    }


    public final boolean NeedsChecking() {
        return CheckState;
    }


    public static String nameOf(short value) {
        for (RecvPacketOpcode header : RecvPacketOpcode.values()) {
            if (header.getValue() == value) {
                return header.name();
            }
        }
        return "UNKNOWN";
    }
}

Comparison between Jett Creation and Adventurer Creation Screenshot
(Second last being Jett, Last being Adventurer)
lawrence8529 - v144.3 Character Creation Problem - RaGEZONE Forums

Red = Jett
Teal = Explorer

LOG_PACKET_EXCEPT
Code:
------------------------ 2014-10-31 22:25:47 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:25:47 ------------------------
Packet: 39
All: 27 00 00 00 00 00 9A 00 00 00 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:25:54 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:25:54 ------------------------
Packet: 39
All: 27 00 00 00 00 00 9B 00 00 00 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:26:39 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:26:39 ------------------------
Packet: 39
All: 27 00 00 00 00 00 83 00 00 00 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:27:09 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:27:09 ------------------------
Packet: 39
All: 27 00 00 00 00 00 9B 00 00 00 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:27:18 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:27:18 ------------------------
Packet: 39
All: 27 00 00 00 00 00 83 00 00 00 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 71 21 3C 00 00 00 00 00 4A CA 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:28:11 ------------------------
java.lang.NullPointerException
    at client.MapleCharacter.sendDestroyData(MapleCharacter.java:5313)
    at server.maps.MapleMap.updateMapObjectVisibility(MapleMap.java:3087)
    at server.maps.MapleMap.movePlayer(MapleMap.java:3119)
    at handling.channel.handler.PlayerHandler.MovePlayer(PlayerHandler.java:1721)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:714)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:28:11 ------------------------
Packet: 94
All: 5E 00 08 9D A8 EB C8 D0 3D 7F 0B 00 00 00 00 00 73 FF 23 00 DD 00 00 00 02 00 A6 FF 23 00 DD 00 00 00 04 00 00 00 00 00 02 E6 00 00 E4 FF 23 00 DD 00 00 00 01 00 00 00 00 00 02 18 01 11 44 44 44 44 44 44 44 44 04 73 FF 23 00 E4 FF 23 00
Now: 11 44 44 44 44 44 44 44 44 04 73 FF 23 00 E4 FF 23 00
------------------------ 2014-10-31 22:28:12 ------------------------
java.lang.NullPointerException
    at handling.channel.handler.InterServerHandler.Loggedin(InterServerHandler.java:320)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:645)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:28:12 ------------------------
Packet: 39
All: 27 00 00 00 00 00 9B 00 00 00 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
Now: 00 00 00 00 00 00 F2 85 F7 76 00 00 00 00 6D 64 00 00 00 00 00 00 00 00 00 00
------------------------ 2014-10-31 22:28:46 ------------------------
java.lang.NullPointerException
    at client.MapleCharacter.sendDestroyData(MapleCharacter.java:5313)
    at server.maps.MapleMap.updateMapObjectVisibility(MapleMap.java:3087)
    at server.maps.MapleMap.movePlayer(MapleMap.java:3119)
    at handling.channel.handler.PlayerHandler.MovePlayer(PlayerHandler.java:1721)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:714)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:28:46 ------------------------
Packet: 94
All: 5E 00 08 D0 EB 54 72 F4 AF 7F 0B 00 00 00 00 00 99 09 4E 01 DD 00 00 00 05 00 99 09 4D 01 DD 00 00 00 73 00 00 00 00 00 02 00 00 00 99 09 4D 01 DD 00 00 00 00 00 00 00 00 00 06 00 00 01 DD 00 56 FD 06 00 00 00 E1 09 D8 00 DD 00 EA FF 00 00 00 00 00 00 06 4A 01 00 0A 0A F5 00 DD 00 51 01 00 00 00 00 00 00 06 B4 00 11 44 44 44 44 44 44 44 44 04 99 09 D8 00 0A 0A 4E 01
Now: 11 44 44 44 44 44 44 44 44 04 99 09 D8 00 0A 0A 4E 01
------------------------ 2014-10-31 22:28:47 ------------------------
java.lang.NullPointerException
    at client.MapleCharacter.sendDestroyData(MapleCharacter.java:5313)
    at server.maps.MapleMap.updateMapObjectVisibility(MapleMap.java:3087)
    at server.maps.MapleMap.movePlayer(MapleMap.java:3119)
    at handling.channel.handler.PlayerHandler.MovePlayer(PlayerHandler.java:1721)
    at handling.MapleServerHandler.handlePacket(MapleServerHandler.java:714)
    at handling.MapleServerHandler.messageReceived(MapleServerHandler.java:464)
    at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:570)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:58)
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:180)
    at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
    at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
    at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
    at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
    at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
    at java.lang.Thread.run(Unknown Source)


------------------------ 2014-10-31 22:28:47 ------------------------
Packet: 94
All: 5E 00 08 D0 EB 54 72 DC 22 65 07 00 00 00 00 00 B0 06 4E 01 96 00 00 00 01 00 FD 06 4E 01 96 00 00 00 5E 00 00 00 00 00 02 FE 01 11 44 44 44 44 44 44 44 44 04 B0 06 4E 01 FD 06 4E 01
Now: 11 44 44 44 44 44 44 44 44 04 B0 06 4E 01 FD 06 4E 01

InterServerHandler.java
Code:
/* This file is part of the OdinMS Maple Story Server
 Copyright (C) 2008 ~ 2010 Patrick Huy <[email protected]> 
 Matthias Butz <[email protected]>
 Jan Christian Meyer <[email protected]>


 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU Affero General Public License version 3
 as published by the Free Software Foundation. You may not use, modify
 or distribute this program under any other version of the
 GNU Affero General Public License.


 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Affero General Public License for more details.


 You should have received a copy of the GNU Affero General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package handling.channel.handler;


import client.MapleCharacter;
import client.MapleClient;
import client.MapleQuestStatus;
import client.SkillFactory;
import client.inventory.Equip;
import client.inventory.Item;
import client.inventory.MapleInventory;
import client.inventory.MapleInventoryType;
import client.inventory.MapleWeaponType;
import constants.GameConstants;
import handling.cashshop.CashShopServer;
import handling.cashshop.handler.CashShopOperation;
import handling.channel.ChannelServer;
import handling.farm.FarmServer;
import handling.farm.handler.FarmOperation;
import handling.login.LoginServer;
import handling.world.*;
import handling.world.exped.MapleExpedition;
import handling.world.guild.*;
import java.util.ArrayList;
import java.util.List;
import scripting.NPCScriptManager;
import server.*;
import server.maps.FieldLimitType;
import server.maps.MapleMap;
import server.quest.*;
import tools.FileoutputUtil;
import tools.Triple;
import tools.data.LittleEndianAccessor;
import tools.packet.CField;
import tools.packet.CWvsContext;
import tools.packet.CWvsContext.BuddylistPacket;
import tools.packet.CWvsContext.GuildPacket;
import tools.packet.CSPacket;
import tools.packet.FarmPacket;
import tools.packet.JobPacket.AvengerPacket;


public class InterServerHandler {


    public static void EnterCS(final MapleClient c, final MapleCharacter chr) {
        if (chr.hasBlockedInventory() || chr.getMap() == null || chr.getEventInstance() != null || c.getChannelServer() == null) {
            c.getSession().write(CField.serverBlocked(2));
            CharacterTransfer farmtransfer = FarmServer.getPlayerStorage().getPendingCharacter(chr.getId());
            if (farmtransfer != null) {
                c.getSession().write(FarmPacket.farmMessage("You cannot move into Cash Shop while visiting your farm, yet."));
            }
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        if (World.getPendingCharacterSize() >= 10) {
            chr.dropMessage(1, "The server is busy at the moment. Please try again in a minute or less.");
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        ChannelServer ch = ChannelServer.getInstance(c.getChannel());
        chr.changeRemoval();
        if (chr.getMessenger() != null) {
            MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(chr);
            World.Messenger.leaveMessenger(chr.getMessenger().getId(), messengerplayer);
        }
        PlayerBuffStorage.addBuffsToStorage(chr.getId(), chr.getAllBuffs());
        PlayerBuffStorage.addCooldownsToStorage(chr.getId(), chr.getCooldowns());
        PlayerBuffStorage.addDiseaseToStorage(chr.getId(), chr.getAllDiseases());
        World.ChannelChange_Data(new CharacterTransfer(chr), chr.getId(), -10);
        ch.removePlayer(chr);
        c.updateLoginState(3, c.getSessionIPAddress());
        chr.saveToDB(false, false);
        chr.getMap().removePlayer(chr);
        c.getSession().write(CField.getChannelChange(c, Integer.parseInt(CashShopServer.getIP().split(":")[1])));
        c.setPlayer(null);
        c.setReceiving(false);
    }


    public static void EnterFarm(final MapleClient c, final MapleCharacter chr) {
        if (chr.hasBlockedInventory() || chr.getMap() == null || chr.getEventInstance() != null || c.getChannelServer() == null) {
            c.getSession().write(CField.serverBlocked(2));
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        if (World.getPendingCharacterSize() >= 10) {
            chr.dropMessage(1, "The server is busy at the moment. Please try again in a minute or less.");
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        ChannelServer ch = ChannelServer.getInstance(c.getChannel());
        chr.changeRemoval();
        if (chr.getMessenger() != null) {
            MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(chr);
            World.Messenger.leaveMessenger(chr.getMessenger().getId(), messengerplayer);
        }
        PlayerBuffStorage.addBuffsToStorage(chr.getId(), chr.getAllBuffs());
        PlayerBuffStorage.addCooldownsToStorage(chr.getId(), chr.getCooldowns());
        PlayerBuffStorage.addDiseaseToStorage(chr.getId(), chr.getAllDiseases());
        World.ChannelChange_Data(new CharacterTransfer(chr), chr.getId(), -30);
        ch.removePlayer(chr);
        c.updateLoginState(3, c.getSessionIPAddress());
        chr.saveToDB(false, false);
        chr.getMap().removePlayer(chr);
        c.getSession().write(CField.getChannelChange(c, Integer.parseInt(FarmServer.getIP().split(":")[1])));
        c.setPlayer(null);
        c.setReceiving(false);
    }


    public static void Loggedin(final int playerid, final MapleClient c) {
        try {
        MapleCharacter player;
        CharacterTransfer transfer = CashShopServer.getPlayerStorage().getPendingCharacter(playerid);
        if (transfer != null) {
//            c.getSession().write(CWvsContext.BuffPacket.cancelBuff());
            CashShopOperation.EnterCS(transfer, c);
            return;
        }
        CharacterTransfer farmtransfer = FarmServer.getPlayerStorage().getPendingCharacter(playerid);
        if (farmtransfer != null) {
            FarmOperation.EnterFarm(farmtransfer, c);
            return;
        }
        for (ChannelServer cserv : ChannelServer.getAllInstances()) {
            transfer = cserv.getPlayerStorage().getPendingCharacter(playerid);
            if (transfer != null) {
                c.setChannel(cserv.getChannel());
                break;
            }
        }


        if (transfer == null) { // Player isn't in storage, probably isn't CC
            Triple<String, String, Integer> ip = LoginServer.getLoginAuth(playerid);
            String s = c.getSessionIPAddress();
            if (ip == null || !s.substring(s.indexOf('/') + 1, s.length()).equals(ip.left)) {
                if (ip != null) {
                    LoginServer.putLoginAuth(playerid, ip.left, ip.mid, ip.right);
                }
                c.getSession().close();
                return;
            }
            c.setTempIP(ip.mid);
            c.setChannel(ip.right);
            player = MapleCharacter.loadCharFromDB(playerid, c, true);
        } else {
            player = MapleCharacter.ReconstructChr(transfer, c, true);
        }
        final ChannelServer channelServer = c.getChannelServer();
        c.setPlayer(player);
        c.setAccID(player.getAccountID());


        if (!c.CheckIPAddress()) { // Remote hack
            c.getSession().close();
            return;
        }
        final int state = c.getLoginState();
        boolean allowLogin = false;
        if (state == MapleClient.LOGIN_SERVER_TRANSITION || state == MapleClient.CHANGE_CHANNEL || state == MapleClient.LOGIN_NOTLOGGEDIN) {
            allowLogin = !World.isCharacterListConnected(c.loadCharacterNames(c.getWorld()));
        }
        if (!allowLogin) {
            c.setPlayer(null);
            c.getSession().close();
            return;
        }
        c.updateLoginState(MapleClient.LOGIN_LOGGEDIN, c.getSessionIPAddress());
        channelServer.addPlayer(player);


        player.giveCoolDowns(PlayerBuffStorage.getCooldownsFromStorage(player.getId()));
        player.silentGiveBuffs(PlayerBuffStorage.getBuffsFromStorage(player.getId()));
        player.giveSilentDebuff(PlayerBuffStorage.getDiseaseFromStorage(player.getId()));


        c.getSession().write(CWvsContext.updateCrowns(new int[]{-1, -1, -1, -1, -1}));
        c.getSession().write(CField.getCharInfo(player));
        PlayersHandler.calcHyperSkillPointCount(c);
        c.getSession().write(CSPacket.enableCSUse());
        c.getSession().write(CWvsContext.updateSkills(c.getPlayer().getSkills(), false));//skill to 0 "fix"


        player.getMap().addPlayer(player);
        try {
            // Start of buddylist
            final int buddyIds[] = player.getBuddylist().getBuddyIds();
            World.Buddy.loggedOn(player.getName(), player.getId(), c.getChannel(), buddyIds);
            if (player.getParty() != null) {
                final MapleParty party = player.getParty();
                World.Party.updateParty(party.getId(), PartyOperation.LOG_ONOFF, new MaplePartyCharacter(player));


                if (party != null && party.getExpeditionId() > 0) {
                    final MapleExpedition me = World.Party.getExped(party.getExpeditionId());
                    if (me != null) {
                        c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(me, false, true));
                    }
                }
            }
            final CharacterIdChannelPair[] onlineBuddies = World.Find.multiBuddyFind(player.getId(), buddyIds);
            for (CharacterIdChannelPair onlineBuddy : onlineBuddies) {
                player.getBuddylist().get(onlineBuddy.getCharacterId()).setChannel(onlineBuddy.getChannel());
            }
            c.getSession().write(BuddylistPacket.updateBuddylist(player.getBuddylist().getBuddies()));


            // Start of Messenger
            final MapleMessenger messenger = player.getMessenger();
            if (messenger != null) {
                World.Messenger.silentJoinMessenger(messenger.getId(), new MapleMessengerCharacter(c.getPlayer()));
                World.Messenger.updateMessenger(messenger.getId(), c.getPlayer().getName(), c.getChannel());
            }


            // Start of Guild and alliance
            if (player.getGuildId() > 0) {
                World.Guild.setGuildMemberOnline(player.getMGC(), true, c.getChannel());
                c.getSession().write(GuildPacket.showGuildInfo(player));
                final MapleGuild gs = World.Guild.getGuild(player.getGuildId());
                if (gs != null) {
                    final List<byte[]> packetList = World.Alliance.getAllianceInfo(gs.getAllianceId(), true);
                    if (packetList != null) {
                        for (byte[] pack : packetList) {
                            if (pack != null) {
                                c.getSession().write(pack);
                            }
                        }
                    }
                } else { //guild not found, change guild id
                    player.setGuildId(0);
                    player.setGuildRank((byte) 5);
                    player.setAllianceRank((byte) 5);
                    player.saveGuildStatus();
                }
            }
            if (player.getFamilyId() > 0) {
                World.Family.setFamilyMemberOnline(player.getMFC(), true, c.getChannel());
            }
            //c.getSession().write(FamilyPacket.getFamilyData());
            //c.getSession().write(FamilyPacket.getFamilyInfo(player));
        } catch (Exception e) {
            FileoutputUtil.outputFileError(FileoutputUtil.Login_Error, e);
        }
        player.getClient().getSession().write(CWvsContext.broadcastMsg(channelServer.getServerMessage()));
        player.sendMacros();
        player.showNote();
        player.sendImp();
        player.updatePartyMemberHP();
        player.startFairySchedule(false);
        player.baseSkills(); //fix people who've lost skills.
        if (GameConstants.isZero(player.getJob())) {
            c.getSession().write(CWvsContext.updateSkills(player.getSkills(), false));
        }
        c.getSession().write(CField.getKeymap(player.getKeyLayout()));
        player.updatePetAuto();
        player.expirationTask(true, transfer == null);
        c.getSession().write(CWvsContext.updateMaplePoint(player.getCSPoints(2)));
        if (player.getJob() == 132) { // DARKKNIGHT
            player.checkBerserk();
        }
        if (GameConstants.isXenon(player.getJob())) {
            player.startXenonSupply();
        }
        if (GameConstants.isDemonAvenger(player.getJob())) {
            c.getSession().write(AvengerPacket.giveAvengerHpBuff(player.getStat().getHp()));
        }
        player.spawnClones();
        player.spawnSavedPets();
        if (player.getStat().equippedSummon > 0) {
            SkillFactory.getSkill(player.getStat().equippedSummon + (GameConstants.getBeginnerJob(player.getJob()) * 1000)).getEffect(1).applyTo(player);
        }
        MapleQuestStatus stat = player.getQuestNoAdd(MapleQuest.getInstance(GameConstants.PENDANT_SLOT));
        c.getSession().write(CWvsContext.pendantSlot(stat != null && stat.getCustomData() != null && Long.parseLong(stat.getCustomData()) > System.currentTimeMillis()));
        stat = player.getQuestNoAdd(MapleQuest.getInstance(GameConstants.QUICK_SLOT));
        c.getSession().write(CField.quickSlot(stat != null && stat.getCustomData() != null ? stat.getCustomData() : null));
        // c.getSession().write(CWvsContext.getFamiliarInfo(player));
        MapleInventory equipped = player.getInventory(MapleInventoryType.EQUIPPED);
        MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
        List<Short> slots = new ArrayList<>();
        for (Item item : equipped.newList()) {
            slots.add(item.getPosition());
        }
        for (short slot : slots) {
            if (GameConstants.isIllegalItem(equipped.getItem(slot).getItemId())) {
                MapleInventoryManipulator.removeFromSlot(player.getClient(), MapleInventoryType.EQUIPPED, slot, (short) 1, false);
            }
        }
        //c.getSession().write(CWvsContext.shopDiscount(ServerConstants.SHOP_DISCOUNT));
        //List<Pair<Integer, String>> npcs = new ArrayList<>();
        //npcs.add(new Pair<>(9070006, "Why...why has this happened to me? My knightly honor... My knightly pride..."));
        //npcs.add(new Pair<>(9000021, "Are you enjoying the event?"));
        //c.getSession().write(NPCPacket.setNpcScriptable(npcs));
        //c.getSession().write(NPCPacket.setNPCScriptable());
        player.updateReward();
        //        player.setDeathCount(99);
        //        c.getSession().write(CField.EffectPacket.updateDeathCount(99)); //for fun
        player.getClient().getSession().write(CWvsContext.broadcastMsg(channelServer.getServerMessage()));
        Thread.sleep(3100);
                if (c.getPlayer().getLevel() < 11) { 
        NPCScriptManager.getInstance().start(c, 9000108, "LoginTot");
        } else if (c.getPlayer().getLevel() > 10) { 
        NPCScriptManager.getInstance().start(c, 9000108, "LoginRed");
        }
  
        if (!GameConstants.isZero(player.getJob())) { //tell all players 2 login so u can remove this from ther
            Equip a = (Equip) player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11);
            if (GameConstants.getWeaponType(a.getItemId()) == MapleWeaponType.LONG_SWORD) {
                player.getInventory(MapleInventoryType.EQUIPPED).removeItem((short) -11);
            }
            Equip b = (Equip) player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -10);
            if (GameConstants.getWeaponType(b.getItemId()) == MapleWeaponType.BIG_SWORD) {
                player.getInventory(MapleInventoryType.EQUIPPED).removeItem((short) -10);
            }
        }
        } catch (InterruptedException e) {
        }
   }
    
    public static final void ChangeChannel(final LittleEndianAccessor slea, final MapleClient c, final MapleCharacter chr, final boolean room) {
        if (chr == null || chr.hasBlockedInventory() || chr.getEventInstance() != null || chr.getMap() == null || chr.isInBlockedMap() || FieldLimitType.ChannelSwitch.check(chr.getMap().getFieldLimit())) {
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        if (World.getPendingCharacterSize() >= 10) {
            chr.dropMessage(1, "The server is busy at the moment. Please try again in less than a minute.");
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        final int chc = slea.readByte() + 1;
        int mapid = 0;
        if (room) {
            mapid = slea.readInt();
        }
        chr.updateTick(slea.readInt());
        if (!World.isChannelAvailable(chc, chr.getWorld())) {
            chr.dropMessage(1, "Request denied due to an unknown error.");
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        if (room && (mapid < 910000001 || mapid > 910000022)) {
            chr.dropMessage(1, "Request denied due to an unknown error.");
            c.getSession().write(CWvsContext.enableActions());
            return;
        }
        if (room) {
            if (chr.getMapId() == mapid) {
                if (c.getChannel() == chc) {
                    chr.dropMessage(1, "You are already in " + chr.getMap().getMapName());
                    c.getSession().write(CWvsContext.enableActions());
                } else { // diff channel
                    chr.changeChannel(chc);
                }
            } else { // diff map
                if (c.getChannel() != chc) {
                    chr.changeChannel(chc);
                }
                final MapleMap warpz = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(mapid);
                if (warpz != null) {
                    chr.changeMap(warpz, warpz.getPortal("out00"));
                } else {
                    chr.dropMessage(1, "Request denied due to an unknown error.");
                    c.getSession().write(CWvsContext.enableActions());
                }
            }
        } else {
            chr.changeChannel(chc);
        }
    }
}
Line 320: if (GameConstants.getWeaponType(b.getItemId()) == MapleWeaponType.BIG_SWORD) {
 

Attachments

  • cUMJHFH - v144.3 Character Creation Problem - RaGEZONE Forums
    cUMJHFH.webp
    83.8 KB · Views: 65
Last edited:
Code:
[U][B]Explorer
[/B][/U]Received data :
45 00 05 00 31 32 33 34 35 FF FF FF FF 01 00 00 00 00 00 00 01 06 05 5B 00 00 B9
 8F 00 00 01 00 00 00 AF 06 10 00 C2 5E 10 00 F0 DD 13 00
E...12345????..........[..??......?...?^..??..
[Recv]  CREATE_CHAR                     |       69      |       0x0045
0 | 0 | 1 | 23301


[U][B]Cygnus[/B][/U]
Received data :
45 00 05 00 31 32 33 34 35 FF FF FF FF 02 00 00 00 00 00 00 00 07 6D 50 00 00 DD
 8E 00 00 00 00 00 00 A0 06 10 00 C6 D2 10 00 91 5E 10 00 F0 DD 13 00
E...12345????.........mP..??......?...??..?^..??..
[Recv]  CREATE_CHAR                     |       69      |       0x0045
[Send]  ADD_NEW_CHAR_ENTRY              |       13      |       0x000D


[U][B]Resistance[/B][/U]
45 00 05 00 31 32 33 34 35 FF FF FF FF 00 00 00 00 00 00 00 03 08 B2 4F 00 00 CE
 77 00 00 07 00 00 00 03 00 00 00 3F 06 10 00 00 00 00 00 71 5D 10 00 8D DE 13 0
0
E...12345????.........?O..?w..........?.......q]..??..
[Recv]  CREATE_CHAR                     |       69      |       0x0045
[Send]  ADD_NEW_CHAR_ENTRY              |       13      |       0x000D


[U][B]Dual Blade[/B][/U]
Received data :
45 00 05 00 31 32 33 34 35 FF FF FF FF 08 00 00 00 01 00 00 01 06 05 5B 00 00 1C
 84 00 00 01 00 00 00 AF 06 10 00 C1 5E 10 00 F0 DD 13 00
E...12345????..........[...?......?...?^..??..
[Recv]  CREATE_CHAR                     |       69      |       0x0045

[U][B]Jett[/B][/U]
45 00 05 00 31 32 33 34 35 FF FF FF FF 10 00 00 00 0A 00 00 00 06 B1 4F 00 00 0E
 8D 00 00 79 06 10 00 3B D2 10 00 15 5E 10 00 B6 C4 16 00
E...12345????.........±O...?..y...;?...^..??..
[Recv]  CREATE_CHAR                     |       69      |       0x0045
[Send]  ADD_NEW_CHAR_ENTRY              |       13      |       0x000D

Now compare those creation handlers to the current handler you use and apply any changes
 
Upvote 0
Now compare those creation handlers to the current handler you use and apply any changes
By creation handler you mean the files that contain the CREATECHAR & CREATE_CHAR variables right?
I'm very confused on which file it's in, because I can't find any file containing packets involving character creation.
 
Last edited:
Upvote 0
Back