Newbie Spellweaver
- Joined
- Jan 9, 2011
- Messages
- 35
- Reaction score
- 10
I know nobody want this ...:thumbdown:
but still release ~ :
=========================================
have been test on XiuzSource V62
this waste me a half of my winter vacation:glare:
enjoy~
=========================================
credit to all XiuzSource's / Xotic's coders
press Like if you like it lol
but still release ~ :
Code:
MaplePacketCreator.java
Code:
getCharInfo
PHP:
public static MaplePacket getCharInfo(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.WARP_TO_MAP.getValue()); // 0x49
mplew.writeInt(chr.getClient().getChannel() - 1);
mplew.write(1);
mplew.write(1);
mplew.writeShort(0);
mplew.writeInt(new Random().nextInt()); // seed the maplestory rng with a random number <3
mplew.write(HexTool.getByteArrayFromHexString("F8 17 D7 13 CD C5 AD 78"));
addCharWarp(mplew, chr);
addQuestInfo(mplew, chr);
MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED);
List<Item> equippedCash = new ArrayList<Item>(iv.list().size());
for (IItem item : iv.list())
if (item.getPosition() <= -100)
equippedCash.add((Item) item);
List<MapleRing> rings = new ArrayList<MapleRing>();
for (Item item : equippedCash)
if (((IEquip) item).getRingId() > -1)
rings.add(MapleRing.loadFromDb(((IEquip) item).getRingId()));
iv = chr.getInventory(MapleInventoryType.EQUIP);
for (IItem item : iv.list())
if (((IEquip) item).getRingId() > -1)
rings.add(MapleRing.loadFromDb(((IEquip) item).getRingId()));
Collections.sort(rings);
boolean FR_last = false;
for (MapleRing ring : rings) {
if (ring.getItemId() >= 1112800 && ring.getItemId() <= 1112810 && rings.indexOf(ring) == 0){
mplew.writeShort(0);
}
mplew.writeShort(0);
mplew.writeShort(1);
mplew.writeInt(ring.getPartnerChrId());
mplew.writeAsciiString(StringUtil.getRightPaddedStr(ring.getPartnerName(), '\0', 13));
mplew.writeInt(ring.getRingId());
mplew.writeInt(0);
mplew.writeInt(ring.getPartnerRingId());
if (ring.getItemId() >= 1112800 && ring.getItemId() <= 1112810) {
FR_last = true;
mplew.writeInt(0);
mplew.writeInt(ring.getItemId());
mplew.writeShort(0);
} else {
if (rings.size() > 1) {
mplew.writeShort(0);
}
FR_last = false;
}
}
if (!FR_last) {
//mplew.writeLong(0);
mplew.writeLong(0);
}
for (int x = 0; x < 15; ++x) {
mplew.write(CHAR_INFO_MAGIC);
}
mplew.writeInt(0);
mplew.writeLong(getTime(System.currentTimeMillis()));
return mplew.getPacket();
}
Code:
addItemInfo
PHP:
private static void addItemInfo(MaplePacketLittleEndianWriter mplew, IItem item, boolean zeroPosition, boolean leaveOut) {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
boolean ring = false;
IEquip equip = null;
if (item.getType() == IItem.EQUIP) {
equip = (IEquip) item;
if (equip.getRingId() > -1)
ring = true;
}
byte pos = item.getPosition();
boolean masking = false;
boolean equipped = false;
if (zeroPosition) {
if (!leaveOut)
mplew.write(0);
} else if (pos <= (byte) -1) {
//pos *= -1;
pos = (byte)(pos * -1);
if ((pos > 100) || (pos == -128) || (ring)) {
masking = true;
mplew.write(0);
mplew.write(pos - 100);
} else
mplew.write(pos);
equipped = true;
} else
mplew.write(item.getPosition());
if (item.getPetId() > -1)
mplew.write(3);
else
mplew.write(item.getType());
mplew.writeInt(item.getItemId());
if (ring) {
mplew.write(1);
mplew.writeInt(equip.getRingId());
mplew.writeInt(0);
}
if (item.getPetId() > -1) {
MaplePet pet = MaplePet.loadFromDb(item.getItemId(), item.getPosition(), item.getPetId());
String petname = pet.getName();
mplew.write(1);
mplew.writeInt(item.getPetId());
mplew.writeInt(0);
mplew.write(0);
mplew.write(ITEM_MAGIC);
mplew.write(HexTool.getByteArrayFromHexString("BB 46 E6 17 02"));
if (petname.length() > 13)
petname = petname.substring(0, 13);
mplew.writeAsciiString(petname);
for (int i = petname.length(); i < 13; i++)
mplew.write(0);
mplew.write(pet.getLevel());
mplew.writeShort(pet.getCloseness());
mplew.write(pet.getFullness());
mplew.writeLong(getKoreanTimestamp((long) (System.currentTimeMillis() * 1.2)));
mplew.writeInt(0);
return;
}
if (masking && !ring) {
mplew.write(HexTool.getByteArrayFromHexString("01 41 B4 38 00 00 00 00 00 80 20 6F"));
addExpirationTime(mplew, 0, false);
} else if (ring)
mplew.writeLong(getKoreanTimestamp((long) (System.currentTimeMillis() * 1.2)));
else {
mplew.writeShort(0);
mplew.write(ITEM_MAGIC);
addExpirationTime(mplew, 0, false);
}
if (item.getType() == IItem.EQUIP) {
mplew.write(equip.getUpgradeSlots());
mplew.write(equip.getLevel());
mplew.writeShort(equip.getStr()); // str
mplew.writeShort(equip.getDex()); // dex
mplew.writeShort(equip.getInt()); // int
mplew.writeShort(equip.getLuk()); // luk
mplew.writeShort(equip.getHp()); // hp
mplew.writeShort(equip.getMp()); // mp
mplew.writeShort(equip.getWatk()); // watk
mplew.writeShort(equip.getMatk()); // matk
mplew.writeShort(equip.getWdef()); // wdef
mplew.writeShort(equip.getMdef()); // mdef
mplew.writeShort(equip.getAcc()); // accuracy
mplew.writeShort(equip.getAvoid()); // avoid
mplew.writeShort(equip.getHands()); // h
mplew.writeShort(equip.getSpeed()); // speed
mplew.writeShort(equip.getJump()); // jump
mplew.writeMapleAsciiString(equip.getOwner());
// 0 normal; 1 locked
mplew.write(equip.getLocked());
if (ring && !equipped)
mplew.write(0);
if (!masking && !ring) {
mplew.write(0);
mplew.writeLong(0); // values of these don't seem to matter at all
}
} else {
mplew.writeShort(item.getQuantity());
mplew.writeMapleAsciiString(item.getOwner());
mplew.writeShort(0); // this seems to end the item entry
// but only if its not a THROWING STAR :))9 O.O!
if (ii.isThrowingStar(item.getItemId()) || ii.isBullet(item.getItemId()))
mplew.write(HexTool.getByteArrayFromHexString("02 00 00 00 54 00 00 34"));
}
}
Code:
spawnPlayerMapobject
PHP:
public static MaplePacket spawnPlayerMapobject(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.SPAWN_PLAYER.getValue());
mplew.writeInt(chr.getId());
mplew.writeMapleAsciiString(chr.getName());
if (chr.getGuildId() <= 0) {
mplew.writeMapleAsciiString("");
mplew.write(new byte[6]);
} else {
MapleGuildSummary gs = chr.getClient().getChannelServer().getGuildSummary(chr.getGuildId());
if (gs != null) {
mplew.writeMapleAsciiString(gs.getName() + "");
mplew.writeShort(gs.getLogoBG());
mplew.write(gs.getLogoBGColor());
mplew.writeShort(gs.getLogo());
mplew.write(gs.getLogoColor());
} else {
mplew.writeMapleAsciiString("");
mplew.write(new byte[6]);
}
}
mplew.writeInt(0);
mplew.writeInt(1);
if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) {
mplew.write(2);
} else {
mplew.write(0);
}
mplew.writeShort(0);
mplew.write(0xF8);
long buffmask = 0;
Integer buffvalue = null;
if (chr.getBuffedValue(MapleBuffStat.DARKSIGHT) != null && !chr.isHidden()) {
buffmask |= MapleBuffStat.DARKSIGHT.getValue();
}
if (chr.getBuffedValue(MapleBuffStat.COMBO) != null) {
buffmask |= MapleBuffStat.COMBO.getValue();
buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.COMBO).intValue());
}
if (chr.getBuffedValue(MapleBuffStat.SHADOWPARTNER) != null) {
buffmask |= MapleBuffStat.SHADOWPARTNER.getValue();
}
if (chr.getBuffedValue(MapleBuffStat.SOULARROW) != null) {
buffmask |= MapleBuffStat.SOULARROW.getValue();
}
if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) {
buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.MORPH).intValue());
}
mplew.writeInt((int) ((buffmask >> 32) & 0xffffffff));
if (buffvalue != null) {
if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) {
mplew.writeShort(buffvalue);
} else {
mplew.write(buffvalue.byteValue());
}
}
mplew.writeInt((int) (buffmask & 0xffffffff));
int CHAR_MAGIC_SPAWN = new Random().nextInt();
mplew.writeInt(0);
mplew.writeShort(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
mplew.writeLong(0);
mplew.writeShort(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
mplew.writeLong(0);
mplew.writeShort(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
mplew.writeShort(0);
MapleMount mount = chr.getMount();
boolean showMount = false;
if (chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) {
if (mount != null) {
if (mount.isActive()) {
if (chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -19) != null) {
mplew.writeInt(mount.getItemId());
mplew.writeInt(mount.getSkillId());
mplew.writeInt(0x2D4DFC2A);
showMount = true;
}
} else {
mplew.writeInt(1932000);
mplew.writeInt(5221006);
mplew.writeInt(0x2D4DFC2A);
showMount = true;
}
}
}
if (!showMount) {
mplew.writeInt(0);
mplew.writeInt(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
}
mplew.writeLong(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
mplew.writeLong(0);
mplew.writeInt(0);
mplew.writeShort(0);
mplew.writeInt(CHAR_MAGIC_SPAWN);
mplew.writeInt(0);
mplew.write(0x40);
mplew.write(1);
addCharLook(mplew, chr, false);
mplew.writeInt(0);
mplew.writeInt(chr.getItemEffect());
mplew.writeInt(chr.getChair());
mplew.writeShort(chr.getPosition().x);
mplew.writeShort(chr.getPosition().y);
mplew.write(chr.getStance());
mplew.writeInt(0);
mplew.writeInt(1);
mplew.writeLong(0);
IPlayerInteractionManager ipim = chr.getInteraction();
if (ipim != null && ipim.isOwner(chr)) {
if (ipim.getShopType() == 2 || ipim.getShopType() == 3 || ipim.getShopType() == 4) {
addAnnounceBox(mplew, ipim);
}
}
mplew.write(0); // hmmmmm..
if (chr.getChalkboard() != null) {
mplew.write(1);
mplew.writeMapleAsciiString(chr.getChalkboard());
} else {
mplew.write(0);
}
MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED);
Collection<IItem> equippedC = iv.list();
List<Item> equipped = new ArrayList<Item>(equippedC.size());
for (IItem item : equippedC) {
equipped.add((Item) item);
}
Collections.sort(equipped);
List<MapleRing> rings = new ArrayList<MapleRing>();
for (Item item : equipped) {
if (((IEquip) item).getRingId() > -1) {
rings.add(MapleRing.loadFromDb(((IEquip) item).getRingId()));
}
}
Collections.sort(rings);
if (rings.size() > 0) {
mplew.write(0);
for (MapleRing ring : rings)
if (ring != null) {
mplew.write(1);
mplew.writeInt(ring.getRingId());
mplew.writeInt(0);
mplew.writeInt(ring.getPartnerRingId());
mplew.writeInt(0);
mplew.writeInt(ring.getItemId());
}
mplew.writeShort(0);
} else
mplew.writeInt(0);
return mplew.getPacket();
}
Code:
updateCharLook
PHP:
public static MaplePacket updateCharLook(MapleCharacter chr) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.UPDATE_CHAR_LOOK.getValue());
mplew.writeInt(chr.getId());
mplew.write(1);
addCharLook(mplew, chr, false);
MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED);
Collection<IItem> equippedC = iv.list();
List<Item> equipped = new ArrayList<Item>(equippedC.size());
for (IItem item : equippedC) {
equipped.add((Item) item);
}
Collections.sort(equipped);
List<MapleRing> rings = new ArrayList<MapleRing>();
for (Item item : equipped) {
if (((IEquip) item).getRingId() > -1) {
rings.add(MapleRing.loadFromDb(((IEquip) item).getRingId()));
}
}
Collections.sort(rings);
if (rings.size() > 0) {
for (MapleRing ring : rings) {
mplew.write(1);
mplew.writeInt(ring.getRingId());
mplew.writeInt(0);
mplew.writeInt(ring.getPartnerRingId());
mplew.writeInt(0);
mplew.writeInt(ring.getItemId());
}
} else {
mplew.write(0);
}
mplew.writeShort(0);
return mplew.getPacket();
}
=========================================
have been test on XiuzSource V62
this waste me a half of my winter vacation:glare:
enjoy~
=========================================
credit to all XiuzSource's / Xotic's coders
press Like if you like it lol
Last edited: