Server broadcastMessage to worlds & MapleQuestItemFetcher update
Fixed a bug with the map drop mechanics sometimes permitting over the max drop count in certain circumstances. Fixed server broadcastMessage always broadcasting packets at world 0, even if the caller is from another world id. Improved the MapleQuestItemFetcher, now displaying expired quests alongside the reported info.
This commit is contained in:
@@ -1488,7 +1488,7 @@ public class MapleItemInformationProvider {
|
||||
if (!EquipSlot.getFromTextSlot(islot).isAllowed(dst, isCash(id))) {
|
||||
equip.wear(false);
|
||||
String itemName = MapleItemInformationProvider.getInstance().getName(equip.getItemId());
|
||||
Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip("[WARNING]: " + chr.getName() + " tried to equip " + itemName + " into slot " + dst + "."));
|
||||
Server.getInstance().broadcastGMMessage(chr.getWorld(), MaplePacketCreator.sendYellowTip("[WARNING]: " + chr.getName() + " tried to equip " + itemName + " into slot " + dst + "."));
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to forcibly equip an item.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to equip " + itemName + " into " + dst + " slot.\r\n");
|
||||
return false;
|
||||
|
||||
@@ -133,7 +133,7 @@ public class MapleExpedition {
|
||||
broadcastExped(MaplePacketCreator.removeClock());
|
||||
broadcastExped(MaplePacketCreator.serverNotice(6, "[Expedition] The expedition has started! Good luck, brave heroes!"));
|
||||
startTime = System.currentTimeMillis();
|
||||
Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, "[Expedition] " + type.toString() + " Expedition started with leader: " + leader.getName()));
|
||||
Server.getInstance().broadcastGMMessage(leader.getWorld(), MaplePacketCreator.serverNotice(6, "[Expedition] " + type.toString() + " Expedition started with leader: " + leader.getName()));
|
||||
}
|
||||
|
||||
public String addMember(MapleCharacter player) {
|
||||
|
||||
@@ -708,21 +708,22 @@ public class MapleMap {
|
||||
return droppedItemCount.get();
|
||||
}
|
||||
|
||||
private void instantiateItemDrop(MapleMapItem mdrop) {
|
||||
private synchronized void instantiateItemDrop(MapleMapItem mdrop) {
|
||||
if(droppedItemCount.get() >= ServerConstants.ITEM_LIMIT_ON_MAP) {
|
||||
MapleMapObject mapobj;
|
||||
|
||||
objectWLock.lock();
|
||||
try {
|
||||
mapobj = registeredDrops.remove(0).get();
|
||||
while(mapobj == null) {
|
||||
do {
|
||||
objectWLock.lock();
|
||||
try {
|
||||
mapobj = registeredDrops.remove(0).get();
|
||||
while(mapobj == null) {
|
||||
if(registeredDrops.isEmpty()) break;
|
||||
mapobj = registeredDrops.remove(0).get();
|
||||
}
|
||||
} finally {
|
||||
objectWLock.unlock();
|
||||
}
|
||||
} finally {
|
||||
objectWLock.unlock();
|
||||
}
|
||||
|
||||
makeDisappearItemFromMap(mapobj);
|
||||
} while (!makeDisappearItemFromMap(mapobj));
|
||||
}
|
||||
|
||||
objectWLock.lock();
|
||||
@@ -2806,24 +2807,30 @@ public class MapleMap {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void makeDisappearItemFromMap(MapleMapObject mapobj) {
|
||||
public boolean makeDisappearItemFromMap(MapleMapObject mapobj) {
|
||||
if(mapobj instanceof MapleMapItem) {
|
||||
makeDisappearItemFromMap((MapleMapItem) mapobj);
|
||||
return makeDisappearItemFromMap((MapleMapItem) mapobj);
|
||||
} else {
|
||||
return mapobj == null; // no drop to make disappear...
|
||||
}
|
||||
}
|
||||
|
||||
public void makeDisappearItemFromMap(MapleMapItem mapitem) {
|
||||
public boolean makeDisappearItemFromMap(MapleMapItem mapitem) {
|
||||
if (mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) {
|
||||
mapitem.lockItem();
|
||||
try {
|
||||
if (mapitem.isPickedUp()) {
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
MapleMap.this.pickItemDrop(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem);
|
||||
return true;
|
||||
} finally {
|
||||
mapitem.unlockItem();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private class ActivateItemReactor implements Runnable {
|
||||
|
||||
@@ -57,8 +57,8 @@ public class MapleTVEffect {
|
||||
Server server = Server.getInstance();
|
||||
ACTIVE = activity;
|
||||
if (ACTIVE) {
|
||||
server.broadcastMessage(MaplePacketCreator.enableTV());
|
||||
server.broadcastMessage(MaplePacketCreator.sendTV(user, message, type <= 2 ? type : type - 3, partner));
|
||||
server.broadcastMessage(user.getWorld(), MaplePacketCreator.enableTV());
|
||||
server.broadcastMessage(user.getWorld(), MaplePacketCreator.sendTV(user, message, type <= 2 ? type : type - 3, partner));
|
||||
int delay = 15000;
|
||||
if (type == 4) {
|
||||
delay = 30000;
|
||||
@@ -72,7 +72,7 @@ public class MapleTVEffect {
|
||||
}
|
||||
}, delay);
|
||||
} else {
|
||||
server.broadcastMessage(MaplePacketCreator.removeTV());
|
||||
server.broadcastMessage(user.getWorld(), MaplePacketCreator.removeTV());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user