Buddy find channel fix (#332)
This commit is contained in:
@@ -134,11 +134,13 @@ public final class WhisperHandler extends AbstractMaplePacketHandler {
|
|||||||
MapleCharacter player = c.getWorldServer().getPlayerStorage().getCharacterByName(recipient);
|
MapleCharacter player = c.getWorldServer().getPlayerStorage().getCharacterByName(recipient);
|
||||||
if (player != null && c.getPlayer().gmLevel() >= player.gmLevel()) {
|
if (player != null && c.getPlayer().gmLevel() >= player.gmLevel()) {
|
||||||
if (player.getCashShop().isOpened()) { // in CashShop
|
if (player.getCashShop().isOpened()) { // in CashShop
|
||||||
c.getSession().write(MaplePacketCreator.getFindReplyWithCS(recipient));
|
c.announce(MaplePacketCreator.getBuddyFindReply(player.getName(), -1, 2));
|
||||||
} else if (player.isAwayFromWorld()) { // in MTS
|
} else if (player.isAwayFromWorld()) { // in MTS
|
||||||
c.getSession().write(MaplePacketCreator.getFindReplyWithMTS(recipient));
|
c.announce(MaplePacketCreator.getBuddyFindReply(player.getName(), -1, 0));
|
||||||
|
} else if (player.getClient().getChannel() != c.getChannel()) { // in another channel
|
||||||
|
c.announce(MaplePacketCreator.getBuddyFindReply(player.getName(), player.getClient().getChannel() - 1, 3));
|
||||||
} else {
|
} else {
|
||||||
c.getSession().write(MaplePacketCreator.getFindReplyWithMap(player.getName(), player.getMap().getId()));
|
c.announce(MaplePacketCreator.getBuddyFindReply(player.getName(), player.getMap().getId(), 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6067,34 +6067,23 @@ public class MaplePacketCreator {
|
|||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] getFindReplyWithMap(String target, int mapid) {
|
/**
|
||||||
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
*
|
||||||
|
* @param target
|
||||||
|
* @param mapid
|
||||||
|
* @param MTSmapCSchannel 0: MTS 1: Map 2: CS 3: Different Channel
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static byte[] getBuddyFindReply(String target, int mapid, int MTSmapCSchannel) {
|
||||||
|
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
||||||
mplew.writeShort(SendOpcode.WHISPER.getValue());
|
mplew.writeShort(SendOpcode.WHISPER.getValue());
|
||||||
mplew.write(72);
|
mplew.write(72);
|
||||||
mplew.writeMapleAsciiString(target);
|
mplew.writeMapleAsciiString(target);
|
||||||
mplew.write(1);
|
mplew.write(MTSmapCSchannel); // 0: mts 1: map 2: cs
|
||||||
mplew.writeInt(mapid);
|
mplew.writeInt(mapid); // -1 if mts, cs
|
||||||
mplew.skip(8);
|
if (MTSmapCSchannel == 1) {
|
||||||
return mplew.getPacket();
|
mplew.write(new byte[8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] getFindReplyWithCS(String target) {
|
|
||||||
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
|
||||||
mplew.writeShort(SendOpcode.WHISPER.getValue());
|
|
||||||
mplew.write(72);
|
|
||||||
mplew.writeMapleAsciiString(target);
|
|
||||||
mplew.write(2);
|
|
||||||
mplew.writeInt(-1);
|
|
||||||
return mplew.getPacket();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] getFindReplyWithMTS(String target) {
|
|
||||||
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
|
|
||||||
mplew.writeShort(SendOpcode.WHISPER.getValue());
|
|
||||||
mplew.write(72);
|
|
||||||
mplew.writeMapleAsciiString(target);
|
|
||||||
mplew.write(0);
|
|
||||||
mplew.writeInt(-1);
|
|
||||||
return mplew.getPacket();
|
return mplew.getPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user