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
RecvPacketOpcode.JAVA
Comparison between Jett Creation and Adventurer Creation Screenshot
(Second last being Jett, Last being Adventurer)
Red = Jett
Teal = Explorer
LOG_PACKET_EXCEPT
InterServerHandler.java
Line 320: if (GameConstants.getWeaponType(b.getItemId()) == MapleWeaponType.BIG_SWORD) {
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)
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 <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
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);
}
}
}
Attachments
You must be registered for see attachments list
Last edited: