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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user