All packet creating methods now create Packet instead of byte[]

This commit got way too big...
- Remove deprecated methods for sending packets
- Favor OutPacket & Packet over MaplePacketLittleEndianWriter, LittleEndianWriter, and byte array
- Split up some packet creating methods into separate classes
This commit is contained in:
P0nk
2021-08-21 01:36:51 +02:00
parent b5cd6887ae
commit 8f6860d7d7
231 changed files with 6403 additions and 6927 deletions

View File

@@ -54,7 +54,7 @@ public abstract class ServerChannelInitializer extends ChannelInitializer<Socket
}
private void writeInitialUnencryptedHelloPacket(SocketChannel socketChannel, InitializationVector sendIv, InitializationVector recvIv) {
socketChannel.writeAndFlush(Unpooled.wrappedBuffer(PacketCreator.getHello(ServerConstants.VERSION, sendIv, recvIv)));
socketChannel.writeAndFlush(Unpooled.wrappedBuffer(PacketCreator.getHello(ServerConstants.VERSION, sendIv, recvIv).getBytes()));
}
private void setUpHandlers(ChannelPipeline pipeline, InitializationVector sendIv, InitializationVector recvIv,

View File

@@ -13,7 +13,6 @@ public class ByteBufOutPacket implements OutPacket {
private final ByteBuf byteBuf;
private byte[] bytes;
@Deprecated(forRemoval = true)
public ByteBufOutPacket() {
this.byteBuf = Unpooled.buffer();
}
@@ -82,7 +81,12 @@ public class ByteBufOutPacket implements OutPacket {
}
@Override
public void writePoint(Point value) {
public void writeFixedString(String value) {
writeBytes(value.getBytes(STRING_CHARSET));
}
@Override
public void writePos(Point value) {
writeShort((short) value.getX());
writeShort((short) value.getY());
}

View File

@@ -13,7 +13,8 @@ public interface OutPacket extends Packet {
void writeLong(long value);
void writeBool(boolean value);
void writeString(String value);
void writePoint(Point value);
void writeFixedString(String value);
void writePos(Point value);
void skip(int numberOfBytes);
static OutPacket create(SendOpcode opcode) {

View File

@@ -36,6 +36,7 @@ import constants.inventory.ItemConstants;
import constants.net.OpcodeConstants;
import constants.net.ServerConstants;
import net.netty.LoginServer;
import net.packet.Packet;
import net.server.audit.ThreadTracker;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReadLock;
@@ -995,7 +996,7 @@ public class Server {
}
}
public void allianceMessage(int id, final byte[] packet, int exception, int guildex) {
public void allianceMessage(int id, Packet packet, int exception, int guildex) {
MapleAlliance alliance = alliances.get(id);
if (alliance != null) {
for (Integer gid : alliance.getGuilds()) {
@@ -1221,11 +1222,11 @@ public class Server {
}
}
public void guildMessage(int gid, byte[] packet) {
public void guildMessage(int gid, Packet packet) {
guildMessage(gid, packet, -1);
}
public void guildMessage(int gid, byte[] packet, int exception) {
public void guildMessage(int gid, Packet packet, int exception) {
MapleGuild g = guilds.get(gid);
if (g != null) {
g.broadcast(packet, exception);
@@ -1267,13 +1268,13 @@ public class Server {
worlda.reloadGuildSummary();
}
public void broadcastMessage(int world, final byte[] packet) {
public void broadcastMessage(int world, Packet packet) {
for (Channel ch : getChannelsFromWorld(world)) {
ch.broadcastPacket(packet);
}
}
public void broadcastGMMessage(int world, final byte[] packet) {
public void broadcastGMMessage(int world, Packet packet) {
for (Channel ch : getChannelsFromWorld(world)) {
ch.broadcastGMPacket(packet);
}

View File

@@ -25,6 +25,7 @@ import client.MapleCharacter;
import config.YamlConfig;
import constants.game.GameConstants;
import net.netty.ChannelServer;
import net.packet.Packet;
import net.server.PlayerStorage;
import net.server.Server;
import net.server.audit.LockCollector;
@@ -263,7 +264,7 @@ public final class Channel {
public void addPlayer(MapleCharacter chr) {
players.addPlayer(chr);
chr.announce(PacketCreator.serverMessage(serverMessage));
chr.sendPacket(PacketCreator.serverMessage(serverMessage));
}
public String getServerMessage() {
@@ -282,9 +283,9 @@ public final class Channel {
return (int)(Math.ceil(((float) players.getAllCharacters().size() / YamlConfig.config.server.CHANNEL_LOAD) * 800));
}
public void broadcastPacket(final byte[] data) {
public void broadcastPacket(Packet packet) {
for (MapleCharacter chr : players.getAllCharacters()) {
chr.announce(data);
chr.sendPacket(packet);
}
}
@@ -308,10 +309,10 @@ public final class Channel {
return eventSM;
}
public void broadcastGMPacket(final byte[] data) {
public void broadcastGMPacket(Packet packet) {
for (MapleCharacter chr : players.getAllCharacters()) {
if (chr.isGM()) {
chr.announce(data);
chr.sendPacket(packet);
}
}
}

View File

@@ -96,7 +96,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
theSkill = SkillFactory.getSkill(attack.skill); // thanks Conrad for noticing some Aran skills not consuming MP
attackEffect = attack.getAttackEffect(player, theSkill); //returns back the player's attack effect so we are gucci
if (attackEffect == null) {
player.announce(PacketCreator.enableActions());
player.sendPacket(PacketCreator.enableActions());
return;
}
@@ -127,7 +127,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
}
}
} else {
player.announce(PacketCreator.enableActions());
player.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -67,7 +67,7 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler {
MapleFamilyEntry newEntry = new MapleFamilyEntry(inviter.getFamily(), chr.getId(), chr.getName(), chr.getLevel(), chr.getJob());
newEntry.setCharacter(chr);
if(!newEntry.setSenior(inviter.getFamilyEntry(), true)) {
inviter.announce(PacketCreator.sendFamilyMessage(1, 0));
inviter.sendPacket(PacketCreator.sendFamilyMessage(1, 0));
return;
} else {
// save
@@ -81,15 +81,15 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler {
if(inviter.getFamily().getTotalGenerations() + targetFamily.getTotalGenerations() <= YamlConfig.config.server.FAMILY_MAX_GENERATIONS) {
targetEntry.join(inviter.getFamilyEntry());
} else {
inviter.announce(PacketCreator.sendFamilyMessage(76, 0));
chr.announce(PacketCreator.sendFamilyMessage(76, 0));
inviter.sendPacket(PacketCreator.sendFamilyMessage(76, 0));
chr.sendPacket(PacketCreator.sendFamilyMessage(76, 0));
return;
}
}
} else { // create new family
if(chr.getFamily() != null && inviter.getFamily() != null && chr.getFamily().getTotalGenerations() + inviter.getFamily().getTotalGenerations() >= YamlConfig.config.server.FAMILY_MAX_GENERATIONS) {
inviter.announce(PacketCreator.sendFamilyMessage(76, 0));
chr.announce(PacketCreator.sendFamilyMessage(76, 0));
inviter.sendPacket(PacketCreator.sendFamilyMessage(76, 0));
chr.sendPacket(PacketCreator.sendFamilyMessage(76, 0));
return;
}
MapleFamily newFamily = new MapleFamily(-1, c.getWorld());
@@ -113,14 +113,14 @@ public final class AcceptFamilyHandler extends AbstractMaplePacketHandler {
}
}
c.getPlayer().getFamily().broadcast(PacketCreator.sendFamilyJoinResponse(true, c.getPlayer().getName()), c.getPlayer().getId());
c.announce(PacketCreator.getSeniorMessage(inviter.getName()));
c.announce(PacketCreator.getFamilyInfo(chr.getFamilyEntry()));
c.sendPacket(PacketCreator.getSeniorMessage(inviter.getName()));
c.sendPacket(PacketCreator.getFamilyInfo(chr.getFamilyEntry()));
chr.getFamilyEntry().updateSeniorFamilyInfo(true);
} else {
inviter.announce(PacketCreator.sendFamilyJoinResponse(false, c.getPlayer().getName()));
inviter.sendPacket(PacketCreator.sendFamilyJoinResponse(false, c.getPlayer().getName()));
}
}
c.announce(PacketCreator.sendFamilyMessage(0, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(0, 0));
}
private static void insertNewFamilyRecord(int characterID, int familyID, int seniorID, boolean updateChar) {

View File

@@ -3,6 +3,7 @@ package net.server.channel.handlers;
import client.MapleClient;
import config.YamlConfig;
import net.AbstractMaplePacketHandler;
import net.packet.Packet;
import tools.LogHelper;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
@@ -21,7 +22,7 @@ public class AdminChatHandler extends AbstractMaplePacketHandler {
byte mode = slea.readByte();
//not saving slides...
String message = slea.readMapleAsciiString();
byte[] packet = PacketCreator.serverNotice(slea.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :)
Packet packet = PacketCreator.serverNotice(slea.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :)
switch (mode) {
case 0:// /alertall, /noticeall, /slideall
c.getWorldServer().broadcastPacket(packet);

View File

@@ -58,7 +58,7 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
c.getPlayer().getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(toSpawnChild[0]), c.getPlayer().getPosition());
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 0x01: { // /d (inv)
byte type = slea.readByte();
@@ -94,11 +94,11 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
target.block(type, duration, description);
target.sendPolice(duration, reason, 6000);
}
c.announce(PacketCreator.getGMEffect(4, (byte) 0));
c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0));
} else if (MapleCharacter.ban(victim, reason, false)) {
c.announce(PacketCreator.getGMEffect(4, (byte) 0));
c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0));
} else {
c.announce(PacketCreator.getGMEffect(6, (byte) 1));
c.sendPacket(PacketCreator.getGMEffect(6, (byte) 1));
}
break;
case 0x10: // /h, information added by vana -- <and tele mode f1> ... hide ofcourse
@@ -160,10 +160,10 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
String message = slea.readMapleAsciiString();
target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim);
if (target != null) {
target.getClient().announce(PacketCreator.serverNotice(1, message));
c.announce(PacketCreator.getGMEffect(0x1E, (byte) 1));
target.getClient().sendPacket(PacketCreator.serverNotice(1, message));
c.sendPacket(PacketCreator.getGMEffect(0x1E, (byte) 1));
} else {
c.announce(PacketCreator.getGMEffect(0x1E, (byte) 0));
c.sendPacket(PacketCreator.getGMEffect(0x1E, (byte) 0));
}
break;
case 0x24:// /Artifact Ranking

View File

@@ -25,7 +25,10 @@ import client.MapleCharacter;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.opcodes.SendOpcode;
import net.packet.OutPacket;
import net.packet.Packet;
import net.server.Server;
import net.server.guild.GuildPackets;
import net.server.guild.MapleAlliance;
import net.server.guild.MapleGuild;
import net.server.guild.MapleGuildCharacter;
@@ -45,7 +48,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
if (chr.getGuild() == null) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -56,18 +59,18 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
byte b = slea.readByte();
if (alliance == null) {
if (b != 4) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
} else {
if (b == 4) {
chr.dropMessage(5, "Your guild is already registered on a guild alliance.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.getMGC().getAllianceRank() > 2 || !alliance.getGuilds().contains(chr.getGuildId())) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
}
@@ -131,9 +134,9 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
chr.saveGuildStatus();
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.addGuildToAlliance(alliance, guildid, c), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.updateAllianceInfo(alliance, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.addGuildToAlliance(alliance, guildid, c), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.updateAllianceInfo(alliance, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
guild.dropMessage("Your guild has joined the [" + alliance.getName() + "] union.");
break;
@@ -145,12 +148,12 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
return;
}
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.removeGuildFromAlliance(alliance, guildid, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.removeGuildFromAlliance(alliance, guildid, c.getWorld()), -1, -1);
Server.getInstance().removeGuildFromAlliance(alliance.getId(), guildid);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
Server.getInstance().guildMessage(guildid, PacketCreator.disbandAlliance(allianceid));
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
Server.getInstance().guildMessage(guildid, GuildPackets.disbandAlliance(allianceid));
alliance.dropMessage("[" + Server.getInstance().getGuild(guildid).getName() + "] guild has been expelled from the union.");
break;
@@ -175,7 +178,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
ranks[i] = slea.readMapleAsciiString();
}
Server.getInstance().setAllianceRanks(alliance.getId(), ranks);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1);
break;
case 0x09: {
int int1 = slea.readInt();
@@ -190,7 +193,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
case 0x0A:
String notice = slea.readMapleAsciiString();
Server.getInstance().setAllianceNotice(alliance.getId(), notice);
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), notice), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), notice), -1, -1);
alliance.dropMessage(5, "* Alliance Notice : " + notice);
break;
@@ -210,7 +213,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
newLeader.getMGC().setAllianceRank(1);
newLeader.saveGuildStatus();
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, newLeader.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, newLeader.getWorld()), -1, -1);
alliance.dropMessage("'" + newLeader.getName() + "' has been appointed as the new head of this Alliance.");
}
@@ -221,17 +224,16 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
chr.getMGC().setAllianceRank(newRank);
chr.saveGuildStatus();
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, chr.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, chr.getWorld()), -1, -1);
alliance.dropMessage("'" + chr.getName() + "' has been reassigned to '" + alliance.getRankTitle(newRank) + "' in this Alliance.");
}
private static byte[] sendShowInfo(int allianceid, int playerid) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue());
mplew.write(0x02);
mplew.writeInt(allianceid);
mplew.writeInt(playerid);
return mplew.getPacket();
private static Packet sendShowInfo(int allianceid, int playerid) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x02);
p.writeInt(allianceid);
p.writeInt(playerid);
return p;
}
private static byte[] sendInvitation(int allianceid, int playerid, final String guildname) {

View File

@@ -24,8 +24,8 @@ package net.server.channel.handlers;
import client.MapleCharacter;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.server.guild.GuildPackets;
import tools.DatabaseConnection;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import java.sql.Connection;
@@ -103,7 +103,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler {
ps.setInt(1, c.getPlayer().getGuildId());
try (ResultSet rs = ps.executeQuery()) {
c.announce(PacketCreator.BBSThreadList(rs, start));
c.sendPacket(GuildPackets.BBSThreadList(rs, start));
}
} catch (SQLException se) {
se.printStackTrace();
@@ -317,7 +317,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler {
ps2.setInt(1, !bIsThreadIdLocal ? threadid : threadRS.getInt("threadid"));
repliesRS = ps2.executeQuery();
}
client.announce(PacketCreator.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS));
client.sendPacket(GuildPackets.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS));
repliesRS.close();
}
if (ps2 != null) {

View File

@@ -54,7 +54,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
private void nextPendingRequest(MapleClient c) {
CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest();
if (pendingBuddyRequest != null) {
c.announce(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName()));
c.sendPacket(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName()));
}
}
@@ -88,9 +88,9 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
}
BuddylistEntry ble = buddylist.get(addName);
if (ble != null && !ble.isVisible() && group.equals(ble.getGroup())) {
c.announce(PacketCreator.serverNotice(1, "You already have \"" + ble.getName() + "\" on your Buddylist"));
c.sendPacket(PacketCreator.serverNotice(1, "You already have \"" + ble.getName() + "\" on your Buddylist"));
} else if (buddylist.isFull() && ble == null) {
c.announce(PacketCreator.serverNotice(1, "Your buddylist is already full"));
c.sendPacket(PacketCreator.serverNotice(1, "Your buddylist is already full"));
} else if (ble == null) {
try {
World world = c.getWorldServer();
@@ -135,7 +135,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
}
}
if (buddyAddResult == BuddyAddResult.BUDDYLIST_FULL) {
c.announce(PacketCreator.serverNotice(1, "\"" + addName + "\"'s Buddylist is full"));
c.sendPacket(PacketCreator.serverNotice(1, "\"" + addName + "\"'s Buddylist is full"));
} else {
int displayChannel;
displayChannel = -1;
@@ -152,17 +152,17 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
}
}
buddylist.put(new BuddylistEntry(charWithId.getName(), group, otherCid, displayChannel, true));
c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies()));
c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies()));
}
} else {
c.announce(PacketCreator.serverNotice(1, "A character called \"" + addName + "\" does not exist"));
c.sendPacket(PacketCreator.serverNotice(1, "A character called \"" + addName + "\" does not exist"));
}
} catch (SQLException e) {
e.printStackTrace();
}
} else {
ble.changeGroup(group);
c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies()));
c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies()));
}
} else if (mode == 2) { // accept buddy
int otherCid = slea.readInt();
@@ -187,7 +187,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
}
if (otherName != null) {
buddylist.put(new BuddylistEntry(otherName, "Default Group", otherCid, channel, true));
c.announce(PacketCreator.updateBuddylist(buddylist.getBuddies()));
c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies()));
notifyRemoteChannel(c, channel, otherCid, ADDED);
}
} catch (SQLException e) {

View File

@@ -35,7 +35,7 @@ public final class CancelDebuffHandler extends AbstractMaplePacketHandler {//TIP
List<MapleDisease> disease_ = new ArrayList<MapleDisease>();
disease_.add(disease);
diseases_.add(disease);
c.announce(PacketCreator.cancelDebuff(disease_));
c.sendPacket(PacketCreator.cancelDebuff(disease_));
c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.cancelForeignDebuff(c.getPlayer().getId(), disease_), false);
}
for (MapleDisease disease : diseases_) {

View File

@@ -55,7 +55,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
CashShop cs = chr.getCashShop();
if (!cs.isOpened()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -89,7 +89,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
Item item = cItem.toItem();
cs.gainCash(useNX, cItem, chr.getWorld()); // thanks Rohenn for noticing cash operations after item acquisition
cs.addToInventory(item);
c.announce(PacketCreator.showBoughtCashItem(item, c.getAccID()));
c.sendPacket(PacketCreator.showBoughtCashItem(item, c.getAccID()));
} else { // Package
cs.gainCash(useNX, cItem, chr.getWorld());
@@ -97,9 +97,9 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
for (Item item : cashPackage) {
cs.addToInventory(item);
}
c.announce(PacketCreator.showBoughtCashPackage(cashPackage, c.getAccID()));
c.sendPacket(PacketCreator.showBoughtCashPackage(cashPackage, c.getAccID()));
}
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showCash(chr));
} else if (action == 0x04) {//TODO check for gender
int birthday = slea.readInt();
CashItem cItem = CashItemFactory.getItem(slea.readInt());
@@ -110,19 +110,19 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
return;
}
if (!checkBirthday(c, birthday)) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC4));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4));
return;
} else if (recipient == null) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xA9));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xA9));
return;
} else if (recipient.get("accountid").equals(String.valueOf(c.getAccID()))) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xA8));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xA8));
return;
}
cs.gainCash(4, cItem, chr.getWorld());
cs.gift(Integer.parseInt(recipient.get("id")), chr.getName(), message, cItem.getSN());
c.announce(PacketCreator.showGiftSucceed(recipient.get("name"), cItem));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showGiftSucceed(recipient.get("name"), cItem));
c.sendPacket(PacketCreator.showCash(chr));
try {
chr.sendNote(recipient.get("name"), chr.getName() + " has sent you a gift! Go check out the Cash Shop.", (byte) 0); //fame or not
} catch (SQLException ex) {
@@ -139,7 +139,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
cs.addToWishList(sn);
}
}
c.announce(PacketCreator.showWishList(chr, true));
c.sendPacket(PacketCreator.showWishList(chr, true));
} else if (action == 0x06) { // Increase Inventory Slots
slea.skip(1);
int cash = slea.readInt();
@@ -157,8 +157,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
cs.gainCash(cash, -4000);
if (chr.gainSlots(type, qty, false)) {
c.announce(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type)));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type)));
c.sendPacket(PacketCreator.showCash(chr));
} else {
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots of type " + type + " for player " + MapleCharacter.makeMapleReadable(chr.getName()));
}
@@ -176,8 +176,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
cs.gainCash(cash, cItem, chr.getWorld());
if (chr.gainSlots(type, qty, false)) {
c.announce(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type)));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showBoughtInventorySlots(type, chr.getSlots(type)));
c.sendPacket(PacketCreator.showCash(chr));
} else {
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots of type " + type + " for player " + MapleCharacter.makeMapleReadable(chr.getName()));
}
@@ -201,8 +201,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " bought " + qty + " slots to their account storage.");
chr.setUsedStorage();
c.announce(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots()));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots()));
c.sendPacket(PacketCreator.showCash(chr));
} else {
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account.");
}
@@ -223,8 +223,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
FilePrinter.print(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " bought " + qty + " slots to their account storage.");
chr.setUsedStorage();
c.announce(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots()));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots()));
c.sendPacket(PacketCreator.showCash(chr));
} else {
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account.");
}
@@ -245,8 +245,8 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
cs.gainCash(cash, cItem, chr.getWorld());
if (c.gainCharacterSlot()) {
c.announce(PacketCreator.showBoughtCharacterSlot(c.getCharacterSlots()));
c.announce(PacketCreator.showCash(chr));
c.sendPacket(PacketCreator.showBoughtCharacterSlot(c.getCharacterSlots()));
c.sendPacket(PacketCreator.showCash(chr));
} else {
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add a character slot to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account.");
c.enableCSActions();
@@ -260,7 +260,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
if (chr.getInventory(item.getInventoryType()).addItem(item) != -1) {
cs.removeFromInventory(item);
c.announce(PacketCreator.takeFromCashInventory(item));
c.sendPacket(PacketCreator.takeFromCashInventory(item));
if(item instanceof Equip) {
Equip equip = (Equip) item;
@@ -286,17 +286,17 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
c.enableCSActions();
return;
} else if (c.getPlayer().getPetIndex(item.getPetId()) > -1) {
chr.getClient().announce(PacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory."));
chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put the pet you currently equip into the Cash Shop inventory."));
c.enableCSActions();
return;
} else if (ItemConstants.isWeddingRing(item.getItemId()) || ItemConstants.isWeddingToken(item.getItemId())) {
chr.getClient().announce(PacketCreator.serverNotice(1, "You cannot put relationship items into the Cash Shop inventory."));
chr.getClient().sendPacket(PacketCreator.serverNotice(1, "You cannot put relationship items into the Cash Shop inventory."));
c.enableCSActions();
return;
}
cs.addToInventory(item);
mi.removeSlot(item.getPosition());
c.announce(PacketCreator.putIntoCashInventory(item, c.getAccID()));
c.sendPacket(PacketCreator.putIntoCashInventory(item, c.getAccID()));
} else if (action == 0x1D) { //crush ring (action 28)
int birthday = slea.readInt();
if (checkBirthday(c, birthday)) {
@@ -307,7 +307,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
CashItem itemRing = CashItemFactory.getItem(SN);
MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(recipientName);
if (partner == null) {
chr.getClient().announce(PacketCreator.serverNotice(1, "The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel."));
chr.sendPacket(PacketCreator.serverNotice(1, "The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel."));
} else {
/* if (partner.getGender() == chr.getGender()) {
@@ -321,7 +321,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
Pair<Integer, Integer> rings = MapleRing.createRing(itemRing.getItemId(), chr, partner);
eqp.setRingId(rings.getLeft());
cs.addToInventory(eqp);
c.announce(PacketCreator.showBoughtCashItem(eqp, c.getAccID()));
c.sendPacket(PacketCreator.showBoughtCashItem(eqp, c.getAccID()));
cs.gainCash(toCharge, itemRing, chr.getWorld());
cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight());
chr.addCrushRing(MapleRing.loadFromDb(rings.getLeft()));
@@ -334,27 +334,27 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
}
} else {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC4));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4));
}
c.announce(PacketCreator.showCash(c.getPlayer()));
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
} else if (action == 0x20) {
int serialNumber = slea.readInt(); // thanks GabrielSin for detecting a potential exploit with 1 meso cash items.
if (serialNumber / 10000000 != 8) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC0));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0));
return;
}
CashItem item = CashItemFactory.getItem(serialNumber);
if (item == null || !item.isOnSale()) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC0));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0));
return;
}
int itemId = item.getItemId();
int itemPrice = item.getPrice();
if (itemPrice <= 0) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC0));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0));
return;
}
@@ -362,10 +362,10 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
if (chr.canHold(itemId)) {
chr.gainMeso(-itemPrice, false);
MapleInventoryManipulator.addById(c, itemId, (short) 1, "", -1);
c.announce(PacketCreator.showBoughtQuestItem(itemId));
c.sendPacket(PacketCreator.showBoughtQuestItem(itemId));
}
}
c.announce(PacketCreator.showCash(c.getPlayer()));
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
} else if (action == 0x23) { //Friendship :3
int birthday = slea.readInt();
if (checkBirthday(c, birthday)) {
@@ -379,7 +379,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
slea.readByte();
MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(sentTo);
if (partner == null) {
c.announce(PacketCreator.showCashShopMessage((byte)0xBE));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0xBE));
} else {
// Need to check to make sure its actually an equip and the right SN...
if(itemRing.toItem() instanceof Equip) {
@@ -387,7 +387,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
Pair<Integer, Integer> rings = MapleRing.createRing(itemRing.getItemId(), chr, partner);
eqp.setRingId(rings.getLeft());
cs.addToInventory(eqp);
c.announce(PacketCreator.showBoughtCashRing(eqp, partner.getName(), c.getAccID()));
c.sendPacket(PacketCreator.showBoughtCashRing(eqp, partner.getName(), c.getAccID()));
cs.gainCash(payment, -itemRing.getPrice());
cs.gift(partner.getId(), chr.getName(), text, eqp.getSN(), rings.getRight());
chr.addFriendshipRing(MapleRing.loadFromDb(rings.getLeft()));
@@ -400,14 +400,14 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
}
}
} else {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC4));
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4));
}
c.announce(PacketCreator.showCash(c.getPlayer()));
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
} else if (action == 0x2E) { //name change
CashItem cItem = CashItemFactory.getItem(slea.readInt());
if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
c.enableCSActions();
return;
}
@@ -415,28 +415,28 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
slea.readMapleAsciiString(); //old name
String newName = slea.readMapleAsciiString();
if(!MapleCharacter.canCreateChar(newName) || chr.getLevel() < 10) { //(longest ban duration isn't tracked currently)
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
c.enableCSActions();
return;
} else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) > Calendar.getInstance().getTimeInMillis()) {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
c.enableCSActions();
return;
}
if(chr.registerNameChange(newName)) { //success
Item item = cItem.toItem();
c.announce(PacketCreator.showNameChangeSuccess(item, c.getAccID()));
c.sendPacket(PacketCreator.showNameChangeSuccess(item, c.getAccID()));
cs.gainCash(4, cItem, chr.getWorld());
cs.addToInventory(item);
} else {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
}
}
c.enableCSActions();
} else if(action == 0x31) { //world transfer
CashItem cItem = CashItemFactory.getItem(slea.readInt());
if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
c.enableCSActions();
return;
}
@@ -445,21 +445,21 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
int worldTransferError = chr.checkWorldTransferEligibility();
if(worldTransferError != 0 || newWorldSelection >= Server.getInstance().getWorldsSize() || Server.getInstance().getWorldsSize() <= 1) {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
return;
} else if(newWorldSelection == c.getWorld()) {
c.announce(PacketCreator.showCashShopMessage((byte)0xDC));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0xDC));
return;
} else if(c.getAvailableCharacterWorldSlots(newWorldSelection) < 1 || Server.getInstance().getAccountWorldCharacterCount(c.getAccID(), newWorldSelection) >= 3) {
c.announce(PacketCreator.showCashShopMessage((byte)0xDF));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0xDF));
return;
} else if(chr.registerWorldTransfer(newWorldSelection)) {
Item item = cItem.toItem();
c.announce(PacketCreator.showWorldTransferSuccess(item, c.getAccID()));
c.sendPacket(PacketCreator.showWorldTransferSuccess(item, c.getAccID()));
cs.gainCash(4, cItem, chr.getWorld());
cs.addToInventory(item);
} else {
c.announce(PacketCreator.showCashShopMessage((byte)0));
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
}
}
c.enableCSActions();
@@ -470,7 +470,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
c.releaseClient();
}
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -41,9 +41,9 @@ public class CashShopSurpriseHandler extends AbstractMaplePacketHandler {
if(cssResult != null) {
Item cssItem = cssResult.getLeft(), cssBox = cssResult.getRight();
c.announce(PacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true));
c.sendPacket(PacketCreator.onCashGachaponOpenSuccess(c.getAccID(), cssBox.getSN(), cssBox.getQuantity(), cssItem, cssItem.getItemId(), cssItem.getQuantity(), true));
} else {
c.announce(PacketCreator.onCashItemGachaponOpenFailed());
c.sendPacket(PacketCreator.onCashItemGachaponOpenFailed());
}
}
}

View File

@@ -49,7 +49,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
FilePrinter.printError(FilePrinter.PORTAL_STUCK + chr.getName() + ".txt", "Player " + chr.getName() + " got stuck when changing maps. Timestamp: " + Calendar.getInstance().getTime().toString() + " Last visited mapids: " + chr.getLastVisitedMapids());
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.getTrade() != null) {
@@ -65,7 +65,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
chr.setSessionTransitionState();
try {
c.announce(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1])));
c.sendPacket(PacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1])));
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
@@ -95,7 +95,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
// thanks lucasziron (lziron) for showing revivePlayer() triggering by Wheel
MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, 5510000, 1, true, false);
chr.announce(PacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false)));
chr.sendPacket(PacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false)));
chr.updateHp(50);
chr.changeMap(map, map.findClosestPlayerSpawnpoint(chr.getPosition()));
@@ -121,8 +121,8 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
}
} else if (divi == 20100) {
if (targetid == 104000000) {
c.announce(PacketCreator.lockUI(false));
c.announce(PacketCreator.disableUI(false));
c.sendPacket(PacketCreator.lockUI(false));
c.sendPacket(PacketCreator.disableUI(false));
warp = true;
}
} else if (divi == 9130401) { // Only allow warp if player is already in Intro map, or else = hack
@@ -151,8 +151,8 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
}
if (portal != null && !portal.getPortalStatus()) {
c.announce(PacketCreator.blockedMessage(1));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.blockedMessage(1));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -164,13 +164,13 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
if (portal != null) {
if (portal.getPosition().distanceSq(chr.getPosition()) > 400000) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
portal.enterPortal(c);
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
} catch (Exception e) {
e.printStackTrace();

View File

@@ -37,11 +37,11 @@ public final class ChangeMapSpecialHandler extends AbstractMaplePacketHandler {
slea.readShort();
MaplePortal portal = c.getPlayer().getMap().getPortal(startwp);
if (portal == null || c.getPlayer().portalDelay() > currentServerTime() || c.getPlayer().getBlockedPortals().contains(portal.getScriptName())) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (c.getPlayer().isChangingMaps() || c.getPlayer().isBanned()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (c.getPlayer().getTrade() != null) {

View File

@@ -42,7 +42,7 @@ public final class CharInfoRequestHandler extends AbstractMaplePacketHandler {
if(c.getPlayer().getId() != player.getId()) {
player.exportExcludedItems(c);
}
c.announce(PacketCreator.charInfo(player));
c.sendPacket(PacketCreator.charInfo(player));
}
}
}

View File

@@ -59,7 +59,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
return;
if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) {
chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
}
chr.getMap().broadcastMessage(chr, PacketCreator.closeRangeAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display), false, true);
@@ -104,7 +104,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair<>(MapleBuffStat.COMBO, neworbcount));
chr.setBuffedValue(MapleBuffStat.COMBO, neworbcount);
duration -= (int) (currentServerTime() - chr.getBuffedStarttime(MapleBuffStat.COMBO));
c.announce(PacketCreator.giveBuff(oid, duration, stat));
c.sendPacket(PacketCreator.giveBuff(oid, duration, stat));
chr.getMap().broadcastMessage(chr, PacketCreator.giveForeignBuff(chr.getId(), stat), false);
}
}
@@ -146,8 +146,8 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
}
chr.setDojoEnergy(0);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.announce(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
} else if (attack.skill > 0) {
Skill skill = SkillFactory.getSkill(attack.skill);
MapleStatEffect effect_ = skill.getEffect(chr.getSkillLevel(skill));
@@ -155,7 +155,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
if (chr.skillIsCooling(attack.skill)) {
return;
} else {
c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
}
}

View File

@@ -188,7 +188,7 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
Pair<Integer, List<Pair<Integer, Pair<Integer, Integer>>>> codeRes = getNXCodeResult(c.getPlayer(), code.toUpperCase());
int type = codeRes.getLeft();
if (type < 0) {
c.announce(PacketCreator.showCashShopMessage((byte) parseCouponResult(type)));
c.sendPacket(PacketCreator.showCashShopMessage((byte) parseCouponResult(type)));
} else {
List<Item> cashItems = new LinkedList<>();
List<Pair<Integer, Integer>> items = new LinkedList<>();
@@ -260,9 +260,9 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
}
}
if (nxCredit != 0 || nxPrepaid != 0) { //coupon packet can only show maple points (afaik)
c.announce(PacketCreator.showBoughtQuestItem(0));
c.sendPacket(PacketCreator.showBoughtQuestItem(0));
} else {
c.announce(PacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items));
c.sendPacket(PacketCreator.showCouponRedeemedItems(c.getAccID(), maplePoints, mesos, cashItems, items));
}
c.enableCSActions();
}

View File

@@ -43,7 +43,7 @@ public final class DenyPartyRequestHandler extends AbstractMaplePacketHandler {
if (MapleInviteCoordinator.answerInvite(InviteType.PARTY, chr.getId(), cfrom.getPartyId(), false).result == InviteResult.DENIED) {
chr.updatePartySearchAvailability(chr.getParty() == null);
cfrom.getClient().announce(PacketCreator.partyStatusMessage(23, chr.getName()));
cfrom.sendPacket(PacketCreator.partyStatusMessage(23, chr.getName()));
}
}
}

View File

@@ -41,7 +41,7 @@ public final class DoorHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
if (chr.isChangingMaps() || chr.isBanned()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -55,7 +55,7 @@ public final class DoorHandler extends AbstractMaplePacketHandler {
}
}
c.announce(PacketCreator.blockedMessage(6));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.blockedMessage(6));
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -33,7 +33,7 @@ public final class DueyHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (!YamlConfig.config.server.USE_DUEY){
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -40,19 +40,19 @@ public class EnterCashShopHandler extends AbstractMaplePacketHandler {
MapleCharacter mc = c.getPlayer();
if (mc.cannotEnterCashShop()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if(mc.getEventInstance() != null) {
c.announce(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event."));
c.sendPacket(PacketCreator.enableActions());
return;
}
if(MapleMiniDungeonInfo.isDungeonMap(mc.getMapId())) {
c.announce(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon."));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -79,11 +79,11 @@ public class EnterCashShopHandler extends AbstractMaplePacketHandler {
mc.forfeitExpirableQuests();
mc.cancelQuestExpirationTask();
c.announce(PacketCreator.openCashShop(c, false));
c.announce(PacketCreator.showCashInventory(c));
c.announce(PacketCreator.showGifts(mc.getCashShop().loadGifts()));
c.announce(PacketCreator.showWishList(mc, false));
c.announce(PacketCreator.showCash(mc));
c.sendPacket(PacketCreator.openCashShop(c, false));
c.sendPacket(PacketCreator.showCashInventory(c));
c.sendPacket(PacketCreator.showGifts(mc.getCashShop().loadGifts()));
c.sendPacket(PacketCreator.showWishList(mc, false));
c.sendPacket(PacketCreator.showCash(mc));
c.getChannelServer().removePlayer(mc);
mc.getMap().removePlayer(mc);

View File

@@ -51,38 +51,38 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
if(!chr.isAlive() && YamlConfig.config.server.USE_BUYBACK_SYSTEM) {
BuybackProcessor.processBuyback(c);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else {
if (!YamlConfig.config.server.USE_MTS) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if(chr.getEventInstance() != null) {
c.announce(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(5, "Entering Cash Shop or MTS are disabled when registered on an event."));
c.sendPacket(PacketCreator.enableActions());
return;
}
if(MapleMiniDungeonInfo.isDungeonMap(chr.getMapId())) {
c.announce(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(5, "Changing channels or entering Cash Shop or MTS are disabled when inside a Mini-Dungeon."));
c.sendPacket(PacketCreator.enableActions());
return;
}
if (FieldLimit.CANNOTMIGRATE.check(chr.getMap().getFieldLimit())) {
chr.dropMessage(1, "You can't do it here in this map.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (!chr.isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.getLevel() < 10) {
c.announce(PacketCreator.blockedMessage2(5));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.blockedMessage2(5));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -110,14 +110,14 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
c.getChannelServer().removePlayer(chr);
chr.getMap().removePlayer(c.getPlayer());
try {
c.announce(PacketCreator.openCashShop(c, true));
c.sendPacket(PacketCreator.openCashShop(c, true));
} catch (Exception ex) {
ex.printStackTrace();
}
chr.getCashShop().open(true);// xD
c.enableCSActions();
c.announce(PacketCreator.MTSWantedListingOver(0, 0));
c.announce(PacketCreator.showMTSCash(c.getPlayer()));
c.sendPacket(PacketCreator.MTSWantedListingOver(0, 0));
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
List<MTSItemInfo> items = new ArrayList<>();
int pages = 0;
try (Connection con = DatabaseConnection.getConnection()) {
@@ -171,9 +171,9 @@ public final class EnterMTSHandler extends AbstractMaplePacketHandler {
} catch (SQLException e) {
e.printStackTrace();
}
c.announce(PacketCreator.sendMTS(items, 1, 0, 0, pages));
c.announce(PacketCreator.transferInventory(getTransfer(chr.getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(chr.getId())));
c.sendPacket(PacketCreator.sendMTS(items, 1, 0, 0, pages));
c.sendPacket(PacketCreator.transferInventory(getTransfer(chr.getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(chr.getId())));
}
}

View File

@@ -45,26 +45,26 @@ public final class FamilyAddHandler extends AbstractMaplePacketHandler {
MapleCharacter addChr = c.getChannelServer().getPlayerStorage().getCharacterByName(toAdd);
MapleCharacter chr = c.getPlayer();
if(addChr == null) {
c.announce(PacketCreator.sendFamilyMessage(65, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(65, 0));
} else if(addChr == chr) { //only possible through packet editing/client editing i think?
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if(addChr.getMap() != chr.getMap() || (addChr.isHidden()) && chr.gmLevel() < addChr.gmLevel()) {
c.announce(PacketCreator.sendFamilyMessage(69, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(69, 0));
} else if(addChr.getLevel() <= 10) {
c.announce(PacketCreator.sendFamilyMessage(77, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(77, 0));
} else if(Math.abs(addChr.getLevel() - chr.getLevel()) > 20) {
c.announce(PacketCreator.sendFamilyMessage(72, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(72, 0));
} else if(addChr.getFamily() != null && addChr.getFamily() == chr.getFamily()) { //same family
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY, addChr.getId())) {
c.announce(PacketCreator.sendFamilyMessage(73, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(73, 0));
} else if(chr.getFamily() != null && addChr.getFamily() != null && addChr.getFamily().getTotalGenerations() + chr.getFamily().getTotalGenerations() > YamlConfig.config.server.FAMILY_MAX_GENERATIONS) {
c.announce(PacketCreator.sendFamilyMessage(76, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(76, 0));
} else {
MapleInviteCoordinator.createInvite(InviteType.FAMILY, chr, addChr, addChr.getId());
addChr.getClient().announce(PacketCreator.sendFamilyInvite(chr.getId(), chr.getName()));
addChr.getClient().sendPacket(PacketCreator.sendFamilyInvite(chr.getId(), chr.getName()));
chr.dropMessage("The invite has been sent.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}
}

View File

@@ -17,7 +17,7 @@ public class FamilyPreceptsHandler extends AbstractMaplePacketHandler {
if(newPrecepts.length() > 200) return;
family.setMessage(newPrecepts, true);
//family.broadcastFamilyInfoUpdate(); //probably don't need to broadcast for this?
c.announce(PacketCreator.getFamilyInfo(c.getPlayer().getFamilyEntry()));
c.sendPacket(PacketCreator.getFamilyInfo(c.getPlayer().getFamilyEntry()));
}
}

View File

@@ -52,7 +52,7 @@ public class FamilySeparateHandler extends AbstractMaplePacketHandler {
int cost = 2500 * levelDiff;
cost += levelDiff * levelDiff;
if(c.getPlayer().getMeso() < cost) {
c.announce(PacketCreator.sendFamilyMessage(isSenior ? 81 : 80, cost));
c.sendPacket(PacketCreator.sendFamilyMessage(isSenior ? 81 : 80, cost));
return;
}
c.getPlayer().gainMeso(-cost);
@@ -61,9 +61,9 @@ public class FamilySeparateHandler extends AbstractMaplePacketHandler {
if(senior.getSenior() != null) senior.getSenior().gainReputation(-(repCost/2), false);
forkOn.announceToSenior(PacketCreator.serverNotice(5, forkOn.getName() + " has left the family."), true);
forkOn.fork();
c.announce(PacketCreator.getFamilyInfo(forkOn)); //pedigree info will be requested from the client if the window is open
c.sendPacket(PacketCreator.getFamilyInfo(forkOn)); //pedigree info will be requested from the client if the window is open
forkOn.updateSeniorFamilyInfo(true);
c.announce(PacketCreator.sendFamilyMessage(1, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(1, 0));
}

View File

@@ -32,7 +32,7 @@ public class FamilySummonResponseHandler extends AbstractMaplePacketHandler {
} else {
inviterEntry.refundEntitlement(MapleFamilyEntitlement.SUMMON_FAMILY);
inviterEntry.gainReputation(MapleFamilyEntitlement.SUMMON_FAMILY.getRepCost(), false); //refund rep cost if declined
inviter.announce(PacketCreator.getFamilyInfo(inviterEntry));
inviter.sendPacket(PacketCreator.getFamilyInfo(inviterEntry));
inviter.dropMessage(5, c.getPlayer().getName() + " has denied the summon request.");
}
}

View File

@@ -51,7 +51,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler {
if(entry.getReputation() < cost || entry.isEntitlementUsed(type)) {
return; // shouldn't even be able to request it
}
c.announce(PacketCreator.getFamilyInfo(entry));
c.sendPacket(PacketCreator.getFamilyInfo(entry));
MapleCharacter victim;
if(type == MapleFamilyEntitlement.FAMILY_REUINION || type == MapleFamilyEntitlement.SUMMON_FAMILY) {
victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString());
@@ -67,7 +67,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler {
c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0));
useEntitlement(entry, type);
} else {
c.announce(PacketCreator.sendFamilyMessage(75, 0)); // wrong message, but close enough. (client should check this first anyway)
c.sendPacket(PacketCreator.sendFamilyMessage(75, 0)); // wrong message, but close enough. (client should check this first anyway)
return;
}
} else {
@@ -75,20 +75,20 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler {
&& (ownMap.getForcedReturnId() == 999999999 || ownMap.getId() < 100000000) && ownMap.getEventInstance() == null) {
if(MapleInviteCoordinator.hasInvite(InviteType.FAMILY_SUMMON, victim.getId())) {
c.announce(PacketCreator.sendFamilyMessage(74, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(74, 0));
return;
}
MapleInviteCoordinator.createInvite(InviteType.FAMILY_SUMMON, c.getPlayer(), victim, victim.getId(), c.getPlayer().getMap());
victim.announce(PacketCreator.sendFamilySummonRequest(c.getPlayer().getFamily().getName(), c.getPlayer().getName()));
victim.sendPacket(PacketCreator.sendFamilySummonRequest(c.getPlayer().getFamily().getName(), c.getPlayer().getName()));
useEntitlement(entry, type);
} else {
c.announce(PacketCreator.sendFamilyMessage(75, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(75, 0));
return;
}
}
}
} else {
c.announce(PacketCreator.sendFamilyMessage(67, 0));
c.sendPacket(PacketCreator.sendFamilyMessage(67, 0));
}
}
} else if(type == MapleFamilyEntitlement.FAMILY_BONDING) {
@@ -133,7 +133,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler {
private boolean useEntitlement(MapleFamilyEntry entry, MapleFamilyEntitlement entitlement) {
if(entry.useEntitlement(entitlement)) {
entry.gainReputation(-entitlement.getRepCost(), false);
entry.getChr().announce(PacketCreator.getFamilyInfo(entry));
entry.getChr().sendPacket(PacketCreator.getFamilyInfo(entry));
return true;
}
return false;

View File

@@ -40,7 +40,7 @@ public class FredrickHandler extends AbstractMaplePacketHandler {
switch (operation) {
case 0x19: //Will never come...
//c.announce(PacketCreator.getFredrick((byte) 0x24));
//c.sendPacket(PacketCreator.getFredrick((byte) 0x24));
break;
case 0x1A:
FredrickProcessor.fredrickRetrieveItems(c);

View File

@@ -38,7 +38,7 @@ public final class GeneralChatHandler extends AbstractMaplePacketHandler {
String s = slea.readMapleAsciiString();
MapleCharacter chr = c.getPlayer();
if(chr.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (s.length() > Byte.MAX_VALUE && !chr.isGM()) {

View File

@@ -57,7 +57,7 @@ public final class GiveFameHandler extends AbstractMaplePacketHandler {
player.message("Could not process the request, since this character currently has the minimum/maximum level of fame.");
}
} else {
c.announce(PacketCreator.giveFameErrorResponse(status == FameStatus.NOT_TODAY ? 3 : 4));
c.sendPacket(PacketCreator.giveFameErrorResponse(status == FameStatus.NOT_TODAY ? 3 : 4));
}
}
}

View File

@@ -28,6 +28,7 @@ import constants.game.GameConstants;
import net.AbstractMaplePacketHandler;
import net.server.Server;
import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType;
import net.server.guild.GuildPackets;
import net.server.guild.MapleAlliance;
import net.server.guild.MapleGuild;
import net.server.guild.MapleGuildResponse;
@@ -59,7 +60,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
int allianceId = -1;
switch (type) {
case 0x00:
//c.announce(PacketCreator.showGuildInfo(mc));
//c.sendPacket(PacketCreator.showGuildInfo(mc));
break;
case 0x02:
if (mc.getGuildId() > 0) {
@@ -109,7 +110,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
String targetName = slea.readMapleAsciiString();
MapleGuildResponse mgr = MapleGuild.sendInvitation(c, targetName);
if (mgr != null) {
c.announce(mgr.getPacket(targetName));
c.sendPacket(mgr.getPacket(targetName));
} else {} // already sent invitation, do nothing
break;
@@ -140,14 +141,14 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
return;
}
c.announce(PacketCreator.showGuildInfo(mc));
c.sendPacket(GuildPackets.showGuildInfo(mc));
allianceId = mc.getGuild().getAllianceId();
if(allianceId > 0) Server.getInstance().getAlliance(allianceId).updateAlliancePackets(mc);
mc.saveGuildStatus(); // update database
mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(mc.getId(), mc.getGuild().getName())); // thanks Vcoc for pointing out an issue with updating guild tooltip to players in the map
mc.getMap().broadcastMessage(mc, PacketCreator.guildMarkChanged(mc.getId(), mc.getGuild()));
mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(mc.getId(), mc.getGuild().getName())); // thanks Vcoc for pointing out an issue with updating guild tooltip to players in the map
mc.getMap().broadcastPacket(mc, GuildPackets.guildMarkChanged(mc.getId(), mc.getGuild()));
break;
case 0x07:
cid = slea.readInt();
@@ -159,16 +160,16 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
allianceId = mc.getGuild().getAllianceId();
c.announce(PacketCreator.updateGP(mc.getGuildId(), 0));
c.sendPacket(GuildPackets.updateGP(mc.getGuildId(), 0));
Server.getInstance().leaveGuild(mc.getMGC());
c.announce(PacketCreator.showGuildInfo(null));
c.sendPacket(GuildPackets.showGuildInfo(null));
if(allianceId > 0) Server.getInstance().getAlliance(allianceId).updateAlliancePackets(mc);
mc.getMGC().setGuildId(0);
mc.getMGC().setGuildRank(5);
mc.saveGuildStatus();
mc.getMap().broadcastMessage(mc, PacketCreator.guildNameChanged(mc.getId(), ""));
mc.getMap().broadcastPacket(mc, GuildPackets.guildNameChanged(mc.getId(), ""));
break;
case 0x08:
allianceId = mc.getGuild().getAllianceId();
@@ -213,7 +214,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
return;
}
if (mc.getMeso() < YamlConfig.config.server.CHANGE_EMBLEM_COST) {
c.announce(PacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem."));
c.sendPacket(PacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem."));
return;
}
short bg = slea.readShort();
@@ -224,7 +225,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
if (mc.getGuild() != null && mc.getGuild().getAllianceId() > 0) {
MapleAlliance alliance = mc.getAlliance();
Server.getInstance().allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, c.getWorld()), -1, -1);
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, c.getWorld()), -1, -1);
}
mc.gainMeso(-YamlConfig.config.server.CHANGE_EMBLEM_COST, true, false, true);

View File

@@ -53,11 +53,11 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler {
MaplePlayerShop shop = mc.getPlayerShop();
if (shop != null && shop.isOwner(mc)) {
chr.announce(PacketCreator.getMiniRoomError(13));
chr.sendPacket(PacketCreator.getMiniRoomError(13));
return;
}
} else {
chr.announce(PacketCreator.getMiniRoomError(13));
chr.sendPacket(PacketCreator.getMiniRoomError(13));
return;
}
}
@@ -65,7 +65,7 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler {
Point cpos = chr.getPosition();
MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos);
if (portal != null && portal.getPosition().distance(cpos) < 120.0) {
chr.announce(PacketCreator.getMiniRoomError(10));
chr.sendPacket(PacketCreator.getMiniRoomError(10));
return;
}
} catch (Exception e) {
@@ -76,9 +76,9 @@ public final class HiredMerchantRequest extends AbstractMaplePacketHandler {
if (!chr.hasMerchant()) {
try {
if (ItemFactory.MERCHANT.loadItems(chr.getId(), false).isEmpty() && chr.getMerchantMeso() == 0) {
c.announce(PacketCreator.hiredMerchantBox());
c.sendPacket(PacketCreator.hiredMerchantBox());
} else {
chr.announce(PacketCreator.retrieveFirstMessage());
chr.sendPacket(PacketCreator.retrieveFirstMessage());
}
} catch (SQLException ex) {
ex.printStackTrace();

View File

@@ -43,7 +43,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler {
chr.getAutobanManager().setTimestamp(2, Server.getInstance().getCurrentTimestamp(), 4);
if(!YamlConfig.config.server.USE_ITEM_SORT) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -106,7 +106,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler {
inventory.unlockInventory();
}
c.announce(PacketCreator.finishedSort(inventoryType.getType()));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.finishedSort(inventoryType.getType()));
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -267,7 +267,7 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler {
chr.getAutobanManager().setTimestamp(3, Server.getInstance().getCurrentTimestamp(), 4);
if(!YamlConfig.config.server.USE_ITEM_SORT) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -308,8 +308,8 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler {
inventory.unlockInventory();
}
c.announce(PacketCreator.modifyInventory(true, mods));
c.announce(PacketCreator.finishedSort2(invType));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.modifyInventory(true, mods));
c.sendPacket(PacketCreator.finishedSort2(invType));
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -37,7 +37,7 @@ public final class ItemMoveHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
slea.skip(4);
if(c.getPlayer().getAutobanManager().getLastSpam(6) + 300 > currentServerTime()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -54,7 +54,7 @@ public final class ItemRewardHandler extends AbstractMaplePacketHandler {
Pair<Integer, List<RewardItem>> rewards = ii.getItemReward(itemId);
for (RewardItem reward : rewards.getRight()) {
if (!MapleInventoryManipulator.checkSpace(c, reward.itemid, reward.quantity, "")) {
c.announce(PacketCreator.getShowInventoryFull());
c.sendPacket(PacketCreator.getShowInventoryFull());
break;
}
if (Randomizer.nextInt(rewards.getLeft()) < reward.prob) {//Is it even possible to get an item with prob 1?
@@ -77,6 +77,6 @@ public final class ItemRewardHandler extends AbstractMaplePacketHandler {
break;
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
*/
public class LeftKnockbackHandler extends AbstractMaplePacketHandler {
public void handlePacket(SeekableLittleEndianAccessor slea, final MapleClient c) {
c.announce(PacketCreator.leftKnockBack());
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.leftKnockBack());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -29,6 +29,7 @@ import client.inventory.MapleInventoryType;
import client.inventory.manipulator.MapleInventoryManipulator;
import constants.inventory.ItemConstants;
import net.AbstractMaplePacketHandler;
import net.packet.Packet;
import net.server.Server;
import net.server.channel.Channel;
import server.MTSItemInfo;
@@ -114,9 +115,9 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
if (rs.next()) {
if (rs.getInt(1) > 10) { //They have more than 10 items up for sale already!
c.getPlayer().dropMessage(1, "You already have 10 items up for auction!");
c.announce(getMTS(1, 0, 0));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(getMTS(1, 0, 0));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
rs.close();
ps.close();
return;
@@ -219,11 +220,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
e.printStackTrace();
}
c.getPlayer().gainMeso(-5000, false);
c.announce(PacketCreator.MTSConfirmSell());
c.announce(getMTS(1, 0, 0));
c.sendPacket(PacketCreator.MTSConfirmSell());
c.sendPacket(getMTS(1, 0, 0));
c.enableCSActions();
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
}
} else if (op == 3) { //send offer for wanted item
} else if (op == 4) { //list wanted item
@@ -238,18 +239,18 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
int page = slea.readInt();
c.getPlayer().changePage(page);
if (tab == 4 && type == 0) {
c.announce(getCart(c.getPlayer().getId()));
c.sendPacket(getCart(c.getPlayer().getId()));
} else if (tab == c.getPlayer().getCurrentTab() && type == c.getPlayer().getCurrentType() && c.getPlayer().getSearch() != null) {
c.announce(getMTSSearch(tab, type, c.getPlayer().getCurrentCI(), c.getPlayer().getSearch(), page));
c.sendPacket(getMTSSearch(tab, type, c.getPlayer().getCurrentCI(), c.getPlayer().getSearch(), page));
} else {
c.getPlayer().setSearch(null);
c.announce(getMTS(tab, type, page));
c.sendPacket(getMTS(tab, type, page));
}
c.getPlayer().changeTab(tab);
c.getPlayer().changeType(type);
c.enableCSActions();
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
} else if (op == 6) { //search
int tab = slea.readInt();
int type = slea.readInt();
@@ -261,11 +262,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
c.getPlayer().changeType(type);
c.getPlayer().changeCI(ci);
c.enableCSActions();
c.announce(PacketCreator.enableActions());
c.announce(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage()));
c.announce(PacketCreator.showMTSCash(c.getPlayer()));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.enableActions());
c.sendPacket(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage()));
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
} else if (op == 7) { //cancel sale
int id = slea.readInt(); //id of the item
Connection con = null;
@@ -285,9 +286,9 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
e.printStackTrace();
}
c.enableCSActions();
c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
} else if (op == 8) { //transfer item from transfer inv.
int id = slea.readInt(); //id of the item
Connection con = null;
@@ -344,10 +345,10 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
}
MapleInventoryManipulator.addFromDrop(c, i, false);
c.enableCSActions();
c.announce(getCart(c.getPlayer().getId()));
c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.announce(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition()));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(getCart(c.getPlayer().getId()));
c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.sendPacket(PacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition()));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
}
rs.close();
ps.close();
@@ -385,11 +386,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
} catch (SQLException e) {
e.printStackTrace();
}
c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.enableCSActions();
c.announce(PacketCreator.enableActions());
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.enableActions());
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
} else if (op == 10) { //delete from cart
int id = slea.readInt(); //id of the item
Connection con = null;
@@ -404,10 +405,10 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
} catch (SQLException e) {
e.printStackTrace();
}
c.announce(getCart(c.getPlayer().getId()));
c.sendPacket(getCart(c.getPlayer().getId()));
c.enableCSActions();
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
} else if (op == 12) { //put item up for auction
} else if (op == 13) { //cancel wanted cart thing
} else if (op == 14) { //buy auction item now
@@ -458,14 +459,14 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
pse.close();
c.getPlayer().getCashShop().gainCash(4, -price);
c.enableCSActions();
c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.announce(PacketCreator.MTSConfirmBuy());
c.announce(PacketCreator.showMTSCash(c.getPlayer()));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.announce(PacketCreator.enableActions());
c.sendPacket(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage()));
c.sendPacket(PacketCreator.MTSConfirmBuy());
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.enableActions());
} else {
c.announce(PacketCreator.MTSFailBuy());
c.sendPacket(PacketCreator.MTSFailBuy());
}
}
rs.close();
@@ -473,7 +474,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
con.close();
} catch (SQLException e) {
e.printStackTrace();
c.announce(PacketCreator.MTSFailBuy());
c.sendPacket(PacketCreator.MTSFailBuy());
}
} else if (op == 17) { //buy from cart
int id = slea.readInt(); //id of the item
@@ -518,14 +519,14 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
pse.executeUpdate();
pse.close();
c.getPlayer().getCashShop().gainCash(4, -price);
c.announce(getCart(c.getPlayer().getId()));
c.sendPacket(getCart(c.getPlayer().getId()));
c.enableCSActions();
c.announce(PacketCreator.MTSConfirmBuy());
c.announce(PacketCreator.showMTSCash(c.getPlayer()));
c.announce(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.announce(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
c.sendPacket(PacketCreator.MTSConfirmBuy());
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
} else {
c.announce(PacketCreator.MTSFailBuy());
c.sendPacket(PacketCreator.MTSFailBuy());
}
}
rs.close();
@@ -533,13 +534,13 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
con.close();
} catch (SQLException e) {
e.printStackTrace();
c.announce(PacketCreator.MTSFailBuy());
c.sendPacket(PacketCreator.MTSFailBuy());
}
} else {
System.out.println("Unhandled OP(MTS): " + op + " Packet: " + slea.toString());
}
} else {
c.announce(PacketCreator.showMTSCash(c.getPlayer()));
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
}
}
@@ -598,7 +599,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
return items;
}
public byte[] getCart(int cid) {
public Packet getCart(int cid) {
List<MTSItemInfo> items = new ArrayList<>();
Connection con = null;
PreparedStatement ps;
@@ -726,7 +727,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
return items;
}
private static byte[] getMTS(int tab, int type, int page) {
private static Packet getMTS(int tab, int type, int page) {
List<MTSItemInfo> items = new ArrayList<>();
Connection con = null;
PreparedStatement ps;
@@ -806,7 +807,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
return PacketCreator.sendMTS(items, tab, type, page, pages); // resniff
}
public byte[] getMTSSearch(int tab, int type, int cOi, String search, int page) {
public Packet getMTSSearch(int tab, int type, int cOi, String search, int page) {
List<MTSItemInfo> items = new ArrayList<>();
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
String listaitems = "";

View File

@@ -28,6 +28,7 @@ import constants.skills.Bishop;
import constants.skills.Evan;
import constants.skills.FPArchMage;
import constants.skills.ILArchMage;
import net.packet.Packet;
import server.MapleStatEffect;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
@@ -55,11 +56,11 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) {
chr.setDojoEnergy(chr.getDojoEnergy() + + YamlConfig.config.server.DOJO_ENERGY_ATK);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
}
int charge = (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) ? attack.charge : -1;
byte[] packet = PacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display);
Packet packet = PacketCreator.magicAttack(chr, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, charge, attack.speed, attack.direction, attack.display);
chr.getMap().broadcastMessage(chr, packet, false, true);
MapleStatEffect effect = attack.getAttackEffect(chr, null);
@@ -69,7 +70,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
if (chr.skillIsCooling(attack.skill)) {
return;
} else {
c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
}
}

View File

@@ -37,7 +37,7 @@ public final class MesoDropHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
MapleCharacter player = c.getPlayer();
if (!player.isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
slea.skip(4);
@@ -48,14 +48,14 @@ public final class MesoDropHandler extends AbstractMaplePacketHandler {
if (meso <= player.getMeso() && meso > 9 && meso < 50001) {
player.gainMeso(-meso, false, true, false);
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
} finally {
c.releaseClient();
}
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -82,30 +82,30 @@ public final class MessengerHandler extends AbstractMaplePacketHandler {
break;
case 0x03:
if (messenger == null) {
c.announce(PacketCreator.messengerChat(player.getName() + " : This Maple Messenger is currently unavailable. Please quit this chat."));
c.sendPacket(PacketCreator.messengerChat(player.getName() + " : This Maple Messenger is currently unavailable. Please quit this chat."));
} else if (messenger.getMembers().size() < 3) {
input = slea.readMapleAsciiString();
MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(input);
if (target != null) {
if (target.getMessenger() == null) {
if (MapleInviteCoordinator.createInvite(InviteType.MESSENGER, c.getPlayer(), messenger.getId(), target.getId())) {
target.getClient().announce(PacketCreator.messengerInvite(c.getPlayer().getName(), messenger.getId()));
c.announce(PacketCreator.messengerNote(input, 4, 1));
target.sendPacket(PacketCreator.messengerInvite(c.getPlayer().getName(), messenger.getId()));
c.sendPacket(PacketCreator.messengerNote(input, 4, 1));
} else {
c.announce(PacketCreator.messengerChat(player.getName() + " : " + input + " is already managing a Maple Messenger invitation"));
c.sendPacket(PacketCreator.messengerChat(player.getName() + " : " + input + " is already managing a Maple Messenger invitation"));
}
} else {
c.announce(PacketCreator.messengerChat(player.getName() + " : " + input + " is already using Maple Messenger"));
c.sendPacket(PacketCreator.messengerChat(player.getName() + " : " + input + " is already using Maple Messenger"));
}
} else {
if (world.find(input) > -1) {
world.messengerInvite(c.getPlayer().getName(), messenger.getId(), input, c.getChannel());
} else {
c.announce(PacketCreator.messengerNote(input, 4, 0));
c.sendPacket(PacketCreator.messengerNote(input, 4, 0));
}
}
} else {
c.announce(PacketCreator.messengerChat(player.getName() + " : You cannot have more than 3 people in the Maple Messenger"));
c.sendPacket(PacketCreator.messengerChat(player.getName() + " : You cannot have more than 3 people in the Maple Messenger"));
}
break;
case 0x05:

View File

@@ -84,6 +84,6 @@ public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandle
}
map.broadcastMessage(PacketCreator.MobDamageMobFriendly(monster, damage, remainingHp), monster.getPosition());
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -31,7 +31,7 @@ public final class MonsterBookCoverHandler extends AbstractMaplePacketHandler {
int id = slea.readInt();
if (id == 0 || id / 10000 == 238) {
c.getPlayer().setMonsterBookCover(id);
c.announce(PacketCreator.changeCover(id));
c.sendPacket(PacketCreator.changeCover(id));
}
}
}

View File

@@ -57,8 +57,8 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
if (tab == 0) {
final List<Pair<Integer, Integer>> mobs = c.getPlayer().getMap().getMobsToSpawn();
if (num >= mobs.size() || c.getPlayer().getCP() < mobs.get(num).right) {
c.announce(PacketCreator.CPQMessage((byte) 1));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.CPQMessage((byte) 1));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -66,8 +66,8 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
MonsterCarnival mcpq = c.getPlayer().getMonsterCarnival();
if (mcpq != null) {
if (!mcpq.canSummonR() && c.getPlayer().getTeam() == 0 || !mcpq.canSummonB() && c.getPlayer().getTeam() == 1) {
c.announce(PacketCreator.CPQMessage((byte) 2));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.CPQMessage((byte) 2));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -82,7 +82,7 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
c.getPlayer().getMap().addMonsterSpawn(mob, 1, c.getPlayer().getTeam());
c.getPlayer().getMap().addAllMonsterSpawn(mob, 1, c.getPlayer().getTeam());
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
neededCP = mobs.get(num).right;
@@ -90,13 +90,13 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
final List<Integer> skillid = c.getPlayer().getMap().getSkillIds();
if (num >= skillid.size()) {
c.getPlayer().dropMessage(5, "An unexpected error has occurred.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
final MCSkill skill = MapleCarnivalFactory.getInstance().getSkill(skillid.get(num)); //ugh wtf
if (skill == null || c.getPlayer().getCP() < skill.cpLoss) {
c.announce(PacketCreator.CPQMessage((byte) 1));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.CPQMessage((byte) 1));
c.sendPacket(PacketCreator.enableActions());
return;
}
final MapleDisease dis = skill.getDisease();
@@ -131,20 +131,20 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
}
}
neededCP = skill.cpLoss;
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (tab == 2) { //protectors
final MCSkill skill = MapleCarnivalFactory.getInstance().getGuardian(num);
if (skill == null || c.getPlayer().getCP() < skill.cpLoss) {
c.announce(PacketCreator.CPQMessage((byte) 1));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.CPQMessage((byte) 1));
c.sendPacket(PacketCreator.enableActions());
return;
}
MonsterCarnival mcpq = c.getPlayer().getMonsterCarnival();
if (mcpq != null) {
if (!mcpq.canGuardianR() && c.getPlayer().getTeam() == 0 || !mcpq.canGuardianB() && c.getPlayer().getTeam() == 1) {
c.announce(PacketCreator.CPQMessage((byte) 2));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.CPQMessage((byte) 2));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -152,17 +152,17 @@ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
if (success != 1) {
switch (success) {
case -1:
c.announce(PacketCreator.CPQMessage((byte) 3));
c.sendPacket(PacketCreator.CPQMessage((byte) 3));
break;
case 0:
c.announce(PacketCreator.CPQMessage((byte) 4));
c.sendPacket(PacketCreator.CPQMessage((byte) 4));
break;
default:
c.announce(PacketCreator.CPQMessage((byte) 3));
c.sendPacket(PacketCreator.CPQMessage((byte) 3));
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
} else {
neededCP = skill.cpLoss;

View File

@@ -45,7 +45,7 @@ public class MoveDragonHandler extends AbstractMovementPacketHandler {
slea.seek(movementDataStart);
if (chr.isHidden()) {
chr.getMap().broadcastGMMessage(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength));
chr.getMap().broadcastGMPacket(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength));
} else {
chr.getMap().broadcastMessage(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition());
}

View File

@@ -150,9 +150,9 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
if (aggro == null) return;
if (nextUse != null) {
c.announce(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel));
c.sendPacket(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro, nextSkillId, nextSkillLevel));
} else {
c.announce(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro));
c.sendPacket(PacketCreator.moveMonsterResponse(objectid, moveid, mobMp, aggro));
}

View File

@@ -24,8 +24,8 @@ package net.server.channel.handlers;
import client.MapleClient;
import net.AbstractMaplePacketHandler;
import net.opcodes.SendOpcode;
import net.packet.OutPacket;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.data.output.MaplePacketLittleEndianWriter;
public final class NPCAnimationHandler extends AbstractMaplePacketHandler {
@Override
@@ -33,20 +33,17 @@ public final class NPCAnimationHandler extends AbstractMaplePacketHandler {
if (c.getPlayer().isChangingMaps()) { // possible cause of error 38 in some map transition scenarios, thanks Arnah
return;
}
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
OutPacket p = OutPacket.create(SendOpcode.NPC_ACTION);
int length = (int) slea.available();
if (length == 6) { // NPC Talk
mplew.writeShort(SendOpcode.NPC_ACTION.getValue());
mplew.writeInt(slea.readInt());
mplew.write(slea.readByte()); // 2 bytes, thanks resinate
mplew.write(slea.readByte());
c.announce(mplew.getPacket());
p.writeInt(slea.readInt());
p.writeByte(slea.readByte()); // 2 bytes, thanks resinate
p.writeByte(slea.readByte());
} else if (length > 6) { // NPC Move
byte[] bytes = slea.read(length - 9);
mplew.writeShort(SendOpcode.NPC_ACTION.getValue());
mplew.write(bytes);
c.announce(mplew.getPacket());
p.writeBytes(bytes);
}
c.sendPacket(p);
}
}

View File

@@ -37,12 +37,12 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (!c.getPlayer().isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if(currentServerTime() - c.getPlayer().getNpcCooldown() < YamlConfig.config.server.BLOCK_NPC_RACE_CONDT) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -56,7 +56,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
DueyProcessor.dueySendTalk(c, false);
} else {
if (c.getCM() != null || c.getQM() != null) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -74,7 +74,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + npc.getName() + "(" + npc.getId() + ") is not coded.");
return;
} else if (c.getPlayer().getShop() != null) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -72,21 +72,21 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler {
Server.getInstance().setNewYearCard(newyear);
newyear.startNewYearCardTask();
player.announce(PacketCreator.onNewYearCardRes(player, newyear, 4, 0)); // successfully sent
player.sendPacket(PacketCreator.onNewYearCardRes(player, newyear, 4, 0)); // successfully sent
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0xF)); // cannot send to yourself
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0xF)); // cannot send to yourself
}
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x13)); // cannot find such character
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x13)); // cannot find such character
}
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full
}
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, status)); // item and inventory errors
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, status)); // item and inventory errors
}
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x11)); // have no card to send
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x11)); // have no card to send
}
} else { //receiver accepted the card
int cardid = slea.readInt();
@@ -103,7 +103,7 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler {
if(!newyear.getMessage().isEmpty()) player.dropMessage(6, "[New Year] " + newyear.getSenderName() + ": " + newyear.getMessage());
player.addNewYearRecord(newyear);
player.announce(PacketCreator.onNewYearCardRes(player, newyear, 6, 0)); // successfully rcvd
player.sendPacket(PacketCreator.onNewYearCardRes(player, newyear, 6, 0)); // successfully rcvd
player.getMap().broadcastMessage(PacketCreator.onNewYearCardRes(player, newyear, 0xD, 0));
@@ -113,7 +113,7 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler {
sender.dropMessage(6, "[New Year] Your addressee successfully received the New Year card.");
}
} else {
player.announce(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x10)); // inventory full
}
} else {
player.dropMessage(6, "[New Year] The sender of the New Year card already dropped it. Nothing to receive.");

View File

@@ -41,7 +41,7 @@ public final class NoteActionHandler extends AbstractMaplePacketHandler {
String message = slea.readMapleAsciiString();
try {
if (c.getPlayer().getCashShop().isOpened()) {
c.announce(PacketCreator.showCashInventory(c));
c.sendPacket(PacketCreator.showCashInventory(c));
}
c.getPlayer().sendNote(charname, message, (byte) 1);

View File

@@ -35,7 +35,7 @@ public final class OpenFamilyHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
MapleCharacter chr = c.getPlayer();
c.announce(PacketCreator.getFamilyInfo(chr.getFamilyEntry()));
c.sendPacket(PacketCreator.getFamilyInfo(chr.getFamilyEntry()));
}
}

View File

@@ -36,7 +36,7 @@ public final class OpenFamilyPedigreeHandler extends AbstractMaplePacketHandler
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString());
if(target != null && target.getFamily() != null) {
c.announce(PacketCreator.showPedigree(target.getFamilyEntry()));
c.sendPacket(PacketCreator.showPedigree(target.getFamilyEntry()));
}
}
}

View File

@@ -38,7 +38,7 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler {
int mapid = slea.readInt();
if(ownerid == c.getPlayer().getId()) {
c.announce(PacketCreator.serverNotice(1, "You cannot visit your own shop."));
c.sendPacket(PacketCreator.serverNotice(1, "You cannot visit your own shop."));
return;
}
@@ -47,8 +47,8 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler {
if(hm == null || hm.getMapId() != mapid || !hm.hasItem(c.getPlayer().getOwlSearch())) {
ps = c.getWorldServer().getPlayerShop(ownerid);
if(ps == null || ps.getMapId() != mapid || !ps.hasItem(c.getPlayer().getOwlSearch())) {
if(hm == null && ps == null) c.announce(PacketCreator.getOwlMessage(1));
else c.announce(PacketCreator.getOwlMessage(3));
if(hm == null && ps == null) c.sendPacket(PacketCreator.getOwlMessage(1));
else c.sendPacket(PacketCreator.getOwlMessage(3));
return;
}
@@ -59,22 +59,22 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler {
if(ps.isOpen()) { //change map has a delay, must double check
if(!ps.visitShop(c.getPlayer())) {
if(!ps.isBanned(c.getPlayer().getName())) c.announce(PacketCreator.getOwlMessage(2));
else c.announce(PacketCreator.getOwlMessage(17));
if(!ps.isBanned(c.getPlayer().getName())) c.sendPacket(PacketCreator.getOwlMessage(2));
else c.sendPacket(PacketCreator.getOwlMessage(17));
}
} else {
//c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.announce(PacketCreator.getOwlMessage(18));
//c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.sendPacket(PacketCreator.getOwlMessage(18));
}
} else {
c.announce(PacketCreator.serverNotice(1, "That shop is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
c.sendPacket(PacketCreator.serverNotice(1, "That shop is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
}
} else {
c.announce(PacketCreator.serverNotice(1, "That shop is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
c.sendPacket(PacketCreator.serverNotice(1, "That shop is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
}
} else {
//c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.announce(PacketCreator.getOwlMessage(18));
//c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.sendPacket(PacketCreator.getOwlMessage(18));
}
} else {
if(hm.isOpen()) {
@@ -84,25 +84,25 @@ public final class OwlWarpHandler extends AbstractMaplePacketHandler {
if(hm.isOpen()) { //change map has a delay, must double check
if(hm.addVisitor(c.getPlayer())) {
c.announce(PacketCreator.getHiredMerchant(c.getPlayer(), hm, false));
c.sendPacket(PacketCreator.getHiredMerchant(c.getPlayer(), hm, false));
c.getPlayer().setHiredMerchant(hm);
} else {
//c.announce(PacketCreator.serverNotice(1, hm.getOwner() + "'s merchant is full. Wait awhile before trying again."));
c.announce(PacketCreator.getOwlMessage(2));
//c.sendPacket(PacketCreator.serverNotice(1, hm.getOwner() + "'s merchant is full. Wait awhile before trying again."));
c.sendPacket(PacketCreator.getOwlMessage(2));
}
} else {
//c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.announce(PacketCreator.getOwlMessage(18));
//c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.sendPacket(PacketCreator.getOwlMessage(18));
}
} else {
c.announce(PacketCreator.serverNotice(1, "That merchant is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
c.sendPacket(PacketCreator.serverNotice(1, "That merchant is currently located in another channel. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
}
} else {
c.announce(PacketCreator.serverNotice(1, "That merchant is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
c.sendPacket(PacketCreator.serverNotice(1, "That merchant is currently located outside of the FM area. Current location: Channel " + hm.getChannel() + ", '" + hm.getMap().getMapName() + "'."));
}
} else {
//c.announce(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.announce(PacketCreator.getOwlMessage(18));
//c.sendPacket(PacketCreator.serverNotice(1, "That merchant has either been closed or is under maintenance."));
c.sendPacket(PacketCreator.getOwlMessage(18));
}
}
}

View File

@@ -69,7 +69,7 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
if (res == InviteResult.ACCEPTED) {
MapleParty.joinParty(player, partyid, false);
} else {
c.announce(PacketCreator.serverNotice(5, "You couldn't join the party due to an expired invitation request."));
c.sendPacket(PacketCreator.serverNotice(5, "You couldn't join the party due to an expired invitation request."));
}
break;
}
@@ -78,11 +78,11 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
MapleCharacter invited = world.getPlayerStorage().getCharacterByName(name);
if (invited != null) {
if(invited.getLevel() < 10 && (!YamlConfig.config.server.USE_PARTY_FOR_STARTERS || player.getLevel() >= 10)) { //min requirement is level 10
c.announce(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements."));
c.sendPacket(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements."));
return;
}
if(YamlConfig.config.server.USE_PARTY_FOR_STARTERS && invited.getLevel() >= 10 && player.getLevel() < 10) { //trying to invite high level
c.announce(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements."));
c.sendPacket(PacketCreator.serverNotice(5, "The player you have invited does not meet the requirements."));
return;
}
@@ -96,18 +96,18 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
}
if (party.getMembers().size() < 6) {
if (MapleInviteCoordinator.createInvite(InviteType.PARTY, player, party.getId(), invited.getId())) {
invited.getClient().announce(PacketCreator.partyInvite(player));
invited.sendPacket(PacketCreator.partyInvite(player));
} else {
c.announce(PacketCreator.partyStatusMessage(22, invited.getName()));
c.sendPacket(PacketCreator.partyStatusMessage(22, invited.getName()));
}
} else {
c.announce(PacketCreator.partyStatusMessage(17));
c.sendPacket(PacketCreator.partyStatusMessage(17));
}
} else {
c.announce(PacketCreator.partyStatusMessage(16));
c.sendPacket(PacketCreator.partyStatusMessage(16));
}
} else {
c.announce(PacketCreator.partyStatusMessage(19));
c.sendPacket(PacketCreator.partyStatusMessage(19));
}
break;
}

View File

@@ -44,19 +44,19 @@ public class PartySearchStartHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
if (min > max) {
chr.dropMessage(1, "The min. value is higher than the max!");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (max - min > 30) {
chr.dropMessage(1, "You can only search for party members within a range of 30 levels.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.getLevel() < min || chr.getLevel() > max) {
chr.dropMessage(1, "The range of level for search has to include your own level.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -41,14 +41,14 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
AutobanManager abm = chr.getAutobanManager();
if (abm.getLastSpam(2) + 500 > currentServerTime()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
abm.spam(2);
slea.readInt(); // timestamp issue detected thanks to Masterrulax
abm.setTimestamp(1, Server.getInstance().getCurrentTimestamp(), 3);
if (chr.getNoPets() == 0) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
int previousFullness = 100;

View File

@@ -44,7 +44,7 @@ public final class PetLootHandler extends AbstractMaplePacketHandler {
int petIndex = chr.getPetIndex(slea.readInt());
MaplePet pet = chr.getPet(petIndex);
if (pet == null || !pet.isSummoned()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -55,27 +55,27 @@ public final class PetLootHandler extends AbstractMaplePacketHandler {
MapleMapItem mapitem = (MapleMapItem) ob;
if (mapitem.getMeso() > 0) {
if (!chr.isEquippedMesoMagnet()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.isEquippedPetItemIgnore()) {
final Set<Integer> petIgnore = chr.getExcludedItems();
if(!petIgnore.isEmpty() && petIgnore.contains(Integer.MAX_VALUE)) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
}
} else {
if (!chr.isEquippedItemPouch()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (chr.isEquippedPetItemIgnore()) {
final Set<Integer> petIgnore = chr.getExcludedItems();
if(!petIgnore.isEmpty() && petIgnore.contains(mapitem.getItem().getItemId())) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
}
@@ -83,7 +83,7 @@ public final class PetLootHandler extends AbstractMaplePacketHandler {
chr.pickupItem(ob, petIndex);
} catch (NullPointerException | ClassCastException e) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}
}

View File

@@ -128,7 +128,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (!c.tryacquireClient()) { // thanks GabrielSin for pointing dupes within player interactions
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -138,7 +138,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if (mode == Action.CREATE.getCode()) {
if(!chr.isAlive()) { // thanks GabrielSin for pointing this
chr.getClient().announce(PacketCreator.getMiniRoomError(4));
chr.sendPacket(PacketCreator.getMiniRoomError(4));
return;
}
@@ -148,7 +148,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
} else if (createType == 1) { // omok mini game
int status = establishMiniroomStatus(chr, true);
if (status > 0) {
chr.getClient().announce(PacketCreator.getMiniRoomError(status));
chr.sendPacket(PacketCreator.getMiniRoomError(status));
return;
}
@@ -168,7 +168,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
type = 0;
}
if (!chr.haveItem(4080000 + type)) {
chr.getClient().announce(PacketCreator.getMiniRoomError(6));
chr.sendPacket(PacketCreator.getMiniRoomError(6));
return;
}
@@ -182,7 +182,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
} else if (createType == 2) { // matchcard
int status = establishMiniroomStatus(chr, true);
if (status > 0) {
chr.getClient().announce(PacketCreator.getMiniRoomError(status));
chr.sendPacket(PacketCreator.getMiniRoomError(status));
return;
}
@@ -202,7 +202,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
type = 0;
}
if (!chr.haveItem(4080100)) {
chr.getClient().announce(PacketCreator.getMiniRoomError(6));
chr.sendPacket(PacketCreator.getMiniRoomError(6));
return;
}
@@ -222,13 +222,13 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
game.sendMatchCard(c, type);
} else if (createType == 4 || createType == 5) { // shop
if(!GameConstants.isFreeMarketRoom(chr.getMapId())) {
chr.getClient().announce(PacketCreator.getMiniRoomError(15));
chr.sendPacket(PacketCreator.getMiniRoomError(15));
return;
}
int status = establishMiniroomStatus(chr, false);
if (status > 0) {
chr.getClient().announce(PacketCreator.getMiniRoomError(status));
chr.sendPacket(PacketCreator.getMiniRoomError(status));
return;
}
@@ -240,7 +240,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
slea.skip(3);
int itemId = slea.readInt();
if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) {
chr.getClient().announce(PacketCreator.getMiniRoomError(6));
chr.sendPacket(PacketCreator.getMiniRoomError(6));
return;
}
@@ -250,13 +250,13 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
chr.getMap().addMapObject(shop);
shop.sendShop(c);
c.getWorldServer().registerPlayerShop(shop);
//c.announce(PacketCreator.getPlayerShopRemoveVisitor(1));
//c.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(1));
} else if (ItemConstants.isHiredMerchant(itemId)) {
MapleHiredMerchant merchant = new MapleHiredMerchant(chr, desc, itemId);
chr.setHiredMerchant(merchant);
c.getWorldServer().registerHiredMerchant(merchant);
chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant);
chr.announce(PacketCreator.getHiredMerchant(chr, merchant, true));
chr.sendPacket(PacketCreator.getHiredMerchant(chr, merchant, true));
}
}
} else if (mode == Action.INVITE.getCode()) {
@@ -274,7 +274,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if (!chr.getTrade().isFullTrade() && !chr.getTrade().getPartner().isFullTrade()) {
MapleTrade.visitTrade(chr, chr.getTrade().getPartner().getChr());
} else {
chr.getClient().announce(PacketCreator.getMiniRoomError(2));
chr.sendPacket(PacketCreator.getMiniRoomError(2));
return;
}
} else {
@@ -303,10 +303,10 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
break;
}
} else {
chr.getClient().announce(PacketCreator.getMiniRoomError(2));
chr.sendPacket(PacketCreator.getMiniRoomError(2));
}
} else {
chr.getClient().announce(PacketCreator.getMiniRoomError(22));
chr.sendPacket(PacketCreator.getMiniRoomError(22));
}
} else if (ob instanceof MapleHiredMerchant && chr.getHiredMerchant() == null) {
MapleHiredMerchant merchant = (MapleHiredMerchant) ob;
@@ -347,11 +347,11 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
slea.readShort();
int birthday = slea.readInt();
if (!CashOperationHandler.checkBirthday(c, birthday)) { // birthday check here found thanks to lucasziron
c.announce(PacketCreator.serverNotice(1, "Please check again the birthday date."));
c.sendPacket(PacketCreator.serverNotice(1, "Please check again the birthday date."));
return;
}
c.announce(PacketCreator.hiredMerchantOwnerMaintenanceLeave());
c.sendPacket(PacketCreator.hiredMerchantOwnerMaintenanceLeave());
}
if (!canPlaceStore(chr)) { // thanks Ari for noticing player shops overlapping on opening time
@@ -453,7 +453,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if (game.isOwner(chr)) {
game.broadcastToVisitor(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn));
} else {
game.getOwner().getClient().announce(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn));
game.getOwner().sendPacket(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn));
}
} else if ((game.getCardId(firstslot)) == (game.getCardId(slot))) {
if (game.isOwner(chr)) {
@@ -480,30 +480,30 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if (targetSlot < 1 || targetSlot > 9) {
System.out.println("[Hack] " + chr.getName() + " Trying to dupe on trade slot.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (item == null) {
c.announce(PacketCreator.serverNotice(1, "Invalid item description."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "Invalid item description."));
c.sendPacket(PacketCreator.enableActions());
return;
}
if (ii.isUnmerchable(item.getItemId())) {
if (ItemConstants.isPet(item.getItemId())) {
c.announce(PacketCreator.serverNotice(1, "Pets are not allowed to be traded."));
c.sendPacket(PacketCreator.serverNotice(1, "Pets are not allowed to be traded."));
} else {
c.announce(PacketCreator.serverNotice(1, "Cash items are not allowed to be traded."));
c.sendPacket(PacketCreator.serverNotice(1, "Cash items are not allowed to be traded."));
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if (quantity < 1 || quantity > item.getQuantity()) {
c.announce(PacketCreator.serverNotice(1, "You don't have enough quantity of the item."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "You don't have enough quantity of the item."));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -512,8 +512,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargeable(item.getItemId())) {
if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window
if (!MapleKarmaManipulator.hasKarmaFlag(item)) {
c.announce(PacketCreator.serverNotice(1, "That item is untradeable."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "That item is untradeable."));
c.sendPacket(PacketCreator.enableActions());
return;
}
}
@@ -523,8 +523,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
try {
Item checkItem = chr.getInventory(ivType).getItem(pos);
if (checkItem != item || checkItem.getPosition() != item.getPosition()) {
c.announce(PacketCreator.serverNotice(1, "Invalid item description."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "Invalid item description."));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -539,9 +539,9 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if (trade.addItem(tradeItem)) {
MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), quantity, true);
trade.getChr().announce(PacketCreator.getTradeItemAdd((byte) 0, tradeItem));
trade.getChr().sendPacket(PacketCreator.getTradeItemAdd((byte) 0, tradeItem));
if (trade.getPartner() != null) {
trade.getPartner().getChr().announce(PacketCreator.getTradeItemAdd((byte) 1, tradeItem));
trade.getPartner().getChr().sendPacket(PacketCreator.getTradeItemAdd((byte) 1, tradeItem));
}
}
} catch (Exception e) {
@@ -562,17 +562,17 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
Item ivItem = chr.getInventory(ivType).getItem(slot);
if (ivItem == null || ivItem.isUntradeable()) {
c.announce(PacketCreator.serverNotice(1, "Could not perform shop operation with that item."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "Could not perform shop operation with that item."));
c.sendPacket(PacketCreator.enableActions());
return;
} else if (MapleItemInformationProvider.getInstance().isUnmerchable(ivItem.getItemId())) {
if (ItemConstants.isPet(ivItem.getItemId())) {
c.announce(PacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store."));
c.sendPacket(PacketCreator.serverNotice(1, "Pets are not allowed to be sold on the Player Store."));
} else {
c.announce(PacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store."));
c.sendPacket(PacketCreator.serverNotice(1, "Cash items are not allowed to be sold on the Player Store."));
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -582,8 +582,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
perBundle = 1;
bundles = 1;
} else if (ivItem.getQuantity() < (bundles * perBundle)) { // thanks GabrielSin for finding a dupe here
c.announce(PacketCreator.serverNotice(1, "Could not perform shop operation with that item."));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.serverNotice(1, "Could not perform shop operation with that item."));
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -604,7 +604,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MapleHiredMerchant merchant = chr.getHiredMerchant();
if (shop != null && shop.isOwner(chr)) {
if (shop.isOpen() || !shop.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots
c.announce(PacketCreator.serverNotice(1, "You can't sell it anymore."));
c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore."));
return;
}
@@ -614,15 +614,15 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true);
}
c.announce(PacketCreator.getPlayerShopItemUpdate(shop));
c.sendPacket(PacketCreator.getPlayerShopItemUpdate(shop));
} else if (merchant != null && merchant.isOwner(chr)) {
if (ivType.equals(MapleInventoryType.CASH) && merchant.isPublished()) {
c.announce(PacketCreator.serverNotice(1, "Cash items are only allowed to be sold when first opening the store."));
c.sendPacket(PacketCreator.serverNotice(1, "Cash items are only allowed to be sold when first opening the store."));
return;
}
if (merchant.isOpen() || !merchant.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots
c.announce(PacketCreator.serverNotice(1, "You can't sell it anymore."));
c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore."));
return;
}
@@ -632,7 +632,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeFromSlot(c, ivType, slot, (short) (bundles * perBundle), true);
}
c.announce(PacketCreator.updateHiredMerchant(merchant, chr));
c.sendPacket(PacketCreator.updateHiredMerchant(merchant, chr));
if (YamlConfig.config.server.USE_ENFORCE_MERCHANT_SAVE) {
chr.saveCharToDB(false);
@@ -644,7 +644,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
ex.printStackTrace();
}
} else {
c.announce(PacketCreator.serverNotice(1, "You can't sell without owning a shop."));
c.sendPacket(PacketCreator.serverNotice(1, "You can't sell without owning a shop."));
}
} else if (mode == Action.REMOVE_ITEM.getCode()) {
if (isTradeOpen(chr)) return;
@@ -652,7 +652,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MaplePlayerShop shop = chr.getPlayerShop();
if (shop != null && shop.isOwner(chr)) {
if (shop.isOpen()) {
c.announce(PacketCreator.serverNotice(1, "You can't take it with the store open."));
c.sendPacket(PacketCreator.serverNotice(1, "You can't take it with the store open."));
return;
}
@@ -682,7 +682,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
merchant.closeOwnerMerchant(chr);
return;
}
c.announce(PacketCreator.updateHiredMerchant(merchant, chr));
c.sendPacket(PacketCreator.updateHiredMerchant(merchant, chr));
} else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) {
if (isTradeOpen(chr)) return;
@@ -711,7 +711,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MapleHiredMerchant merchant = chr.getHiredMerchant();
if (merchant != null && merchant.isOwner(chr)) {
if (merchant.isOpen()) {
c.announce(PacketCreator.serverNotice(1, "You can't take it with the store open."));
c.sendPacket(PacketCreator.serverNotice(1, "You can't take it with the store open."));
return;
}
@@ -749,7 +749,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
}
chr.setHiredMerchant(null);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (mode == Action.BAN_PLAYER.getCode()) {
slea.skip(1);
@@ -764,7 +764,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
if(visitor != null) {
visitor.closeMiniGame(false);
visitor.announce(PacketCreator.getMiniGameClose(true, 5));
visitor.sendPacket(PacketCreator.getMiniGameClose(true, 5));
}
}
} else if (mode == Action.EXIT_AFTER_GAME.getCode()) {
@@ -786,7 +786,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
private static boolean isTradeOpen(MapleCharacter chr) {
if (chr.getTrade() != null) { // thanks to Rien dev team
//Apparently there is a dupe exploit that causes racing conditions when saving/retrieving from the db with stuff like trade open.
chr.announce(PacketCreator.enableActions());
chr.sendPacket(PacketCreator.enableActions());
return true;
}
@@ -804,11 +804,11 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
MaplePlayerShop shop = mc.getPlayerShop();
if (shop != null && shop.isOwner(mc)) {
chr.announce(PacketCreator.getMiniRoomError(13));
chr.sendPacket(PacketCreator.getMiniRoomError(13));
return false;
}
} else {
chr.announce(PacketCreator.getMiniRoomError(13));
chr.sendPacket(PacketCreator.getMiniRoomError(13));
return false;
}
}
@@ -816,7 +816,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
Point cpos = chr.getPosition();
MaplePortal portal = chr.getMap().findClosestTeleportPortal(cpos);
if (portal != null && portal.getPosition().distance(cpos) < 120.0) {
chr.announce(PacketCreator.getMiniRoomError(10));
chr.sendPacket(PacketCreator.getMiniRoomError(10));
return false;
}
} catch (Exception e) {

View File

@@ -34,6 +34,7 @@ import net.server.channel.CharacterIdChannelPair;
import net.server.coordinator.session.Hwid;
import net.server.coordinator.session.SessionCoordinator;
import net.server.coordinator.world.MapleEventRecallCoordinator;
import net.server.guild.GuildPackets;
import net.server.guild.MapleAlliance;
import net.server.guild.MapleGuild;
import net.server.world.MaplePartyCharacter;
@@ -46,7 +47,7 @@ import tools.FilePrinter;
import tools.PacketCreator;
import tools.Pair;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.packets.Wedding;
import tools.packets.WeddingPackets;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -89,7 +90,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
if (!c.tryacquireClient()) {
// thanks MedicOP for assisting on concurrency protection here
c.announce(PacketCreator.getAfterLoginError(10));
c.sendPacket(PacketCreator.getAfterLoginError(10));
}
try {
@@ -176,7 +177,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
if (state == MapleClient.LOGIN_LOGGEDIN) {
c.disconnect(true, false);
} else {
c.announce(PacketCreator.getAfterLoginError(7));
c.sendPacket(PacketCreator.getAfterLoginError(7));
}
return;
@@ -188,7 +189,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
} else {
c.setPlayer(null);
c.setAccID(0);
c.announce(PacketCreator.getAfterLoginError(10));
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
@@ -213,7 +214,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
player.silentApplyDiseases(diseases);
}
c.announce(PacketCreator.getCharInfo(player));
c.sendPacket(PacketCreator.getCharInfo(player));
if (!player.isHidden()) {
if (player.isGM() && YamlConfig.config.server.USE_AUTOHIDE_GM) {
player.toggleHide(true);
@@ -225,10 +226,10 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
// pot bindings being passed through other characters on the account detected thanks to Croosade dev team
MapleKeyBinding autohpPot = player.getKeymap().get(91);
player.announce(PacketCreator.sendAutoHpPot(autohpPot != null ? autohpPot.getAction() : 0));
player.sendPacket(PacketCreator.sendAutoHpPot(autohpPot != null ? autohpPot.getAction() : 0));
MapleKeyBinding autompPot = player.getKeymap().get(92);
player.announce(PacketCreator.sendAutoMpPot(autompPot != null ? autompPot.getAction() : 0));
player.sendPacket(PacketCreator.sendAutoMpPot(autompPot != null ? autompPot.getAction() : 0));
player.getMap().addPlayer(player);
player.visitMap(player.getMap());
@@ -241,9 +242,9 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
ble.setChannel(onlineBuddy.getChannel());
bl.put(ble);
}
c.announce(PacketCreator.updateBuddylist(bl.getBuddies()));
c.sendPacket(PacketCreator.updateBuddylist(bl.getBuddies()));
c.announce(PacketCreator.loadFamily(player));
c.sendPacket(PacketCreator.loadFamily(player));
if (player.getFamilyId() > 0) {
MapleFamily f = wserv.getFamily(player.getFamilyId());
if (f != null) {
@@ -252,17 +253,17 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
familyEntry.setCharacter(player);
player.setFamilyEntry(familyEntry);
c.announce(PacketCreator.getFamilyInfo(familyEntry));
c.sendPacket(PacketCreator.getFamilyInfo(familyEntry));
familyEntry.announceToSenior(PacketCreator.sendFamilyLoginNotice(player.getName(), true), true);
} else {
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")");
}
} else {
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")");
c.announce(PacketCreator.getFamilyInfo(null));
c.sendPacket(PacketCreator.getFamilyInfo(null));
}
} else {
c.announce(PacketCreator.getFamilyInfo(null));
c.sendPacket(PacketCreator.getFamilyInfo(null));
}
if (player.getGuildId() > 0) {
@@ -275,7 +276,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
playerGuild.getMGC(player.getId()).setCharacter(player);
player.setMGC(playerGuild.getMGC(player.getId()));
server.setGuildMemberOnline(player, true, c.getChannel());
c.announce(PacketCreator.showGuildInfo(player));
c.sendPacket(GuildPackets.showGuildInfo(player));
int allianceId = player.getGuild().getAllianceId();
if (allianceId > 0) {
MapleAlliance newAlliance = server.getAlliance(allianceId);
@@ -288,11 +289,11 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
}
}
if (newAlliance != null) {
c.announce(PacketCreator.updateAllianceInfo(newAlliance, c.getWorld()));
c.announce(PacketCreator.allianceNotice(newAlliance.getId(), newAlliance.getNotice()));
c.sendPacket(GuildPackets.updateAllianceInfo(newAlliance, c.getWorld()));
c.sendPacket(GuildPackets.allianceNotice(newAlliance.getId(), newAlliance.getNotice()));
if (newcomer) {
server.allianceMessage(allianceId, PacketCreator.allianceMemberOnline(player, true), player.getId(), -1);
server.allianceMessage(allianceId, GuildPackets.allianceMemberOnline(player, true), player.getId(), -1);
}
}
}
@@ -304,7 +305,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
MaplePartyCharacter pchar = player.getMPC();
//Use this in case of enabling party HPbar HUD when logging in, however "you created a party" will appear on chat.
//c.announce(PacketCreator.partyCreated(pchar));
//c.sendPacket(PacketCreator.partyCreated(pchar));
pchar.setChannel(c.getChannel());
pchar.setMapId(player.getMapId());
@@ -323,16 +324,16 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
eqpInv.unlockInventory();
}
c.announce(PacketCreator.updateBuddylist(player.getBuddylist().getBuddies()));
c.sendPacket(PacketCreator.updateBuddylist(player.getBuddylist().getBuddies()));
CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest();
if (pendingBuddyRequest != null) {
c.announce(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName()));
c.sendPacket(PacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName()));
}
c.announce(PacketCreator.updateGender(player));
c.sendPacket(PacketCreator.updateGender(player));
player.checkMessenger();
c.announce(PacketCreator.enableReport());
c.sendPacket(PacketCreator.enableReport());
player.changeSkillLevel(SkillFactory.getSkill(10000000 * player.getJobType() + 12), (byte) (player.getLinkedLevel() / 10), 20, -1);
player.checkBerserk(player.isHidden());
@@ -345,14 +346,14 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
MapleMount mount = player.getMount(); // thanks Ari for noticing a scenario where Silver Mane quest couldn't be started
if (mount.getItemId() != 0) {
player.announce(PacketCreator.updateMount(player.getId(), mount, false));
player.sendPacket(PacketCreator.updateMount(player.getId(), mount, false));
}
player.reloadQuestExpirations();
/*
if (!c.hasVotedAlready()){
player.announce(PacketCreator.earnTitleMessage("You can vote now! Vote and earn a vote point!"));
player.sendPacket(PacketCreator.earnTitleMessage("You can vote now! Vote and earn a vote point!"));
}
*/
if (player.isGM()) {
@@ -362,7 +363,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
if (diseases != null) {
for (Entry<MapleDisease, Pair<Long, MobSkill>> e : diseases.entrySet()) {
final List<Pair<MapleDisease, Integer>> debuff = Collections.singletonList(new Pair<>(e.getKey(), e.getValue().getRight().getX()));
c.announce(PacketCreator.giveDebuff(debuff, e.getValue().getRight()));
c.sendPacket(PacketCreator.giveDebuff(debuff, e.getValue().getRight()));
}
}
} else {
@@ -400,8 +401,8 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
final MapleCharacter partner = wserv.getPlayerStorage().getCharacterById(partnerId);
if (partner != null && !partner.isAwayFromWorld()) {
player.announce(Wedding.OnNotifyWeddingPartnerTransfer(partnerId, partner.getMapId()));
partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(player.getId(), player.getMapId()));
player.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(partnerId, partner.getMapId()));
partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(player.getId(), player.getMapId()));
}
}
@@ -449,7 +450,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
ps2.setInt(1, player.getId());
ps2.executeUpdate();
c.announce(PacketCreator.sendDueyParcelNotification(rs.getInt("Type") == 1));
c.sendPacket(PacketCreator.sendDueyParcelNotification(rs.getInt("Type") == 1));
}
}
}

View File

@@ -49,7 +49,7 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler
chr.cancelBuffStats(MapleBuffStat.HOMING_BEACON);
final List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, 0));
chr.announce(PacketCreator.giveBuff(1, beaconid, stat));
chr.sendPacket(PacketCreator.giveBuff(1, beaconid, stat));
}
if (!chr.isHidden()) { // thanks Lame (Conrad) for noticing hidden characters controlling mobs
@@ -57,7 +57,7 @@ public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler
MapleMonster m = (MapleMonster) mo;
if (m.getSpawnEffect() == 0 || m.getHp() < m.getMaxHp()) { // avoid effect-spawning mobs
if (m.getController() == chr) {
c.announce(PacketCreator.stopControllingMonster(m.getObjectId()));
c.sendPacket(PacketCreator.stopControllingMonster(m.getObjectId()));
m.sendDestroyData(c);
m.aggroRemoveController();
} else {

View File

@@ -37,29 +37,29 @@ public final class RPSActionHandler extends AbstractMaplePacketHandler{
if(chr.getMeso() >= 1000){
chr.setRPS(new MapleRockPaperScissor(c, mode));
}else{
c.announce(PacketCreator.rpsMesoError(-1));
c.sendPacket(PacketCreator.rpsMesoError(-1));
}
break;
case 1: // answer
if(rps == null || !rps.answer(c, slea.readByte())){
c.announce(PacketCreator.rpsMode((byte) 0x0D));// 13
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));// 13
}
break;
case 2: // time over
if(rps == null || !rps.timeOut(c)){
c.announce(PacketCreator.rpsMode((byte) 0x0D));
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
}
break;
case 3: // continue
if(rps == null || !rps.nextRound(c)){
c.announce(PacketCreator.rpsMode((byte) 0x0D));
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
}
break;
case 4: // leave
if(rps != null){
rps.dispose(c);
}else{
c.announce(PacketCreator.rpsMode((byte) 0x0D));
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
}
break;
}

View File

@@ -42,7 +42,7 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
MapleQuest quest = MapleQuest.getInstanceFromInfoNumber(infoNumber);
if (!chr.getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED)) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -64,7 +64,7 @@ public class RaiseIncExpHandler extends AbstractMaplePacketHandler {
int nextValue = Math.min(consumables.get(consId) + c.getAbstractPlayerInteraction().getQuestProgressInt(questid, infoNumber), consItem.exp * consItem.grade);
c.getAbstractPlayerInteraction().setQuestProgress(questid, infoNumber, nextValue);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} finally {
c.releaseClient();
}

View File

@@ -31,6 +31,7 @@ import config.YamlConfig;
import constants.game.GameConstants;
import constants.inventory.ItemConstants;
import constants.skills.*;
import net.packet.Packet;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import tools.PacketCreator;
@@ -62,7 +63,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) {
chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
}
if (attack.skill == Buccaneer.ENERGY_ORB || attack.skill == ThunderBreaker.SPARK || attack.skill == Shadower.TAUNT || attack.skill == NightLord.TAUNT) {
@@ -101,7 +102,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
effect = attack.getAttackEffect(chr, null);
bulletCount = effect.getBulletCount();
if (effect.getCooldown() > 0) {
c.announce(PacketCreator.skillCooldown(attack.skill, effect.getCooldown()));
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect.getCooldown()));
}
if(attack.skill == 4111004) { // shadow meso
@@ -187,7 +188,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
visProjectile = 0;
}
byte[] packet;
final Packet packet;
switch (attack.skill) {
case 3121004: // Hurricane
case 3221001: // Pierce
@@ -208,7 +209,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler {
if (chr.skillIsCooling(attack.skill)) {
return;
} else {
c.announce(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
c.sendPacket(PacketCreator.skillCooldown(attack.skill, effect_.getCooldown()));
chr.addCooldown(attack.skill, currentServerTime(), effect_.getCooldown() * 1000);
}
}

View File

@@ -42,13 +42,13 @@ public class RemoteStoreHandler extends AbstractMaplePacketHandler {
if (hm.getChannel() == chr.getClient().getChannel()) {
hm.visitShop(chr);
} else {
c.announce(PacketCreator.remoteChannelChange((byte) (hm.getChannel() - 1)));
c.sendPacket(PacketCreator.remoteChannelChange((byte) (hm.getChannel() - 1)));
}
return;
} else {
chr.dropMessage(1, "You don't have a Merchant open.");
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
private static MapleHiredMerchant getMerchant(MapleClient c) {

View File

@@ -51,11 +51,11 @@ public final class ReportHandler extends AbstractMaplePacketHandler {
c.getPlayer().decreaseReports();
c.getPlayer().gainMeso(-300, true);
} else {
c.announce(PacketCreator.reportResponse((byte) 4));
c.sendPacket(PacketCreator.reportResponse((byte) 4));
return;
}
} else {
c.announce(PacketCreator.reportResponse((byte) 2));
c.sendPacket(PacketCreator.reportResponse((byte) 2));
return;
}
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(6, victim + " was reported for: " + description));
@@ -70,7 +70,7 @@ public final class ReportHandler extends AbstractMaplePacketHandler {
c.getPlayer().decreaseReports();
c.getPlayer().gainMeso(-300, true);
} else {
c.announce(PacketCreator.reportResponse((byte) 4));
c.sendPacket(PacketCreator.reportResponse((byte) 4));
return;
}
}

View File

@@ -38,7 +38,7 @@ import tools.DatabaseConnection;
import tools.PacketCreator;
import tools.Pair;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.packets.Wedding;
import tools.packets.WeddingPackets;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -63,71 +63,71 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
// TODO: get the correct packet bytes for these popups
if (source.isMarried()) {
source.dropMessage(1, "You're already married!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (source.getPartnerId() > 0) {
source.dropMessage(1, "You're already engaged!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (source.getMarriageItemId() > 0) {
source.dropMessage(1, "You're already engaging someone!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target == null) {
source.dropMessage(1, "Unable to find " + name + " on this channel.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target == source) {
source.dropMessage(1, "You can't engage yourself.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if(target.getLevel() < 50) {
source.dropMessage(1, "You can only propose to someone level 50 or higher.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if(source.getLevel() < 50) {
source.dropMessage(1, "You can only propose being level 50 or higher.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (!target.getMap().equals(source.getMap())) {
source.dropMessage(1, "Make sure your partner is on the same map!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (!source.haveItem(itemid) || itemid < 2240000 || itemid > 2240015) {
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target.isMarried()) {
source.dropMessage(1, "The player is already married!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target.getPartnerId() > 0 || target.getMarriageItemId() > 0) {
source.dropMessage(1, "The player is already engaged!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target.haveWeddingRing()) {
source.dropMessage(1, "The player already holds a marriage ring...");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (source.haveWeddingRing()) {
source.dropMessage(1, "You can't propose while holding a marriage ring!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (target.getGender() == source.getGender()) {
source.dropMessage(1, "You may only propose to a " + (source.getGender() == 1 ? "male" : "female") + "!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (!MapleInventoryManipulator.checkSpace(c, newBoxId, 1, "")) {
source.dropMessage(5, "You don't have a ETC slot available right now!");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
} else if (!MapleInventoryManipulator.checkSpace(target.getClient(), newBoxId + 1, 1, "")) {
source.dropMessage(5, "The girl you proposed doesn't have a ETC slot available right now.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
return;
}
source.setMarriageItemId(itemid);
target.announce(Wedding.OnMarriageRequest(source.getName(), source.getId()));
target.sendPacket(WeddingPackets.onMarriageRequest(source.getName(), source.getId()));
}
private static void eraseEngagementOffline(int characterId) {
@@ -184,8 +184,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
} else {
partner.dropMessage(5, chr.getName() + " has decided to break up the marriage.");
//partner.announce(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc?
partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0));
//partner.sendPacket(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc?
partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0));
resetRingId(partner);
partner.setPartnerId(-1);
partner.setMarriageItemId(-1);
@@ -194,8 +194,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
chr.dropMessage(5, "You have successfully break the marriage with " + MapleCharacter.getNameById(partnerid) + ".");
//chr.announce(Wedding.OnMarriageResult((byte) 0));
chr.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0));
//chr.sendPacket(Wedding.OnMarriageResult((byte) 0));
chr.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0));
resetRingId(chr);
chr.setPartnerId(-1);
chr.setMarriageItemId(-1);
@@ -233,8 +233,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(partner.getClient(), MapleInventoryType.ETC, partnerMarriageitemid, (short) 1, false, false);
}
//partner.announce(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc?
partner.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0));
//partner.sendPacket(Wedding.OnMarriageResult((byte) 0)); ok, how to gracefully unengage someone without the need to cc?
partner.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0));
partner.setPartnerId(-1);
partner.setMarriageItemId(-1);
}
@@ -244,8 +244,8 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
}
chr.dropMessage(5, "You have successfully break the engagement with " + MapleCharacter.getNameById(partnerid) + ".");
//chr.announce(Wedding.OnMarriageResult((byte) 0));
chr.announce(Wedding.OnNotifyWeddingPartnerTransfer(0, 0));
//chr.sendPacket(Wedding.OnMarriageResult((byte) 0));
chr.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(0, 0));
chr.setPartnerId(-1);
chr.setMarriageItemId(-1);
}
@@ -315,20 +315,20 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
final MapleCharacter target = c.getPlayer();
if (source == null) {
target.announce(PacketCreator.enableActions());
target.sendPacket(PacketCreator.enableActions());
return;
}
final int itemid = source.getMarriageItemId();
if (target.getPartnerId() > 0 || source.getId() != id || itemid <= 0 || !source.haveItem(itemid) || source.getPartnerId() > 0 || !source.isAlive() || !target.isAlive()) {
target.announce(PacketCreator.enableActions());
target.sendPacket(PacketCreator.enableActions());
return;
}
if (accepted) {
final int newItemId = getBoxId(itemid);
if (!MapleInventoryManipulator.checkSpace(c, newItemId, 1, "") || !MapleInventoryManipulator.checkSpace(source.getClient(), newItemId, 1, "")) {
target.announce(PacketCreator.enableActions());
target.sendPacket(PacketCreator.enableActions());
return;
}
@@ -345,17 +345,17 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.addById(source.getClient(), newItemId, (short) 1);
MapleInventoryManipulator.addById(c, (newItemId + 1), (short) 1);
source.announce(Wedding.OnMarriageResult(marriageId, source, false));
target.announce(Wedding.OnMarriageResult(marriageId, source, false));
source.sendPacket(WeddingPackets.OnMarriageResult(marriageId, source, false));
target.sendPacket(WeddingPackets.OnMarriageResult(marriageId, source, false));
source.announce(Wedding.OnNotifyWeddingPartnerTransfer(target.getId(), target.getMapId()));
target.announce(Wedding.OnNotifyWeddingPartnerTransfer(source.getId(), source.getMapId()));
source.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(target.getId(), target.getMapId()));
target.sendPacket(WeddingPackets.OnNotifyWeddingPartnerTransfer(source.getId(), source.getMapId()));
} catch (Exception e) {
System.out.println("Error with engagement " + e.getMessage());
}
} else {
source.dropMessage(1, "She has politely declined your engagement request.");
source.announce(Wedding.OnMarriageResult((byte) 0));
source.sendPacket(WeddingPackets.OnMarriageResult((byte) 0));
source.setMarriageItemId(-1);
}
@@ -374,12 +374,12 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
try {
itemId = c.getPlayer().getInventory(MapleInventoryType.ETC).getItem(slot).getItemId();
} catch(NullPointerException npe) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
if((itemId != 4031377 && itemId != 4031395) || !c.getPlayer().haveItem(itemId)) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -444,7 +444,7 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
if(invitationid == 4031406 || invitationid == 4031407) {
Item item = c.getPlayer().getInventory(MapleInventoryType.ETC).getItem(slot);
if(item == null || item.getItemId() != invitationid) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
@@ -452,7 +452,7 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
Pair<Integer, Integer> coupleId = c.getWorldServer().getWeddingCoupleForGuest(c.getPlayer().getId(), invitationid == 4031407);
if (coupleId != null) {
int groomId = coupleId.getLeft(), brideId = coupleId.getRight();
c.announce(Wedding.sendWeddingInvitation(MapleCharacter.getNameById(groomId), MapleCharacter.getNameById(brideId)));
c.sendPacket(WeddingPackets.sendWeddingInvitation(MapleCharacter.getNameById(groomId), MapleCharacter.getNameById(brideId)));
}
}
@@ -502,6 +502,6 @@ public final class RingActionHandler extends AbstractMaplePacketHandler {
break;
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -171,7 +171,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler {
mods.add(new ModifyInventory(3, scrolled));
mods.add(new ModifyInventory(0, scrolled));
}
c.announce(PacketCreator.modifyInventory(true, mods));
c.sendPacket(PacketCreator.modifyInventory(true, mods));
chr.getMap().broadcastMessage(PacketCreator.getScrollEffect(chr.getId(), scrollSuccess, legendarySpirit, whiteScroll));
if (dst < 0 && (scrollSuccess == Equip.ScrollResult.SUCCESS || scrollSuccess == Equip.ScrollResult.CURSE)) {
chr.equipChanged();
@@ -184,9 +184,9 @@ public final class ScrollHandler extends AbstractMaplePacketHandler {
private static void announceCannotScroll(MapleClient c, boolean legendarySpirit) {
if (legendarySpirit) {
c.announce(PacketCreator.getScrollEffect(c.getPlayer().getId(), Equip.ScrollResult.FAIL, false, false));
c.sendPacket(PacketCreator.getScrollEffect(c.getPlayer().getId(), Equip.ScrollResult.FAIL, false, false));
} else {
c.announce(PacketCreator.getInventoryFull());
c.sendPacket(PacketCreator.getInventoryFull());
}
}

View File

@@ -40,7 +40,7 @@ public final class SkillBookHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (!c.getPlayer().isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}

View File

@@ -64,8 +64,8 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
}
skillLevel = 1;
chr.setDojoEnergy(0);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.announce(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.serverNotice(5, "As you used the secret skill, your energy bar has been reset."));
}
if (skillLevel == 0 || skillLevel != __skillLevel) return;
@@ -79,7 +79,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
cooldownTime /= 60;
}
c.announce(PacketCreator.skillCooldown(skillid, cooldownTime));
c.sendPacket(PacketCreator.skillCooldown(skillid, cooldownTime));
chr.addCooldown(skillid, currentServerTime(), cooldownTime * 1000);
}
}
@@ -102,8 +102,8 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
}
}
byte direction = slea.readByte(); // thanks MedicOP for pointing some 3rd-party related issues with Magnet
chr.getMap().broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), skillid, chr.getSkillLevel(skillid), 1, direction), false);
c.announce(PacketCreator.enableActions());
chr.getMap().broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), skillid, chr.getSkillLevel(skillid), 1, direction), false);
c.sendPacket(PacketCreator.enableActions());
return;
} else if (skillid == Brawler.MP_RECOVERY) {// MP Recovery
Skill s = SkillFactory.getSkill(skillid);
@@ -114,7 +114,7 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
chr.addMP(gain);
} else if (skillid == SuperGM.HEAL_PLUS_DISPEL) {
slea.skip(11);
chr.getMap().broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), skillid, chr.getSkillLevel(skillid)), false);
chr.getMap().broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), skillid, chr.getSkillLevel(skillid)), false);
} else if (skillid % 10000000 == 1004) {
slea.readShort();
}
@@ -143,10 +143,10 @@ public final class SpecialMoveHandler extends AbstractMaplePacketHandler {
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}
}

View File

@@ -39,8 +39,8 @@ public final class SpouseChatHandler extends AbstractMaplePacketHandler {
if (partnerId > 0) { // yay marriage
MapleCharacter spouse = c.getWorldServer().getPlayerStorage().getCharacterById(partnerId);
if (spouse != null) {
spouse.announce(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true));
c.announce(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true));
spouse.sendPacket(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true));
c.sendPacket(PacketCreator.OnCoupleMessage(c.getPlayer().getName(), msg, true));
if (YamlConfig.config.server.USE_ENABLE_CHAT_LOG) {
LogHelper.logChat(c, "Spouse", msg);
}

View File

@@ -169,8 +169,8 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler {
}
map.damageMonster(chr, attacker, bouncedamage);
map.broadcastMessage(chr, PacketCreator.damageMonster(oid, bouncedamage), true);
chr.getClient().announce(PacketCreator.showOwnBuffEffect(id, 5));
map.broadcastMessage(chr, PacketCreator.showBuffeffect(chr.getId(), id, 5), false);
chr.sendPacket(PacketCreator.showOwnBuffEffect(id, 5));
map.broadcastMessage(chr, PacketCreator.showBuffEffect(chr.getId(), id, 5), false);
}
}
}
@@ -274,7 +274,7 @@ public final class TakeDamageHandler extends AbstractMaplePacketHandler {
}
if (GameConstants.isDojo(map.getId())) {
chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_DMG);
c.announce(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy()));
}
for (MapleCharacter player : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :)

View File

@@ -33,6 +33,6 @@ import tools.data.input.SeekableLittleEndianAccessor;
public final class TouchingCashShopHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
c.announce(PacketCreator.showCash(c.getPlayer()));
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
}
}

View File

@@ -43,20 +43,20 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler {
slea.readInt(); //cid
int birthday = slea.readInt();
if (!CashOperationHandler.checkBirthday(c, birthday)) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC4));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4));
c.sendPacket(PacketCreator.enableActions());
return;
}
if(!YamlConfig.config.server.ALLOW_CASHSHOP_NAME_CHANGE) {
c.announce(PacketCreator.sendNameTransferRules(4));
c.sendPacket(PacketCreator.sendNameTransferRules(4));
return;
}
MapleCharacter chr = c.getPlayer();
if(chr.getLevel() < 10) {
c.announce(PacketCreator.sendNameTransferRules(4));
c.sendPacket(PacketCreator.sendNameTransferRules(4));
return;
} else if(c.getTempBanCalendar() != null && c.getTempBanCalendar().getTimeInMillis() + (30*24*60*60*1000) < Calendar.getInstance().getTimeInMillis()) {
c.announce(PacketCreator.sendNameTransferRules(2));
c.sendPacket(PacketCreator.sendNameTransferRules(2));
return;
}
//sql queries
@@ -67,10 +67,10 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler {
while(rs.next()) {
Timestamp completedTimestamp = rs.getTimestamp("completionTime");
if(completedTimestamp == null) { //has pending name request
c.announce(PacketCreator.sendNameTransferRules(1));
c.sendPacket(PacketCreator.sendNameTransferRules(1));
return;
} else if(completedTimestamp.getTime() + YamlConfig.config.server.NAME_CHANGE_COOLDOWN > System.currentTimeMillis()) {
c.announce(PacketCreator.sendNameTransferRules(3));
c.sendPacket(PacketCreator.sendNameTransferRules(3));
return;
}
}
@@ -78,6 +78,6 @@ public final class TransferNameHandler extends AbstractMaplePacketHandler {
e.printStackTrace();
return;
}
c.announce(PacketCreator.sendNameTransferRules(0));
c.sendPacket(PacketCreator.sendNameTransferRules(0));
}
}

View File

@@ -35,6 +35,6 @@ public final class TransferNameResultHandler extends AbstractMaplePacketHandler
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
String name = slea.readMapleAsciiString();
c.announce(PacketCreator.sendNameTransferCheck(name, MapleCharacter.canCreateChar(name)));
c.sendPacket(PacketCreator.sendNameTransferCheck(name, MapleCharacter.canCreateChar(name)));
}
}

View File

@@ -43,18 +43,18 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler {
slea.readInt(); //cid
int birthday = slea.readInt();
if (!CashOperationHandler.checkBirthday(c, birthday)) {
c.announce(PacketCreator.showCashShopMessage((byte) 0xC4));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC4));
c.sendPacket(PacketCreator.enableActions());
return;
}
MapleCharacter chr = c.getPlayer();
if(!YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER || Server.getInstance().getWorldsSize() <= 1) {
c.announce(PacketCreator.sendWorldTransferRules(9, c));
c.sendPacket(PacketCreator.sendWorldTransferRules(9, c));
return;
}
int worldTransferError = chr.checkWorldTransferEligibility();
if(worldTransferError != 0) {
c.announce(PacketCreator.sendWorldTransferRules(worldTransferError, c));
c.sendPacket(PacketCreator.sendWorldTransferRules(worldTransferError, c));
return;
}
try (Connection con = DatabaseConnection.getConnection();
@@ -64,10 +64,10 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler {
while(rs.next()) {
Timestamp completedTimestamp = rs.getTimestamp("completionTime");
if(completedTimestamp == null) { //has pending world transfer
c.announce(PacketCreator.sendWorldTransferRules(6, c));
c.sendPacket(PacketCreator.sendWorldTransferRules(6, c));
return;
} else if(completedTimestamp.getTime() + YamlConfig.config.server.WORLD_TRANSFER_COOLDOWN > System.currentTimeMillis()) {
c.announce(PacketCreator.sendWorldTransferRules(7, c));
c.sendPacket(PacketCreator.sendWorldTransferRules(7, c));
return;
}
}
@@ -75,6 +75,6 @@ public final class TransferWorldHandler extends AbstractMaplePacketHandler {
e.printStackTrace();
return;
}
c.announce(PacketCreator.sendWorldTransferRules(0, c));
c.sendPacket(PacketCreator.sendWorldTransferRules(0, c));
}
}

View File

@@ -45,7 +45,7 @@ public final class TrockAddMapHandler extends AbstractMaplePacketHandler {
chr.deleteFromVipTrocks(mapId);
else
chr.deleteFromTrocks(mapId);
c.announce(PacketCreator.trockRefreshMapList(chr, true, vip));
c.sendPacket(PacketCreator.trockRefreshMapList(chr, true, vip));
} else if (type == 0x01) {
if (!FieldLimit.CANNOTVIPROCK.check(chr.getMap().getFieldLimit())) {
if (vip)
@@ -53,7 +53,7 @@ public final class TrockAddMapHandler extends AbstractMaplePacketHandler {
else
chr.addTrockMap();
c.announce(PacketCreator.trockRefreshMapList(chr, false, vip));
c.sendPacket(PacketCreator.trockRefreshMapList(chr, false, vip));
} else {
chr.message("You may not save this map.");
}

View File

@@ -54,44 +54,44 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
@Override
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
final MapleCharacter player = c.getPlayer();
long timeNow = currentServerTime();
if (timeNow - player.getLastUsedCashItem() < 3000) {
player.dropMessage(1, "You have used a cash item recently. Wait a moment, then try again.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
player.setLastUsedCashItem(timeNow);
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
short position = slea.readShort();
int itemId = slea.readInt();
int itemType = itemId / 10000;
MapleInventory cashInv = player.getInventory(MapleInventoryType.CASH);
Item toUse = cashInv.getItem(position);
if (toUse == null || toUse.getItemId() != itemId) {
toUse = cashInv.findById(itemId);
if (toUse == null) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
position = toUse.getPosition();
}
if (toUse.getQuantity() < 1) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
String medal = "";
Item medalItem = player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49);
if (medalItem != null) {
medal = "<" + ii.getName(medalItem.getItemId()) + "> ";
}
if (itemType == 504) { // vip teleport rock
String error1 = "Either the player could not be found or you were trying to teleport to an illegal location.";
boolean vip = slea.readByte() == 1 && itemId / 1000 >= 5041;
@@ -113,7 +113,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
} else {
String name = slea.readMapleAsciiString();
MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(name);
if (victim != null) {
MapleMap targetMap = victim.getMap();
if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == 999999999 || targetMap.getId() < 100000000)) {
@@ -130,23 +130,23 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
player.dropMessage(1, "Player could not be found in this channel.");
}
}
if (!success) {
MapleInventoryManipulator.addById(c, itemId, (short) 1);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
} else if (itemType == 505) { // AP/SP reset
if(!player.isAlive()) {
c.announce(PacketCreator.enableActions());
if (!player.isAlive()) {
c.sendPacket(PacketCreator.enableActions());
return;
}
if (itemId > 5050000) {
int SPTo = slea.readInt();
if (!AssignSPProcessor.canSPAssign(c, SPTo)) { // exploit found thanks to Arnah
return;
}
int SPFrom = slea.readInt();
Skill skillSPTo = SkillFactory.getSkill(SPTo);
Skill skillSPFrom = SkillFactory.getSkill(SPFrom);
@@ -155,39 +155,43 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
if ((curLevel < skillSPTo.getMaxLevel()) && curLevelSPFrom > 0) {
player.changeSkillLevel(skillSPFrom, (byte) (curLevelSPFrom - 1), player.getMasterLevel(skillSPFrom), -1);
player.changeSkillLevel(skillSPTo, (byte) (curLevel + 1), player.getMasterLevel(skillSPTo), -1);
// update macros, thanks to Arnah
if((curLevelSPFrom - 1) == 0){
if ((curLevelSPFrom - 1) == 0) {
boolean updated = false;
for(SkillMacro macro : player.getMacros()){
if(macro == null) continue;
for (SkillMacro macro : player.getMacros()) {
if (macro == null) {
continue;
}
boolean update = false;// cleaner?
if(macro.getSkill1() == SPFrom){
if (macro.getSkill1() == SPFrom) {
update = true;
macro.setSkill1(0);
}
if(macro.getSkill2() == SPFrom){
if (macro.getSkill2() == SPFrom) {
update = true;
macro.setSkill2(0);
}
if(macro.getSkill3() == SPFrom){
if (macro.getSkill3() == SPFrom) {
update = true;
macro.setSkill3(0);
}
if(update){
if (update) {
updated = true;
player.updateMacros(macro.getPosition(), macro);
}
}
if(updated) player.sendMacros();
if (updated) {
player.sendMacros();
}
}
}
} else {
int APTo = slea.readInt();
int APFrom = slea.readInt();
if(!AssignAPProcessor.APResetAction(c, APFrom, APTo)) {
if (!AssignAPProcessor.APResetAction(c, APFrom, APTo)) {
return;
}
}
@@ -292,16 +296,16 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
messages.add(message);
}
slea.readInt();
if (!MapleTVEffect.broadcastMapleTVIfNotActive(player, victim, messages, tvType)) {
player.dropMessage(1, "MapleTV is already in use.");
return;
}
if (megassenger) {
Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + builder.toString(), ear));
Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + builder, ear));
}
break;
case 6: //item megaphone
String msg = medal + player.getName() + " : " + slea.readMapleAsciiString();
@@ -313,7 +317,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
{
return;
}
// thanks Conrad for noticing that untradeable items should be allowed in megas
}
Server.getInstance().broadcastMessage(c.getWorld(), PacketCreator.itemMegaphone(msg, whisper, c.getChannel(), item));
@@ -335,12 +339,12 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
remove(c, position, itemId);
} else if (itemType == 508) { // thanks tmskdl12 for graduation banner; thanks ratency for first pointing lack of Kite handling
MapleKite kite = new MapleKite(player, slea.readMapleAsciiString(), itemId);
if (!GameConstants.isFreeMarketRoom(player.getMapId())) {
player.getMap().spawnKite(kite);
remove(c, position, itemId);
} else {
c.announce(PacketCreator.sendCannotSpawnKite());
c.sendPacket(PacketCreator.sendCannotSpawnKite());
}
} else if (itemType == 509) {
String sendTo = slea.readMapleAsciiString();
@@ -365,41 +369,46 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
} else if (itemType == 517) {
MaplePet pet = player.getPet(0);
if (pet == null) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
String newName = slea.readMapleAsciiString();
pet.setName(newName);
pet.saveToDb();
Item item = player.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
if (item != null)
if (item != null) {
player.forceUpdateItem(item);
}
player.getMap().broadcastMessage(player, PacketCreator.changePetName(player, newName, 1), true);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
remove(c, position, itemId);
} else if (itemType == 520) {
player.gainMeso(ii.getMeso(itemId), true, false, true);
remove(c, position, itemId);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 523) {
int itemid = slea.readInt();
if(!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) c.getWorldServer().addOwlItemSearch(itemid);
if (!YamlConfig.config.server.USE_ENFORCE_ITEM_SUGGESTION) {
c.getWorldServer().addOwlItemSearch(itemid);
}
player.setOwlSearch(itemid);
List<Pair<MaplePlayerShopItem, AbstractMapleMapObject>> hmsAvailable = c.getWorldServer().getAvailableItemBundles(itemid);
if(!hmsAvailable.isEmpty()) remove(c, position, itemId);
c.announce(PacketCreator.owlOfMinerva(c, itemid, hmsAvailable));
c.announce(PacketCreator.enableActions());
if (!hmsAvailable.isEmpty()) {
remove(c, position, itemId);
}
c.sendPacket(PacketCreator.owlOfMinerva(c, itemid, hmsAvailable));
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 524) {
for (byte i = 0; i < 3; i++) {
MaplePet pet = player.getPet(i);
if (pet != null) {
Pair<Integer, Boolean> p = pet.canConsume(itemId);
if (p.getRight()) {
pet.gainClosenessFullness(player, p.getLeft(), 100, 1);
remove(c, position, itemId);
@@ -409,7 +418,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
break;
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 530) {
ii.getItemEffect(itemId).applyTo(player);
remove(c, position, itemId);
@@ -418,20 +427,20 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
} else if (itemType == 537) {
if (GameConstants.isFreeMarketRoom(player.getMapId())) {
player.dropMessage(5, "You cannot use the chalkboard here.");
player.getClient().announce(PacketCreator.enableActions());
player.sendPacket(PacketCreator.enableActions());
return;
}
player.setChalkboard(slea.readMapleAsciiString());
player.getMap().broadcastMessage(PacketCreator.useChalkboard(player, false));
player.getClient().announce(PacketCreator.enableActions());
player.sendPacket(PacketCreator.enableActions());
//remove(c, position, itemId); thanks Conrad for noticing chalkboards shouldn't be depleted upon use
} else if (itemType == 539) {
List<String> strLines = new LinkedList<>();
for (int i = 0; i < 4; i++) {
strLines.add(slea.readMapleAsciiString());
}
final int world = c.getWorld();
Server.getInstance().broadcastMessage(world, PacketCreator.getAvatarMega(player, medal, c.getChannel(), itemId, strLines, (slea.readByte() != 0)));
TimerManager.getInstance().schedule(() -> Server.getInstance().broadcastMessage(world, PacketCreator.byeAvatarMega()), 1000 * 10);
@@ -439,20 +448,20 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
} else if (itemType == 540) {
slea.readByte();
slea.readInt();
if(itemId == 5400000) { //name change
c.announce(PacketCreator.showNameChangeCancel(player.cancelPendingNameChange()));
} else if(itemId == 5401000) { //world transfer
c.announce(PacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer()));
if (itemId == 5400000) { //name change
c.sendPacket(PacketCreator.showNameChangeCancel(player.cancelPendingNameChange()));
} else if (itemId == 5401000) { //world transfer
c.sendPacket(PacketCreator.showWorldTransferCancel(player.cancelPendingWorldTranfer()));
}
remove(c, position, itemId);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 543) {
if(itemId == 5432000 && !c.gainCharacterSlot()) {
if (itemId == 5432000 && !c.gainCharacterSlot()) {
player.dropMessage(1, "You have already used up all 12 extra character slots.");
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
String name = slea.readMapleAsciiString();
int face = slea.readInt();
int hair = slea.readInt();
@@ -461,39 +470,25 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
int gender = slea.readInt();
int jobid = slea.readInt();
int improveSp = slea.readInt();
int createStatus;
switch(jobid) {
case 0:
createStatus = WarriorCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
break;
case 1:
createStatus = MagicianCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
break;
case 2:
createStatus = BowmanCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
break;
case 3:
createStatus = ThiefCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
break;
default:
createStatus = PirateCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
}
if(createStatus == 0) {
c.announce(PacketCreator.sendMapleLifeError(0)); // success!
int createStatus = switch (jobid) {
case 0 -> WarriorCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
case 1 -> MagicianCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
case 2 -> BowmanCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
case 3 -> ThiefCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
default -> PirateCreator.createCharacter(c, name, face, hair + haircolor, skin, gender, improveSp);
};
if (createStatus == 0) {
c.sendPacket(PacketCreator.sendMapleLifeError(0)); // success!
player.showHint("#bSuccess#k on creation of the new character through the Maple Life card.");
remove(c, position, itemId);
} else {
if(createStatus == -1) { // check name
c.announce(PacketCreator.sendMapleLifeNameError());
if (createStatus == -1) { // check name
c.sendPacket(PacketCreator.sendMapleLifeNameError());
} else {
c.announce(PacketCreator.sendMapleLifeError(-1 * createStatus));
c.sendPacket(PacketCreator.sendMapleLifeError(-1 * createStatus));
}
}
} else if (itemType == 545) { // MiuMiu's travel store
@@ -504,25 +499,25 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
remove(c, position, itemId);
}
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
} else if (itemType == 550) { //Extend item expiration
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 552) {
MapleInventoryType type = MapleInventoryType.getByType((byte) slea.readInt());
short slot = (short) slea.readInt();
Item item = player.getInventory(type).getItem(slot);
if (item == null || item.getQuantity() <= 0 || MapleKarmaManipulator.hasKarmaFlag(item) || !ii.isKarmaAble(item.getItemId())) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
MapleKarmaManipulator.setKarmaFlag(item);
player.forceUpdateItem(item);
remove(c, position, itemId);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 552) { //DS EGG THING
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else if (itemType == 557) {
slea.readInt();
int itemSlot = slea.readInt();
@@ -534,70 +529,74 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
equip.setVicious(equip.getVicious() + 1);
equip.setUpgradeSlots(equip.getUpgradeSlots() + 1);
remove(c, position, itemId);
c.announce(PacketCreator.enableActions());
c.announce(PacketCreator.sendHammerData(equip.getVicious()));
c.sendPacket(PacketCreator.enableActions());
c.sendPacket(PacketCreator.sendHammerData(equip.getVicious()));
player.forceUpdateItem(equip);
} else if (itemType == 561) { //VEGA'S SPELL
if (slea.readInt() != 1) {
return;
}
final byte eSlot = (byte) slea.readInt();
final Item eitem = player.getInventory(MapleInventoryType.EQUIP).getItem(eSlot);
if (slea.readInt() != 2) {
return;
}
final byte uSlot = (byte) slea.readInt();
final Item uitem = player.getInventory(MapleInventoryType.USE).getItem(uSlot);
if (eitem == null || uitem == null) {
return;
}
Equip toScroll = (Equip) eitem;
if (toScroll.getUpgradeSlots() < 1) {
c.announce(PacketCreator.getInventoryFull());
c.sendPacket(PacketCreator.getInventoryFull());
return;
}
//should have a check here against PE hacks
if(itemId / 1000000 != 5) itemId = 0;
if (itemId / 1000000 != 5) {
itemId = 0;
}
player.toggleBlockCashShop();
final int curlevel = toScroll.getLevel();
c.announce(PacketCreator.sendVegaScroll(0x40));
c.sendPacket(PacketCreator.sendVegaScroll(0x40));
final Equip scrolled = (Equip) ii.scrollEquipWithId(toScroll, uitem.getItemId(), false, itemId, player.isGM());
c.announce(PacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43));
c.sendPacket(PacketCreator.sendVegaScroll(scrolled.getLevel() > curlevel ? 0x41 : 0x43));
//opcodes 0x42, 0x44: "this item cannot be used"; 0x39, 0x45: crashes
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, uSlot, (short) 1, false);
remove(c, position, itemId);
final MapleClient client = c;
TimerManager.getInstance().schedule(() -> {
if(!player.isLoggedin()) return;
if (!player.isLoggedin()) {
return;
}
player.toggleBlockCashShop();
player.toggleBlockCashShop();
final List<ModifyInventory> mods = new ArrayList<>();
mods.add(new ModifyInventory(3, scrolled));
mods.add(new ModifyInventory(0, scrolled));
client.announce(PacketCreator.modifyInventory(true, mods));
final List<ModifyInventory> mods = new ArrayList<>();
mods.add(new ModifyInventory(3, scrolled));
mods.add(new ModifyInventory(0, scrolled));
client.sendPacket(PacketCreator.modifyInventory(true, mods));
ScrollResult scrollResult = scrolled.getLevel() > curlevel ? ScrollResult.SUCCESS : ScrollResult.FAIL;
player.getMap().broadcastMessage(PacketCreator.getScrollEffect(player.getId(), scrollResult, false, false));
if (eSlot < 0 && (scrollResult == ScrollResult.SUCCESS)) {
player.equipChanged();
}
ScrollResult scrollResult = scrolled.getLevel() > curlevel ? ScrollResult.SUCCESS : ScrollResult.FAIL;
player.getMap().broadcastMessage(PacketCreator.getScrollEffect(player.getId(), scrollResult, false, false));
if (eSlot < 0 && (scrollResult == ScrollResult.SUCCESS)) {
player.equipChanged();
}
client.announce(PacketCreator.enableActions());
client.sendPacket(PacketCreator.enableActions());
}, 1000 * 3);
} else {
System.out.println("NEW CASH ITEM: " + itemType + "\n" + slea.toString());
c.announce(PacketCreator.enableActions());
System.out.println("NEW CASH ITEM: " + itemType + "\n" + slea);
c.sendPacket(PacketCreator.enableActions());
}
}
@@ -612,7 +611,7 @@ client.announce(PacketCreator.enableActions());
position = it.getPosition();
}
}
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.CASH, position, (short) 1, true, false);
} finally {
cashInv.unlockInventory();

View File

@@ -64,7 +64,7 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 1902000, (short) 1, "", -1);
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270001:
if (mob.getId() == 9500197) {
@@ -76,10 +76,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.addById(c, 4031830, (short) 1, "", -1);
} else {
abm.spam(10);
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
break;
case 2270002:
@@ -101,10 +101,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
abm.spam(10);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
break;
case 2270003:
@@ -115,10 +115,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 4031887, (short) 1, "", -1);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270005:
if (mob.getId() == 9300187) {
@@ -128,10 +128,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 2109001, (short) 1, "", -1);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270006:
if (mob.getId() == 9300189) {
@@ -141,10 +141,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 2109002, (short) 1, "", -1);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270007:
if (mob.getId() == 9300191) {
@@ -154,10 +154,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 2109003, (short) 1, "", -1);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270004:
if (mob.getId() == 9300175) {
@@ -167,10 +167,10 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true);
MapleInventoryManipulator.addById(c, 4001169, (short) 1, "", -1);
} else {
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
break;
case 2270008:
if (mob.getId() == 9500336) {
@@ -183,7 +183,7 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
} else {
chr.message("You cannot use the Fishing Net yet.");
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
break;
default:
@@ -206,14 +206,14 @@ public final class UseCatchItemHandler extends AbstractMaplePacketHandler {
} else if (mob.getId() != 9500336) {
if (mobHp != 0) {
abm.spam(10);
c.announce(PacketCreator.catchMessage(0));
c.sendPacket(PacketCreator.catchMessage(0));
}
} else {
chr.message("You cannot use the Fishing Net yet.");
}
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
// System.out.println("UseCatchItemHandler: \r\n" + slea.toString());
}

View File

@@ -31,6 +31,6 @@ public final class UseDeathItemHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
int itemId = slea.readInt();
c.getPlayer().setItemEffect(itemId);
c.announce(PacketCreator.itemEffect(c.getPlayer().getId(), itemId));
c.sendPacket(PacketCreator.itemEffect(c.getPlayer().getId(), itemId));
}
}

View File

@@ -50,6 +50,6 @@ public class UseGachaExpHandler extends AbstractMaplePacketHandler {
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -32,6 +32,6 @@ import tools.data.input.SeekableLittleEndianAccessor;
*/
public final class UseHammerHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
c.announce(PacketCreator.sendHammerMessage());
c.sendPacket(PacketCreator.sendHammerMessage());
}
}

View File

@@ -44,7 +44,7 @@ public final class UseItemHandler extends AbstractMaplePacketHandler {
MapleCharacter chr = c.getPlayer();
if (!chr.isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
@@ -108,6 +108,6 @@ public final class UseItemHandler extends AbstractMaplePacketHandler {
private void remove(MapleClient c, short slot) {
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false);
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -37,18 +37,18 @@ public class UseMapleLifeHandler extends AbstractMaplePacketHandler {
if(timeNow - player.getLastUsedCashItem() < 3000) {
player.dropMessage(5, "Please wait a moment before trying again.");
c.announce(PacketCreator.sendMapleLifeError(3));
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.sendMapleLifeError(3));
c.sendPacket(PacketCreator.enableActions());
return;
}
player.setLastUsedCashItem(timeNow);
String name = slea.readMapleAsciiString();
if(MapleCharacter.canCreateChar(name)) {
c.announce(PacketCreator.sendMapleLifeCharacterInfo());
c.sendPacket(PacketCreator.sendMapleLifeCharacterInfo());
} else {
c.announce(PacketCreator.sendMapleLifeNameError());
c.sendPacket(PacketCreator.sendMapleLifeNameError());
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -59,6 +59,6 @@ public final class UseOwlOfMinervaHandler extends AbstractMaplePacketHandler {
}
}
c.announce(PacketCreator.getOwlOpen(owlLeaderboards));
c.sendPacket(PacketCreator.getOwlOpen(owlLeaderboards));
}
}

View File

@@ -75,6 +75,6 @@ public final class UseSolomonHandler extends AbstractMaplePacketHandler {
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -42,7 +42,7 @@ public final class UseSummonBagHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
//[4A 00][6C 4C F2 02][02 00][63 0B 20 00]
if (!c.getPlayer().isAlive()) {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
return;
}
slea.readInt();
@@ -58,6 +58,6 @@ public final class UseSummonBagHandler extends AbstractMaplePacketHandler {
}
}
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -20,7 +20,7 @@ import net.AbstractMaplePacketHandler;
import server.MapleMarriage;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.packets.Wedding;
import tools.packets.WeddingPackets;
import java.util.Collections;
import java.util.List;
@@ -74,10 +74,10 @@ public final class WeddingHandler extends AbstractMaplePacketHandler {
MapleKarmaManipulator.toggleKarmaFlagToUntradeable(newItem);
marriage.setIntProperty(groomWishlistProp, giftCount + 1);
c.announce(Wedding.OnWeddingGiftResult((byte) 0xB, marriage.getWishlistItems(groomWishlist), Collections.singletonList(newItem)));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xB, marriage.getWishlistItems(groomWishlist), Collections.singletonList(newItem)));
}
} else {
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
}
}
} finally {
@@ -89,17 +89,17 @@ public final class WeddingHandler extends AbstractMaplePacketHandler {
marriage.saveGiftItemsToDb(c, groomWishlist, cid);
}
} else {
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
}
} else {
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), null));
}
} else {
c.announce(Wedding.OnWeddingGiftResult((byte) 0xC, marriage.getWishlistItems(groomWishlist), null));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xC, marriage.getWishlistItems(groomWishlist), null));
}
} catch (NumberFormatException nfe) {}
} else {
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
} else if (mode == 7) { // take items
slea.readByte(); // invType
@@ -117,14 +117,14 @@ public final class WeddingHandler extends AbstractMaplePacketHandler {
MapleInventoryManipulator.addFromDrop(c, item, true);
c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xF, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
} else {
c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item.");
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
}
} else {
c.getPlayer().dropMessage(1, "You have already collected this item.");
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, marriage.getWishlistItems(groomWishlist), marriage.getGiftItems(c, groomWishlist)));
}
}
} else {
@@ -136,18 +136,18 @@ public final class WeddingHandler extends AbstractMaplePacketHandler {
MapleMarriage.saveGiftItemsToDb(c, items, chr.getId());
MapleInventoryManipulator.addFromDrop(c, item, true);
c.announce(Wedding.OnWeddingGiftResult((byte) 0xF, Collections.singletonList(""), items));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xF, Collections.singletonList(""), items));
} else {
c.getPlayer().dropMessage(1, "Free a slot on your inventory before collecting this item.");
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
}
} catch (Exception e) {
c.getPlayer().dropMessage(1, "You have already collected this item.");
c.announce(Wedding.OnWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
c.sendPacket(WeddingPackets.onWeddingGiftResult((byte) 0xE, Collections.singletonList(""), items));
}
}
} else if (mode == 8) { // out of Wedding Registry
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
} else {
System.out.println(mode);
}

View File

@@ -25,7 +25,7 @@ import net.AbstractMaplePacketHandler;
import scripting.event.EventInstanceManager;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.packets.Wedding;
import tools.packets.WeddingPackets;
/**
*
@@ -40,14 +40,14 @@ public final class WeddingTalkHandler extends AbstractMaplePacketHandler {
EventInstanceManager eim = c.getPlayer().getEventInstance();
if(eim != null && !(c.getPlayer().getId() == eim.getIntProperty("groomId") || c.getPlayer().getId() == eim.getIntProperty("brideId"))) {
c.announce(Wedding.OnWeddingProgress(false, 0, 0, (byte) 2));
c.sendPacket(WeddingPackets.OnWeddingProgress(false, 0, 0, (byte) 2));
} else {
c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3));
c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3));
}
} else {
c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3));
c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3));
}
c.announce(PacketCreator.enableActions());
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -25,7 +25,7 @@ import net.AbstractMaplePacketHandler;
import scripting.event.EventInstanceManager;
import tools.PacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.packets.Wedding;
import tools.packets.WeddingPackets;
/**
*
@@ -41,7 +41,7 @@ public final class WeddingTalkMoreHandler extends AbstractMaplePacketHandler {
c.getPlayer().dropMessage(5, "High Priest John: Your blessings have been added to their love. What a noble act for a lovely couple!");
}
c.announce(Wedding.OnWeddingProgress(true, 0, 0, (byte) 3));
c.announce(PacketCreator.enableActions());
c.sendPacket(WeddingPackets.OnWeddingProgress(true, 0, 0, (byte) 3));
c.sendPacket(PacketCreator.enableActions());
}
}

View File

@@ -50,7 +50,7 @@ public final class WhisperHandler extends AbstractMaplePacketHandler {
MapleCharacter target = c.getWorldServer().getPlayerStorage().getCharacterByName(name);
if (target == null) {
c.announce(PacketCreator.getWhisperResult(name, false));
c.sendPacket(PacketCreator.getWhisperResult(name, false));
return;
}
@@ -74,15 +74,15 @@ public final class WhisperHandler extends AbstractMaplePacketHandler {
private void handleFind(MapleCharacter user, MapleCharacter target, byte flag) {
if (user.gmLevel() >= target.gmLevel()) {
if (target.getCashShop().isOpened()) {
user.announce(PacketCreator.getFindResult(target, RT_CASH_SHOP, -1, flag));
user.sendPacket(PacketCreator.getFindResult(target, RT_CASH_SHOP, -1, flag));
} else if (target.getClient().getChannel() == user.getClient().getChannel()) {
user.announce(PacketCreator.getFindResult(target, RT_SAME_CHANNEL, target.getMapId(), flag));
user.sendPacket(PacketCreator.getFindResult(target, RT_SAME_CHANNEL, target.getMapId(), flag));
} else {
user.announce(PacketCreator.getFindResult(target, RT_DIFFERENT_CHANNEL, target.getClient().getChannel() - 1, flag));
user.sendPacket(PacketCreator.getFindResult(target, RT_DIFFERENT_CHANNEL, target.getClient().getChannel() - 1, flag));
}
} else {
// not found for whisper is the same message
user.announce(PacketCreator.getWhisperResult(target.getName(), false));
user.sendPacket(PacketCreator.getWhisperResult(target.getName(), false));
}
}
@@ -103,9 +103,9 @@ public final class WhisperHandler extends AbstractMaplePacketHandler {
LogHelper.logChat(user.getClient(), "Whisper To " + target.getName(), message);
}
target.announce(PacketCreator.getWhisperReceive(user.getName(), user.getClient().getChannel() - 1, user.isGM(), message));
target.sendPacket(PacketCreator.getWhisperReceive(user.getName(), user.getClient().getChannel() - 1, user.isGM(), message));
boolean hidden = target.isHidden() && target.gmLevel() > user.gmLevel();
user.announce(PacketCreator.getWhisperResult(target.getName(), !hidden));
user.sendPacket(PacketCreator.getWhisperResult(target.getName(), !hidden));
}
}

View File

@@ -22,13 +22,14 @@ package net.server.coordinator.matchchecker.listener;
import client.MapleCharacter;
import config.YamlConfig;
import constants.game.GameConstants;
import net.packet.Packet;
import net.server.Server;
import net.server.coordinator.matchchecker.AbstractMatchCheckerListener;
import net.server.coordinator.matchchecker.MatchCheckerListenerRecipe;
import net.server.guild.GuildPackets;
import net.server.guild.MapleGuild;
import net.server.guild.MapleGuildCharacter;
import net.server.world.MapleParty;
import tools.PacketCreator;
import java.util.Set;
@@ -41,7 +42,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
private static void broadcastGuildCreationDismiss(Set<MapleCharacter> nonLeaderMatchPlayers) {
for (MapleCharacter chr : nonLeaderMatchPlayers) {
if (chr.isLoggedinWorld()) {
chr.announce(PacketCreator.genericGuildMessage((byte) 0x26));
chr.sendPacket(GuildPackets.genericGuildMessage((byte) 0x26));
}
}
}
@@ -56,11 +57,11 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
@Override
public void onMatchCreated(MapleCharacter leader, Set<MapleCharacter> nonLeaderMatchPlayers, String message) {
byte[] createGuildPacket = PacketCreator.createGuildMessage(leader.getName(), message);
Packet createGuildPacket = GuildPackets.createGuildMessage(leader.getName(), message);
for (MapleCharacter chr : nonLeaderMatchPlayers) {
if (chr.isLoggedinWorld()) {
chr.announce(createGuildPacket);
chr.sendPacket(createGuildPacket);
}
}
}
@@ -112,7 +113,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
int gid = Server.getInstance().createGuild(leader.getId(), message);
if (gid == 0) {
leader.announce(PacketCreator.genericGuildMessage((byte) 0x23));
leader.sendPacket(GuildPackets.genericGuildMessage((byte) 0x23));
broadcastGuildCreationDismiss(matchPlayers);
return;
}
@@ -122,7 +123,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
MapleGuild guild = Server.getInstance().getGuild(leader.getGuildId(), leader.getWorld(), leader); // initialize guild structure
Server.getInstance().changeRank(gid, leader.getId(), 1);
leader.announce(PacketCreator.showGuildInfo(leader));
leader.sendPacket(GuildPackets.showGuildInfo(leader));
leader.dropMessage(1, "You have successfully created a Guild.");
for (MapleCharacter chr : matchPlayers) {
@@ -136,7 +137,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
Server.getInstance().addGuildMember(mgc, chr);
if (chr.isLoggedinWorld()) {
chr.announce(PacketCreator.showGuildInfo(chr));
chr.sendPacket(GuildPackets.showGuildInfo(chr));
if (cofounder) {
chr.dropMessage(1, "You have successfully cofounded a Guild.");
@@ -160,7 +161,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
}
if (chr.isLoggedinWorld()) {
chr.announce(PacketCreator.genericGuildMessage((byte)0x26));
chr.sendPacket(GuildPackets.genericGuildMessage((byte)0x26));
}
}
}
@@ -190,7 +191,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe {
if (chr.isLoggedinWorld()) {
chr.message(msg);
chr.announce(PacketCreator.genericGuildMessage((byte)0x26));
chr.sendPacket(GuildPackets.genericGuildMessage((byte)0x26));
}
}
}

View File

@@ -292,7 +292,7 @@ public class MaplePartySearchCoordinator {
if (MapleInviteCoordinator.createInvite(InviteType.PARTY, leader, partyid, chr.getId())) {
chr.disablePartySearchInvite(leader.getId());
chr.announce(PacketCreator.partySearchInvite(leader));
chr.sendPacket(PacketCreator.partySearchInvite(leader));
return true;
} else {
return false;

View File

@@ -0,0 +1,543 @@
package net.server.guild;
import client.MapleCharacter;
import client.MapleClient;
import net.opcodes.SendOpcode;
import net.packet.OutPacket;
import net.packet.Packet;
import net.server.Server;
import tools.PacketCreator;
import tools.Pair;
import tools.StringUtil;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
public class GuildPackets {
public static Packet showGuildInfo(MapleCharacter chr) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x1A); //signature for showing guild info
if (chr == null) { //show empty guild (used for leaving, expelled)
p.writeByte(0);
return p;
}
MapleGuild g = chr.getClient().getWorldServer().getGuild(chr.getMGC());
if (g == null) { //failed to read from DB - don't show a guild
p.writeByte(0);
return p;
}
p.writeByte(1); //bInGuild
p.writeInt(g.getId());
p.writeString(g.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(g.getRankTitle(i));
}
Collection<MapleGuildCharacter> members = g.getMembers();
p.writeByte(members.size()); //then it is the size of all the members
for (MapleGuildCharacter mgc : members) {//and each of their character ids o_O
p.writeInt(mgc.getId());
}
for (MapleGuildCharacter mgc : members) {
p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13));
p.writeInt(mgc.getJobId());
p.writeInt(mgc.getLevel());
p.writeInt(mgc.getGuildRank());
p.writeInt(mgc.isOnline() ? 1 : 0);
p.writeInt(g.getSignature());
p.writeInt(mgc.getAllianceRank());
}
p.writeInt(g.getCapacity());
p.writeShort(g.getLogoBG());
p.writeByte(g.getLogoBGColor());
p.writeShort(g.getLogo());
p.writeByte(g.getLogoColor());
p.writeString(g.getNotice());
p.writeInt(g.getGP());
p.writeInt(g.getAllianceId());
return p;
}
public static Packet guildMemberOnline(int guildId, int chrId, boolean bOnline) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x3d);
p.writeInt(guildId);
p.writeInt(chrId);
p.writeBool(bOnline);
return p;
}
public static Packet guildInvite(int guildId, String charName) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x05);
p.writeInt(guildId);
p.writeString(charName);
return p;
}
public static Packet createGuildMessage(String masterName, String guildName) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x3);
p.writeInt(0);
p.writeString(masterName);
p.writeString(guildName);
return p;
}
/**
* Gets a Heracle/guild message packet.
* <p>
* Possible values for <code>code</code>:<br> 28: guild name already in use<br>
* 31: problem in locating players during agreement<br> 33/40: already joined a guild<br>
* 35: Cannot make guild<br> 36: problem in player agreement<br> 38: problem during forming guild<br>
* 41: max number of players in joining guild<br> 42: character can't be found this channel<br>
* 45/48: character not in guild<br> 52: problem in disbanding guild<br> 56: admin cannot make guild<br>
* 57: problem in increasing guild size<br>
*
* @param code The response code.
* @return The guild message packet.
*/
public static Packet genericGuildMessage(byte code) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(code);
return p;
}
/**
* Gets a guild message packet appended with target name.
* <p>
* 53: player not accepting guild invites<br>
* 54: player already managing an invite<br> 55: player denied an invite<br>
*
* @param code The response code.
* @param targetName The initial player target of the invitation.
* @return The guild message packet.
*/
public static Packet responseGuildMessage(byte code, String targetName) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(code);
p.writeString(targetName);
return p;
}
public static Packet newGuildMember(MapleGuildCharacter mgc) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x27);
p.writeInt(mgc.getGuildId());
p.writeInt(mgc.getId());
p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13));
p.writeInt(mgc.getJobId());
p.writeInt(mgc.getLevel());
p.writeInt(mgc.getGuildRank()); //should be always 5 but whatevs
p.writeInt(mgc.isOnline() ? 1 : 0); //should always be 1 too
p.writeInt(1); //? could be guild signature, but doesn't seem to matter
p.writeInt(3);
return p;
}
//someone leaving, mode == 0x2c for leaving, 0x2f for expelled
public static Packet memberLeft(MapleGuildCharacter mgc, boolean bExpelled) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(bExpelled ? 0x2f : 0x2c);
p.writeInt(mgc.getGuildId());
p.writeInt(mgc.getId());
p.writeString(mgc.getName());
return p;
}
//rank change
public static Packet changeRank(MapleGuildCharacter mgc) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x40);
p.writeInt(mgc.getGuildId());
p.writeInt(mgc.getId());
p.writeByte(mgc.getGuildRank());
return p;
}
public static Packet guildNotice(int guildId, String notice) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x44);
p.writeInt(guildId);
p.writeString(notice);
return p;
}
public static Packet guildMemberLevelJobUpdate(MapleGuildCharacter mgc) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x3C);
p.writeInt(mgc.getGuildId());
p.writeInt(mgc.getId());
p.writeInt(mgc.getLevel());
p.writeInt(mgc.getJobId());
return p;
}
public static Packet rankTitleChange(int guildId, String[] ranks) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x3E);
p.writeInt(guildId);
for (int i = 0; i < 5; i++) {
p.writeString(ranks[i]);
}
return p;
}
public static Packet guildDisband(int guildId) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x32);
p.writeInt(guildId);
p.writeByte(1);
return p;
}
public static Packet guildQuestWaitingNotice(byte channel, int waitingPos) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x4C);
p.writeByte(channel - 1);
p.writeByte(waitingPos);
return p;
}
public static Packet guildEmblemChange(int guildId, short bg, byte bgcolor, short logo, byte logoColor) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x42);
p.writeInt(guildId);
p.writeShort(bg);
p.writeByte(bgcolor);
p.writeShort(logo);
p.writeByte(logoColor);
return p;
}
public static Packet guildCapacityChange(int guildId, int capacity) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x3A);
p.writeInt(guildId);
p.writeByte(capacity);
return p;
}
public static void addThread(final OutPacket p, ResultSet rs) throws SQLException {
p.writeInt(rs.getInt("localthreadid"));
p.writeInt(rs.getInt("postercid"));
p.writeString(rs.getString("name"));
p.writeLong(PacketCreator.getTime(rs.getLong("timestamp")));
p.writeInt(rs.getInt("icon"));
p.writeInt(rs.getInt("replycount"));
}
public static Packet BBSThreadList(ResultSet rs, int start) throws SQLException {
OutPacket p = OutPacket.create(SendOpcode.GUILD_BBS_PACKET);
p.writeByte(0x06);
if (!rs.last()) {
p.writeByte(0);
p.writeInt(0);
p.writeInt(0);
return p;
}
int threadCount = rs.getRow();
if (rs.getInt("localthreadid") == 0) { //has a notice
p.writeByte(1);
addThread(p, rs);
threadCount--; //one thread didn't count (because it's a notice)
} else {
p.writeByte(0);
}
if (!rs.absolute(start + 1)) { //seek to the thread before where we start
rs.first(); //uh, we're trying to start at a place past possible
start = 0;
}
p.writeInt(threadCount);
p.writeInt(Math.min(10, threadCount - start));
for (int i = 0; i < Math.min(10, threadCount - start); i++) {
addThread(p, rs);
rs.next();
}
return p;
}
public static Packet showThread(int localthreadid, ResultSet threadRS, ResultSet repliesRS) throws SQLException, RuntimeException {
OutPacket p = OutPacket.create(SendOpcode.GUILD_BBS_PACKET);
p.writeByte(0x07);
p.writeInt(localthreadid);
p.writeInt(threadRS.getInt("postercid"));
p.writeLong(PacketCreator.getTime(threadRS.getLong("timestamp")));
p.writeString(threadRS.getString("name"));
p.writeString(threadRS.getString("startpost"));
p.writeInt(threadRS.getInt("icon"));
if (repliesRS != null) {
int replyCount = threadRS.getInt("replycount");
p.writeInt(replyCount);
int i;
for (i = 0; i < replyCount && repliesRS.next(); i++) {
p.writeInt(repliesRS.getInt("replyid"));
p.writeInt(repliesRS.getInt("postercid"));
p.writeLong(PacketCreator.getTime(repliesRS.getLong("timestamp")));
p.writeString(repliesRS.getString("content"));
}
if (i != replyCount || repliesRS.next()) {
throw new RuntimeException(String.valueOf(threadRS.getInt("threadid")));
}
} else {
p.writeInt(0);
}
return p;
}
public static Packet showGuildRanks(int npcid, ResultSet rs) throws SQLException {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x49);
p.writeInt(npcid);
if (!rs.last()) { //no guilds o.o
p.writeInt(0);
return p;
}
p.writeInt(rs.getRow()); //number of entries
rs.beforeFirst();
while (rs.next()) {
p.writeString(rs.getString("name"));
p.writeInt(rs.getInt("GP"));
p.writeInt(rs.getInt("logo"));
p.writeInt(rs.getInt("logoColor"));
p.writeInt(rs.getInt("logoBG"));
p.writeInt(rs.getInt("logoBGColor"));
}
return p;
}
public static Packet showPlayerRanks(int npcid, List<Pair<String, Integer>> worldRanking) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x49);
p.writeInt(npcid);
if (worldRanking.isEmpty()) {
p.writeInt(0);
return p;
}
p.writeInt(worldRanking.size());
for (Pair<String, Integer> wr : worldRanking) {
p.writeString(wr.getLeft());
p.writeInt(wr.getRight());
p.writeInt(0);
p.writeInt(0);
p.writeInt(0);
p.writeInt(0);
}
return p;
}
public static Packet updateGP(int guildId, int GP) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_OPERATION);
p.writeByte(0x48);
p.writeInt(guildId);
p.writeInt(GP);
return p;
}
public static void getGuildInfo(OutPacket p, MapleGuild guild) {
p.writeInt(guild.getId());
p.writeString(guild.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(guild.getRankTitle(i));
}
Collection<MapleGuildCharacter> members = guild.getMembers();
p.writeByte(members.size());
for (MapleGuildCharacter mgc : members) {
p.writeInt(mgc.getId());
}
for (MapleGuildCharacter mgc : members) {
p.writeFixedString(StringUtil.getRightPaddedStr(mgc.getName(), '\0', 13));
p.writeInt(mgc.getJobId());
p.writeInt(mgc.getLevel());
p.writeInt(mgc.getGuildRank());
p.writeInt(mgc.isOnline() ? 1 : 0);
p.writeInt(guild.getSignature());
p.writeInt(mgc.getAllianceRank());
}
p.writeInt(guild.getCapacity());
p.writeShort(guild.getLogoBG());
p.writeByte(guild.getLogoBGColor());
p.writeShort(guild.getLogo());
p.writeByte(guild.getLogoColor());
p.writeString(guild.getNotice());
p.writeInt(guild.getGP());
p.writeInt(guild.getAllianceId());
}
public static Packet getAllianceInfo(MapleAlliance alliance) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x0C);
p.writeByte(1);
p.writeInt(alliance.getId());
p.writeString(alliance.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(alliance.getRankTitle(i));
}
p.writeByte(alliance.getGuilds().size());
p.writeInt(alliance.getCapacity()); // probably capacity
for (Integer guild : alliance.getGuilds()) {
p.writeInt(guild);
}
p.writeString(alliance.getNotice());
return p;
}
public static Packet updateAllianceInfo(MapleAlliance alliance, int world) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x0F);
p.writeInt(alliance.getId());
p.writeString(alliance.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(alliance.getRankTitle(i));
}
p.writeByte(alliance.getGuilds().size());
for (Integer guild : alliance.getGuilds()) {
p.writeInt(guild);
}
p.writeInt(alliance.getCapacity()); // probably capacity
p.writeShort(0);
for (Integer guildid : alliance.getGuilds()) {
getGuildInfo(p, Server.getInstance().getGuild(guildid, world));
}
return p;
}
public static Packet getGuildAlliances(MapleAlliance alliance, int worldId) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x0D);
p.writeInt(alliance.getGuilds().size());
for (Integer guild : alliance.getGuilds()) {
getGuildInfo(p, Server.getInstance().getGuild(guild, worldId));
}
return p;
}
public static Packet addGuildToAlliance(MapleAlliance alliance, int newGuild, MapleClient c) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x12);
p.writeInt(alliance.getId());
p.writeString(alliance.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(alliance.getRankTitle(i));
}
p.writeByte(alliance.getGuilds().size());
for (Integer guild : alliance.getGuilds()) {
p.writeInt(guild);
}
p.writeInt(alliance.getCapacity());
p.writeString(alliance.getNotice());
p.writeInt(newGuild);
getGuildInfo(p, Server.getInstance().getGuild(newGuild, c.getWorld(), null));
return p;
}
public static Packet allianceMemberOnline(MapleCharacter mc, boolean online) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x0E);
p.writeInt(mc.getGuild().getAllianceId());
p.writeInt(mc.getGuildId());
p.writeInt(mc.getId());
p.writeBool(online);
return p;
}
public static Packet allianceNotice(int id, String notice) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x1C);
p.writeInt(id);
p.writeString(notice);
return p;
}
public static Packet changeAllianceRankTitle(int alliance, String[] ranks) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x1A);
p.writeInt(alliance);
for (int i = 0; i < 5; i++) {
p.writeString(ranks[i]);
}
return p;
}
public static Packet updateAllianceJobLevel(MapleCharacter mc) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x18);
p.writeInt(mc.getGuild().getAllianceId());
p.writeInt(mc.getGuildId());
p.writeInt(mc.getId());
p.writeInt(mc.getLevel());
p.writeInt(mc.getJob().getId());
return p;
}
public static Packet removeGuildFromAlliance(MapleAlliance alliance, int expelledGuild, int worldId) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x10);
p.writeInt(alliance.getId());
p.writeString(alliance.getName());
for (int i = 1; i <= 5; i++) {
p.writeString(alliance.getRankTitle(i));
}
p.writeByte(alliance.getGuilds().size());
for (Integer guild : alliance.getGuilds()) {
p.writeInt(guild);
}
p.writeInt(alliance.getCapacity());
p.writeString(alliance.getNotice());
p.writeInt(expelledGuild);
getGuildInfo(p, Server.getInstance().getGuild(expelledGuild, worldId, null));
p.writeByte(0x01);
return p;
}
public static Packet disbandAlliance(int alliance) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x1D);
p.writeInt(alliance);
return p;
}
public static Packet allianceInvite(int allianceid, MapleCharacter chr) {
OutPacket p = OutPacket.create(SendOpcode.ALLIANCE_OPERATION);
p.writeByte(0x03);
p.writeInt(allianceid);
p.writeString(chr.getName());
p.writeShort(0);
return p;
}
public static Packet GuildBoss_HealerMove(short nY) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_BOSS_HEALER_MOVE);
p.writeShort(nY); //New Y Position
return p;
}
public static Packet GuildBoss_PulleyStateChange(byte nState) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_BOSS_PULLEY_STATE_CHANGE);
p.writeByte(nState);
return p;
}
/**
* Guild Name & Mark update packet, thanks to Arnah (Vertisy)
*
* @param guildName The Guild name, blank for nothing.
*/
public static Packet guildNameChanged(int chrid, String guildName) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_NAME_CHANGED);
p.writeInt(chrid);
p.writeString(guildName);
return p;
}
public static Packet guildMarkChanged(int chrId, MapleGuild guild) {
OutPacket p = OutPacket.create(SendOpcode.GUILD_MARK_CHANGED);
p.writeInt(chrId);
p.writeShort(guild.getLogoBG());
p.writeByte(guild.getLogoBGColor());
p.writeShort(guild.getLogo());
p.writeByte(guild.getLogoColor());
return p;
}
}

View File

@@ -23,6 +23,7 @@ package net.server.guild;
import client.MapleCharacter;
import client.MapleClient;
import net.packet.Packet;
import net.server.Server;
import net.server.coordinator.world.MapleInviteCoordinator;
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
@@ -30,7 +31,6 @@ import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import tools.DatabaseConnection;
import tools.PacketCreator;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -141,8 +141,8 @@ public class MapleAlliance {
Server.getInstance().addAlliance(id, alliance);
int worldid = guildMasters.get(0).getWorld();
Server.getInstance().allianceMessage(id, PacketCreator.updateAllianceInfo(alliance, worldid), -1, -1);
Server.getInstance().allianceMessage(id, PacketCreator.getGuildAlliances(alliance, worldid), -1, -1); // thanks Vcoc for noticing guilds from other alliances being visually stacked here due to this not being updated
Server.getInstance().allianceMessage(id, GuildPackets.updateAllianceInfo(alliance, worldid), -1, -1);
Server.getInstance().allianceMessage(id, GuildPackets.getGuildAlliances(alliance, worldid), -1, -1); // thanks Vcoc for noticing guilds from other alliances being visually stacked here due to this not being updated
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -273,7 +273,7 @@ public class MapleAlliance {
ps.executeUpdate();
}
Server.getInstance().allianceMessage(allianceId, PacketCreator.disbandAlliance(allianceId), -1, -1);
Server.getInstance().allianceMessage(allianceId, GuildPackets.disbandAlliance(allianceId), -1, -1);
Server.getInstance().disbandAlliance(allianceId);
} catch (SQLException sqle) {
sqle.printStackTrace();
@@ -298,13 +298,13 @@ public class MapleAlliance {
return false;
}
srv.allianceMessage(alliance.getId(), PacketCreator.removeGuildFromAlliance(alliance, guildId, worldId), -1, -1);
srv.allianceMessage(alliance.getId(), GuildPackets.removeGuildFromAlliance(alliance, guildId, worldId), -1, -1);
srv.removeGuildFromAlliance(alliance.getId(), guildId);
removeGuildFromAllianceOnDb(guildId);
srv.allianceMessage(alliance.getId(), PacketCreator.getGuildAlliances(alliance, worldId), -1, -1);
srv.allianceMessage(alliance.getId(), PacketCreator.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
srv.guildMessage(guildId, PacketCreator.disbandAlliance(alliance.getId()));
srv.allianceMessage(alliance.getId(), GuildPackets.getGuildAlliances(alliance, worldId), -1, -1);
srv.allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), alliance.getNotice()), -1, -1);
srv.guildMessage(guildId, GuildPackets.disbandAlliance(alliance.getId()));
alliance.dropMessage("[" + srv.getGuild(guildId, worldId).getName() + "] guild has left the union.");
return true;
@@ -312,8 +312,8 @@ public class MapleAlliance {
public void updateAlliancePackets(MapleCharacter chr) {
if (allianceId > 0) {
this.broadcastMessage(PacketCreator.updateAllianceInfo(this, chr.getWorld()));
this.broadcastMessage(PacketCreator.allianceNotice(this.getId(), this.getNotice()));
this.broadcastMessage(GuildPackets.updateAllianceInfo(this, chr.getWorld()));
this.broadcastMessage(GuildPackets.allianceNotice(this.getId(), this.getNotice()));
}
}
@@ -431,7 +431,7 @@ public class MapleAlliance {
}
}
public void broadcastMessage(byte[] packet) {
public void broadcastMessage(Packet packet) {
Server.getInstance().allianceMessage(allianceId, packet, -1, -1);
}
@@ -448,7 +448,7 @@ public class MapleAlliance {
c.getPlayer().dropMessage(5, "The master of the guild that you offered an invitation is currently not online.");
} else {
if (MapleInviteCoordinator.createInvite(InviteType.ALLIANCE, c.getPlayer(), allianceId, victim.getId())) {
victim.getClient().announce(PacketCreator.allianceInvite(allianceId, c.getPlayer()));
victim.sendPacket(GuildPackets.allianceInvite(allianceId, c.getPlayer()));
} else {
c.getPlayer().dropMessage(5, "The master of the guild that you offered an invitation is currently managing another invite.");
}

View File

@@ -24,6 +24,7 @@ package net.server.guild;
import client.MapleCharacter;
import client.MapleClient;
import config.YamlConfig;
import net.packet.Packet;
import net.server.PlayerStorage;
import net.server.Server;
import net.server.audit.locks.MonitoredLockType;
@@ -184,7 +185,7 @@ public class MapleGuild {
membersLock.lock();
try {
this.broadcast(PacketCreator.guildDisband(this.id));
this.broadcast(GuildPackets.guildDisband(this.id));
} finally {
membersLock.unlock();
}
@@ -279,8 +280,8 @@ public class MapleGuild {
continue;
}
byte[] packet = PacketCreator.guildNameChanged(chr.getId(), this.getName());
chr.getMap().broadcastMessage(chr, packet);
Packet packet = GuildPackets.guildNameChanged(chr.getId(), this.getName());
chr.getMap().broadcastPacket(chr, packet);
}
}
@@ -293,8 +294,8 @@ public class MapleGuild {
continue;
}
byte[] packet = PacketCreator.guildMarkChanged(chr.getId(), this);
chr.getMap().broadcastMessage(chr, packet);
Packet packet = GuildPackets.guildMarkChanged(chr.getId(), this);
chr.getMap().broadcastPacket(chr, packet);
}
}
@@ -307,20 +308,19 @@ public class MapleGuild {
continue;
}
byte[] packet = PacketCreator.showGuildInfo(chr);
chr.announce(packet);
chr.sendPacket(GuildPackets.showGuildInfo(chr));
}
}
public void broadcast(final byte[] packet) {
public void broadcast(Packet packet) {
broadcast(packet, -1, BCOp.NONE);
}
public void broadcast(final byte[] packet, int exception) {
public void broadcast(Packet packet, int exception) {
broadcast(packet, exception, BCOp.NONE);
}
public void broadcast(final byte[] packet, int exceptionId, BCOp bcop) {
public void broadcast(Packet packet, int exceptionId, BCOp bcop) {
membersLock.lock(); // membersLock awareness thanks to ProjectNano dev team
try {
synchronized (notifications) {
@@ -349,13 +349,13 @@ public class MapleGuild {
}
}
public void guildMessage(final byte[] serverNotice) {
public void guildMessage(Packet serverNotice) {
membersLock.lock();
try {
for (MapleGuildCharacter mgc : members) {
for (Channel cs : Server.getInstance().getChannelsFromWorld(world)) {
if (cs.getPlayerStorage().getCharacterById(mgc.getId()) != null) {
cs.getPlayerStorage().getCharacterById(mgc.getId()).getClient().announce(serverNotice);
cs.getPlayerStorage().getCharacterById(mgc.getId()).sendPacket(serverNotice);
break;
}
}
@@ -382,7 +382,7 @@ public class MapleGuild {
}
}
public void broadcastMessage(byte[] packet) {
public void broadcastMessage(Packet packet) {
Server.getInstance().guildMessage(id, packet);
}
@@ -401,7 +401,7 @@ public class MapleGuild {
}
}
if (bBroadcast) {
this.broadcast(PacketCreator.guildMemberOnline(id, cid, online), cid);
this.broadcast(GuildPackets.guildMemberOnline(id, cid, online), cid);
}
bDirty = true;
} finally {
@@ -479,7 +479,7 @@ public class MapleGuild {
}
}
this.broadcast(PacketCreator.newGuildMember(mgc));
this.broadcast(GuildPackets.newGuildMember(mgc));
return 1;
} finally {
membersLock.unlock();
@@ -489,7 +489,7 @@ public class MapleGuild {
public void leaveGuild(MapleGuildCharacter mgc) {
membersLock.lock();
try {
this.broadcast(PacketCreator.memberLeft(mgc, false));
this.broadcast(GuildPackets.memberLeft(mgc, false));
members.remove(mgc);
bDirty = true;
} finally {
@@ -505,7 +505,7 @@ public class MapleGuild {
while (itr.hasNext()) {
mgc = itr.next();
if (mgc.getId() == cid && initiator.getGuildRank() < mgc.getGuildRank()) {
this.broadcast(PacketCreator.memberLeft(mgc, true));
this.broadcast(GuildPackets.memberLeft(mgc, true));
itr.remove();
bDirty = true;
try {
@@ -568,7 +568,7 @@ public class MapleGuild {
membersLock.lock();
try {
this.broadcast(PacketCreator.changeRank(mgc));
this.broadcast(GuildPackets.changeRank(mgc));
} finally {
membersLock.unlock();
}
@@ -580,7 +580,7 @@ public class MapleGuild {
membersLock.lock();
try {
this.broadcast(PacketCreator.guildNotice(this.id, notice));
this.broadcast(GuildPackets.guildNotice(this.id, notice));
} finally {
membersLock.unlock();
}
@@ -593,7 +593,7 @@ public class MapleGuild {
if (mgc.equals(member)) {
member.setJobId(mgc.getJobId());
member.setLevel(mgc.getLevel());
this.broadcast(PacketCreator.guildMemberLevelJobUpdate(mgc));
this.broadcast(GuildPackets.guildMemberLevelJobUpdate(mgc));
break;
}
}
@@ -624,7 +624,7 @@ public class MapleGuild {
membersLock.lock();
try {
this.broadcast(PacketCreator.rankTitleChange(this.id, ranks));
this.broadcast(GuildPackets.rankTitleChange(this.id, ranks));
} finally {
membersLock.unlock();
}
@@ -686,7 +686,7 @@ public class MapleGuild {
membersLock.lock();
try {
this.broadcast(PacketCreator.guildCapacityChange(this.id, this.capacity));
this.broadcast(GuildPackets.guildCapacityChange(this.id, this.capacity));
} finally {
membersLock.unlock();
}
@@ -697,14 +697,14 @@ public class MapleGuild {
public void gainGP(int amount) {
this.gp += amount;
this.writeToDB(false);
this.guildMessage(PacketCreator.updateGP(this.id, this.gp));
this.guildMessage(GuildPackets.updateGP(this.id, this.gp));
this.guildMessage(PacketCreator.getGPMessage(amount));
}
public void removeGP(int amount) {
this.gp -= amount;
this.writeToDB(false);
this.guildMessage(PacketCreator.updateGP(this.id, this.gp));
this.guildMessage(GuildPackets.updateGP(this.id, this.gp));
}
public static MapleGuildResponse sendInvitation(MapleClient c, String targetName) {
@@ -718,7 +718,7 @@ public class MapleGuild {
MapleCharacter sender = c.getPlayer();
if (MapleInviteCoordinator.createInvite(InviteType.GUILD, sender, sender.getGuildId(), mc.getId())) {
mc.getClient().announce(PacketCreator.guildInvite(sender.getGuildId(), sender.getName()));
mc.sendPacket(GuildPackets.guildInvite(sender.getGuildId(), sender.getName()));
return null;
} else {
return MapleGuildResponse.MANAGING_INVITE;
@@ -743,7 +743,7 @@ public class MapleGuild {
}
if (mgr != null && sender != null) {
sender.announce(mgr.getPacket(targetName));
sender.sendPacket(mgr.getPacket(targetName));
}
return false;
}
@@ -766,7 +766,7 @@ public class MapleGuild {
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT `name`, `GP`, `logoBG`, `logoBGColor`, `logo`, `logoColor` FROM guilds ORDER BY `GP` DESC LIMIT 50", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = ps.executeQuery()) {
c.announce(PacketCreator.showGuildRanks(npcid, rs));
c.sendPacket(GuildPackets.showGuildRanks(npcid, rs));
} catch (SQLException e) {
e.printStackTrace();
System.out.println("failed to display guild ranks. " + e);

View File

@@ -21,7 +21,7 @@
*/
package net.server.guild;
import tools.PacketCreator;
import net.packet.Packet;
public enum MapleGuildResponse {
NOT_IN_CHANNEL(0x2a),
@@ -31,17 +31,17 @@ public enum MapleGuildResponse {
MANAGING_INVITE(0x36),
DENIED_INVITE(0x37);
private int value;
private final int value;
private MapleGuildResponse(int val) {
MapleGuildResponse(int val) {
value = val;
}
public final byte[] getPacket(String targetName) {
public final Packet getPacket(String targetName) {
if (value >= MANAGING_INVITE.value) {
return PacketCreator.responseGuildMessage((byte) value, targetName);
return GuildPackets.responseGuildMessage((byte) value, targetName);
} else {
return PacketCreator.genericGuildMessage((byte) value);
return GuildPackets.genericGuildMessage((byte) value);
}
}
}

View File

@@ -30,7 +30,7 @@ public class CustomPacketHandler implements MaplePacketHandler {
@Override
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
if (slea.available() > 0 && c.getGMLevel() == 4) {//w/e
c.announce(PacketCreator.customPacket(slea.read((int) slea.available())));
c.sendPacket(PacketCreator.customPacket(slea.read((int) slea.available())));
}
}

Some files were not shown because too many files have changed in this diff Show More