Rename and clean up MapleHiredMerchant
This commit is contained in:
@@ -151,7 +151,7 @@ public class Character extends AbstractCharacterObject {
|
|||||||
private int merchantmeso;
|
private int merchantmeso;
|
||||||
private BuddyList buddylist;
|
private BuddyList buddylist;
|
||||||
private EventInstanceManager eventInstance = null;
|
private EventInstanceManager eventInstance = null;
|
||||||
private MapleHiredMerchant hiredMerchant = null;
|
private HiredMerchant hiredMerchant = null;
|
||||||
private Client client;
|
private Client client;
|
||||||
private GuildCharacter mgc = null;
|
private GuildCharacter mgc = null;
|
||||||
private PartyCharacter mpc = null;
|
private PartyCharacter mpc = null;
|
||||||
@@ -5032,7 +5032,7 @@ public class Character extends AbstractCharacterObject {
|
|||||||
return hair;
|
return hair;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapleHiredMerchant getHiredMerchant() {
|
public HiredMerchant getHiredMerchant() {
|
||||||
return hiredMerchant;
|
return hiredMerchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5575,7 +5575,7 @@ public class Character extends AbstractCharacterObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void closeHiredMerchant(boolean closeMerchant) {
|
public void closeHiredMerchant(boolean closeMerchant) {
|
||||||
MapleHiredMerchant merchant = this.getHiredMerchant();
|
HiredMerchant merchant = this.getHiredMerchant();
|
||||||
if (merchant == null) {
|
if (merchant == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -8997,7 +8997,7 @@ public class Character extends AbstractCharacterObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHiredMerchant(MapleHiredMerchant merchant) {
|
public void setHiredMerchant(HiredMerchant merchant) {
|
||||||
this.hiredMerchant = merchant;
|
this.hiredMerchant = merchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import client.inventory.manipulator.InventoryManipulator;
|
|||||||
import net.server.Server;
|
import net.server.Server;
|
||||||
import net.server.world.World;
|
import net.server.world.World;
|
||||||
import server.MapleItemInformationProvider;
|
import server.MapleItemInformationProvider;
|
||||||
import server.maps.MapleHiredMerchant;
|
import server.maps.HiredMerchant;
|
||||||
import tools.DatabaseConnection;
|
import tools.DatabaseConnection;
|
||||||
import tools.FilePrinter;
|
import tools.FilePrinter;
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
@@ -282,7 +282,7 @@ public class FredrickProcessor {
|
|||||||
chr.withdrawMerchantMesos();
|
chr.withdrawMerchantMesos();
|
||||||
|
|
||||||
if (deleteFredrickItems(chr.getId())) {
|
if (deleteFredrickItems(chr.getId())) {
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
|
|
||||||
if(merchant != null)
|
if(merchant != null)
|
||||||
merchant.clearItems();
|
merchant.clearItems();
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public final class Channel {
|
|||||||
private MapleMapManager mapManager;
|
private MapleMapManager mapManager;
|
||||||
private EventScriptManager eventSM;
|
private EventScriptManager eventSM;
|
||||||
private ServicesManager services;
|
private ServicesManager services;
|
||||||
private Map<Integer, MapleHiredMerchant> hiredMerchants = new HashMap<>();
|
private Map<Integer, HiredMerchant> hiredMerchants = new HashMap<>();
|
||||||
private final Map<Integer, Integer> storedVars = new HashMap<>();
|
private final Map<Integer, Integer> storedVars = new HashMap<>();
|
||||||
private Set<Integer> playersAway = new HashSet<>();
|
private Set<Integer> playersAway = new HashSet<>();
|
||||||
private Map<ExpeditionType, Expedition> expeditions = new HashMap<>();
|
private Map<ExpeditionType, Expedition> expeditions = new HashMap<>();
|
||||||
@@ -228,7 +228,7 @@ public final class Channel {
|
|||||||
|
|
||||||
private void closeAllMerchants() {
|
private void closeAllMerchants() {
|
||||||
try {
|
try {
|
||||||
List<MapleHiredMerchant> merchs;
|
List<HiredMerchant> merchs;
|
||||||
|
|
||||||
merchWlock.lock();
|
merchWlock.lock();
|
||||||
try {
|
try {
|
||||||
@@ -238,7 +238,7 @@ public final class Channel {
|
|||||||
merchWlock.unlock();
|
merchWlock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (MapleHiredMerchant merch : merchs) {
|
for (HiredMerchant merch : merchs) {
|
||||||
merch.forceClose();
|
merch.forceClose();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -352,7 +352,7 @@ public final class Channel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Integer, MapleHiredMerchant> getHiredMerchants() {
|
public Map<Integer, HiredMerchant> getHiredMerchants() {
|
||||||
merchRlock.lock();
|
merchRlock.lock();
|
||||||
try {
|
try {
|
||||||
return Collections.unmodifiableMap(hiredMerchants);
|
return Collections.unmodifiableMap(hiredMerchants);
|
||||||
@@ -361,7 +361,7 @@ public final class Channel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addHiredMerchant(int chrid, MapleHiredMerchant hm) {
|
public void addHiredMerchant(int chrid, HiredMerchant hm) {
|
||||||
merchWlock.lock();
|
merchWlock.lock();
|
||||||
try {
|
try {
|
||||||
hiredMerchants.put(chrid, hm);
|
hiredMerchants.put(chrid, hm);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import client.Client;
|
|||||||
import constants.game.GameConstants;
|
import constants.game.GameConstants;
|
||||||
import net.AbstractPacketHandler;
|
import net.AbstractPacketHandler;
|
||||||
import net.packet.InPacket;
|
import net.packet.InPacket;
|
||||||
import server.maps.MapleHiredMerchant;
|
import server.maps.HiredMerchant;
|
||||||
import server.maps.MaplePlayerShop;
|
import server.maps.MaplePlayerShop;
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ public final class OwlWarpHandler extends AbstractPacketHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MapleHiredMerchant hm = c.getWorldServer().getHiredMerchant(ownerid); // if both hired merchant and player shop is on the same map
|
HiredMerchant hm = c.getWorldServer().getHiredMerchant(ownerid); // if both hired merchant and player shop is on the same map
|
||||||
MaplePlayerShop ps;
|
MaplePlayerShop ps;
|
||||||
if(hm == null || hm.getMapId() != mapid || !hm.hasItem(c.getPlayer().getOwlSearch())) {
|
if(hm == null || hm.getMapId() != mapid || !hm.hasItem(c.getPlayer().getOwlSearch())) {
|
||||||
ps = c.getWorldServer().getPlayerShop(ownerid);
|
ps = c.getWorldServer().getPlayerShop(ownerid);
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
c.getWorldServer().registerPlayerShop(shop);
|
c.getWorldServer().registerPlayerShop(shop);
|
||||||
//c.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(1));
|
//c.sendPacket(PacketCreator.getPlayerShopRemoveVisitor(1));
|
||||||
} else if (ItemConstants.isHiredMerchant(itemId)) {
|
} else if (ItemConstants.isHiredMerchant(itemId)) {
|
||||||
MapleHiredMerchant merchant = new MapleHiredMerchant(chr, desc, itemId);
|
HiredMerchant merchant = new HiredMerchant(chr, desc, itemId);
|
||||||
chr.setHiredMerchant(merchant);
|
chr.setHiredMerchant(merchant);
|
||||||
c.getWorldServer().registerHiredMerchant(merchant);
|
c.getWorldServer().registerHiredMerchant(merchant);
|
||||||
chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant);
|
chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant);
|
||||||
@@ -308,13 +308,13 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
} else {
|
} else {
|
||||||
chr.sendPacket(PacketCreator.getMiniRoomError(22));
|
chr.sendPacket(PacketCreator.getMiniRoomError(22));
|
||||||
}
|
}
|
||||||
} else if (ob instanceof MapleHiredMerchant && chr.getHiredMerchant() == null) {
|
} else if (ob instanceof HiredMerchant && chr.getHiredMerchant() == null) {
|
||||||
MapleHiredMerchant merchant = (MapleHiredMerchant) ob;
|
HiredMerchant merchant = (HiredMerchant) ob;
|
||||||
merchant.visitShop(chr);
|
merchant.visitShop(chr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (mode == Action.CHAT.getCode()) { // chat lol
|
} else if (mode == Action.CHAT.getCode()) { // chat lol
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (chr.getTrade() != null) {
|
if (chr.getTrade() != null) {
|
||||||
chr.getTrade().chat(p.readString());
|
chr.getTrade().chat(p.readString());
|
||||||
} else if (chr.getPlayerShop() != null) { //mini game
|
} else if (chr.getPlayerShop() != null) { //mini game
|
||||||
@@ -359,7 +359,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MaplePlayerShop shop = chr.getPlayerShop();
|
MaplePlayerShop shop = chr.getPlayerShop();
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (shop != null && shop.isOwner(chr)) {
|
if (shop != null && shop.isOwner(chr)) {
|
||||||
if(YamlConfig.config.server.USE_ERASE_PERMIT_ON_OPENSHOP) {
|
if(YamlConfig.config.server.USE_ERASE_PERMIT_ON_OPENSHOP) {
|
||||||
try {
|
try {
|
||||||
@@ -601,7 +601,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
|
|
||||||
MaplePlayerShopItem shopItem = new MaplePlayerShopItem(sellItem, bundles, price);
|
MaplePlayerShopItem shopItem = new MaplePlayerShopItem(sellItem, bundles, price);
|
||||||
MaplePlayerShop shop = chr.getPlayerShop();
|
MaplePlayerShop shop = chr.getPlayerShop();
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (shop != null && shop.isOwner(chr)) {
|
if (shop != null && shop.isOwner(chr)) {
|
||||||
if (shop.isOpen() || !shop.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots
|
if (shop.isOpen() || !shop.addItem(shopItem)) { // thanks Vcoc for pointing an exploit with unlimited shop slots
|
||||||
c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore."));
|
c.sendPacket(PacketCreator.serverNotice(1, "You can't sell it anymore."));
|
||||||
@@ -667,12 +667,12 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
shop.takeItemBack(slot, chr);
|
shop.takeItemBack(slot, chr);
|
||||||
}
|
}
|
||||||
} else if (mode == Action.MERCHANT_MESO.getCode()) {
|
} else if (mode == Action.MERCHANT_MESO.getCode()) {
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (merchant == null) return;
|
if (merchant == null) return;
|
||||||
|
|
||||||
merchant.withdrawMesos(chr);
|
merchant.withdrawMesos(chr);
|
||||||
} else if (mode == Action.MERCHANT_ORGANIZE.getCode()) {
|
} else if (mode == Action.MERCHANT_ORGANIZE.getCode()) {
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (merchant == null || !merchant.isOwner(chr)) return;
|
if (merchant == null || !merchant.isOwner(chr)) return;
|
||||||
|
|
||||||
merchant.withdrawMesos(chr);
|
merchant.withdrawMesos(chr);
|
||||||
@@ -696,7 +696,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MaplePlayerShop shop = chr.getPlayerShop();
|
MaplePlayerShop shop = chr.getPlayerShop();
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (shop != null && shop.isVisitor(chr)) {
|
if (shop != null && shop.isVisitor(chr)) {
|
||||||
if (shop.buy(c, itemid, quantity)) {
|
if (shop.buy(c, itemid, quantity)) {
|
||||||
shop.broadcast(PacketCreator.getPlayerShopItemUpdate(shop));
|
shop.broadcast(PacketCreator.getPlayerShopItemUpdate(shop));
|
||||||
@@ -708,7 +708,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
} else if (mode == Action.TAKE_ITEM_BACK.getCode()) {
|
} else if (mode == Action.TAKE_ITEM_BACK.getCode()) {
|
||||||
if (isTradeOpen(chr)) return;
|
if (isTradeOpen(chr)) return;
|
||||||
|
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (merchant != null && merchant.isOwner(chr)) {
|
if (merchant != null && merchant.isOwner(chr)) {
|
||||||
if (merchant.isOpen()) {
|
if (merchant.isOpen()) {
|
||||||
c.sendPacket(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."));
|
||||||
@@ -728,14 +728,14 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
|||||||
} else if (mode == Action.CLOSE_MERCHANT.getCode()) {
|
} else if (mode == Action.CLOSE_MERCHANT.getCode()) {
|
||||||
if (isTradeOpen(chr)) return;
|
if (isTradeOpen(chr)) return;
|
||||||
|
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if (merchant != null) {
|
if (merchant != null) {
|
||||||
merchant.closeOwnerMerchant(chr);
|
merchant.closeOwnerMerchant(chr);
|
||||||
}
|
}
|
||||||
} else if (mode == Action.MAINTENANCE_OFF.getCode()) {
|
} else if (mode == Action.MAINTENANCE_OFF.getCode()) {
|
||||||
if (isTradeOpen(chr)) return;
|
if (isTradeOpen(chr)) return;
|
||||||
|
|
||||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
HiredMerchant merchant = chr.getHiredMerchant();
|
||||||
if(merchant != null) {
|
if(merchant != null) {
|
||||||
if (merchant.isOwner(chr)) {
|
if (merchant.isOwner(chr)) {
|
||||||
if (merchant.getItems().isEmpty()) {
|
if (merchant.getItems().isEmpty()) {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import client.Character;
|
|||||||
import client.Client;
|
import client.Client;
|
||||||
import net.AbstractPacketHandler;
|
import net.AbstractPacketHandler;
|
||||||
import net.packet.InPacket;
|
import net.packet.InPacket;
|
||||||
import server.maps.MapleHiredMerchant;
|
import server.maps.HiredMerchant;
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,7 +37,7 @@ public class RemoteStoreHandler extends AbstractPacketHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void handlePacket(InPacket p, Client c) {
|
public void handlePacket(InPacket p, Client c) {
|
||||||
Character chr = c.getPlayer();
|
Character chr = c.getPlayer();
|
||||||
MapleHiredMerchant hm = getMerchant(c);
|
HiredMerchant hm = getMerchant(c);
|
||||||
if (hm != null && hm.isOwner(chr)) {
|
if (hm != null && hm.isOwner(chr)) {
|
||||||
if (hm.getChannel() == chr.getClient().getChannel()) {
|
if (hm.getChannel() == chr.getClient().getChannel()) {
|
||||||
hm.visitShop(chr);
|
hm.visitShop(chr);
|
||||||
@@ -51,7 +51,7 @@ public class RemoteStoreHandler extends AbstractPacketHandler {
|
|||||||
c.sendPacket(PacketCreator.enableActions());
|
c.sendPacket(PacketCreator.enableActions());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static MapleHiredMerchant getMerchant(Client c) {
|
private static HiredMerchant getMerchant(Client c) {
|
||||||
if (c.getPlayer().hasMerchant()) {
|
if (c.getPlayer().hasMerchant()) {
|
||||||
return c.getWorldServer().getHiredMerchant(c.getPlayer().getId());
|
return c.getWorldServer().getHiredMerchant(c.getPlayer().getId());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ public class World {
|
|||||||
private Map<Integer, MaplePlayerShop> activePlayerShops = new LinkedHashMap<>();
|
private Map<Integer, MaplePlayerShop> activePlayerShops = new LinkedHashMap<>();
|
||||||
|
|
||||||
private MonitoredReentrantLock activeMerchantsLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.WORLD_MERCHS, true);
|
private MonitoredReentrantLock activeMerchantsLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.WORLD_MERCHS, true);
|
||||||
private Map<Integer, Pair<MapleHiredMerchant, Integer>> activeMerchants = new LinkedHashMap<>();
|
private Map<Integer, Pair<HiredMerchant, Integer>> activeMerchants = new LinkedHashMap<>();
|
||||||
private ScheduledFuture<?> merchantSchedule;
|
private ScheduledFuture<?> merchantSchedule;
|
||||||
private long merchantUpdate;
|
private long merchantUpdate;
|
||||||
|
|
||||||
@@ -1555,7 +1555,7 @@ public class World {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerHiredMerchant(MapleHiredMerchant hm) {
|
public void registerHiredMerchant(HiredMerchant hm) {
|
||||||
activeMerchantsLock.lock();
|
activeMerchantsLock.lock();
|
||||||
try {
|
try {
|
||||||
int initProc;
|
int initProc;
|
||||||
@@ -1568,7 +1568,7 @@ public class World {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unregisterHiredMerchant(MapleHiredMerchant hm) {
|
public void unregisterHiredMerchant(HiredMerchant hm) {
|
||||||
activeMerchantsLock.lock();
|
activeMerchantsLock.lock();
|
||||||
try {
|
try {
|
||||||
activeMerchants.remove(hm.getOwnerId());
|
activeMerchants.remove(hm.getOwnerId());
|
||||||
@@ -1578,15 +1578,15 @@ public class World {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void runHiredMerchantSchedule() {
|
public void runHiredMerchantSchedule() {
|
||||||
Map<Integer, Pair<MapleHiredMerchant, Integer>> deployedMerchants;
|
Map<Integer, Pair<HiredMerchant, Integer>> deployedMerchants;
|
||||||
activeMerchantsLock.lock();
|
activeMerchantsLock.lock();
|
||||||
try {
|
try {
|
||||||
merchantUpdate = Server.getInstance().getCurrentTime();
|
merchantUpdate = Server.getInstance().getCurrentTime();
|
||||||
deployedMerchants = new LinkedHashMap<>(activeMerchants);
|
deployedMerchants = new LinkedHashMap<>(activeMerchants);
|
||||||
|
|
||||||
for(Map.Entry<Integer, Pair<MapleHiredMerchant, Integer>> dm: deployedMerchants.entrySet()) {
|
for(Map.Entry<Integer, Pair<HiredMerchant, Integer>> dm: deployedMerchants.entrySet()) {
|
||||||
int timeOn = dm.getValue().getRight();
|
int timeOn = dm.getValue().getRight();
|
||||||
MapleHiredMerchant hm = dm.getValue().getLeft();
|
HiredMerchant hm = dm.getValue().getLeft();
|
||||||
|
|
||||||
if(timeOn <= 144) { // 1440 minutes == 24hrs
|
if(timeOn <= 144) { // 1440 minutes == 24hrs
|
||||||
activeMerchants.put(hm.getOwnerId(), new Pair<>(dm.getValue().getLeft(), timeOn + 1));
|
activeMerchants.put(hm.getOwnerId(), new Pair<>(dm.getValue().getLeft(), timeOn + 1));
|
||||||
@@ -1602,12 +1602,12 @@ public class World {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MapleHiredMerchant> getActiveMerchants() {
|
public List<HiredMerchant> getActiveMerchants() {
|
||||||
List<MapleHiredMerchant> hmList = new ArrayList<>();
|
List<HiredMerchant> hmList = new ArrayList<>();
|
||||||
activeMerchantsLock.lock();
|
activeMerchantsLock.lock();
|
||||||
try {
|
try {
|
||||||
for(Pair<MapleHiredMerchant, Integer> hmp : activeMerchants.values()) {
|
for(Pair<HiredMerchant, Integer> hmp : activeMerchants.values()) {
|
||||||
MapleHiredMerchant hm = hmp.getLeft();
|
HiredMerchant hm = hmp.getLeft();
|
||||||
if(hm.isOpen()) {
|
if(hm.isOpen()) {
|
||||||
hmList.add(hm);
|
hmList.add(hm);
|
||||||
}
|
}
|
||||||
@@ -1619,7 +1619,7 @@ public class World {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapleHiredMerchant getHiredMerchant(int ownerid) {
|
public HiredMerchant getHiredMerchant(int ownerid) {
|
||||||
activeMerchantsLock.lock();
|
activeMerchantsLock.lock();
|
||||||
try {
|
try {
|
||||||
if(activeMerchants.containsKey(ownerid)) {
|
if(activeMerchants.containsKey(ownerid)) {
|
||||||
@@ -1816,7 +1816,7 @@ public class World {
|
|||||||
public List<Pair<MaplePlayerShopItem, AbstractMapObject>> getAvailableItemBundles(int itemid) {
|
public List<Pair<MaplePlayerShopItem, AbstractMapObject>> getAvailableItemBundles(int itemid) {
|
||||||
List<Pair<MaplePlayerShopItem, AbstractMapObject>> hmsAvailable = new ArrayList<>();
|
List<Pair<MaplePlayerShopItem, AbstractMapObject>> hmsAvailable = new ArrayList<>();
|
||||||
|
|
||||||
for (MapleHiredMerchant hm : getActiveMerchants()) {
|
for (HiredMerchant hm : getActiveMerchants()) {
|
||||||
List<MaplePlayerShopItem> itemBundles = hm.sendAvailableBundles(itemid);
|
List<MaplePlayerShopItem> itemBundles = hm.sendAvailableBundles(itemid);
|
||||||
|
|
||||||
for(MaplePlayerShopItem mpsi : itemBundles) {
|
for(MaplePlayerShopItem mpsi : itemBundles) {
|
||||||
|
|||||||
@@ -53,26 +53,28 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author XoticStory
|
* @author XoticStory
|
||||||
* @author Ronan - concurrency protection
|
* @author Ronan - concurrency protection
|
||||||
*/
|
*/
|
||||||
public class MapleHiredMerchant extends AbstractMapObject {
|
public class HiredMerchant extends AbstractMapObject {
|
||||||
private int ownerId, itemId, mesos = 0;
|
private final int ownerId;
|
||||||
private int channel, world;
|
private final int itemId;
|
||||||
private long start;
|
private final int mesos = 0;
|
||||||
|
private final int channel;
|
||||||
|
private final int world;
|
||||||
|
private final long start;
|
||||||
private String ownerName = "";
|
private String ownerName = "";
|
||||||
private String description = "";
|
private String description = "";
|
||||||
private Character[] visitors = new Character[3];
|
private final Character[] visitors = new Character[3];
|
||||||
private final List<MaplePlayerShopItem> items = new LinkedList<>();
|
private final List<MaplePlayerShopItem> items = new LinkedList<>();
|
||||||
private List<Pair<String, Byte>> messages = new LinkedList<>();
|
private final List<Pair<String, Byte>> messages = new LinkedList<>();
|
||||||
private List<SoldItem> sold = new LinkedList<>();
|
private final List<SoldItem> sold = new LinkedList<>();
|
||||||
private AtomicBoolean open = new AtomicBoolean();
|
private final AtomicBoolean open = new AtomicBoolean();
|
||||||
private boolean published = false;
|
private boolean published = false;
|
||||||
private MapleMap map;
|
private MapleMap map;
|
||||||
private Lock visitorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.VISITOR_MERCH, true);
|
private final Lock visitorLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.VISITOR_MERCH, true);
|
||||||
|
|
||||||
public MapleHiredMerchant(final Character owner, String desc, int itemId) {
|
public HiredMerchant(final Character owner, String desc, int itemId) {
|
||||||
this.setPosition(owner.getPosition());
|
this.setPosition(owner.getPosition());
|
||||||
this.start = System.currentTimeMillis();
|
this.start = System.currentTimeMillis();
|
||||||
this.ownerId = owner.getId();
|
this.ownerId = owner.getId();
|
||||||
@@ -500,7 +502,9 @@ public class MapleHiredMerchant extends AbstractMapObject {
|
|||||||
visitorLock.lock();
|
visitorLock.lock();
|
||||||
try {
|
try {
|
||||||
Character[] copy = new Character[3];
|
Character[] copy = new Character[3];
|
||||||
for(int i = 0; i < visitors.length; i++) copy[i] = visitors[i];
|
for (int i = 0; i < visitors.length; i++) {
|
||||||
|
copy[i] = visitors[i];
|
||||||
|
}
|
||||||
|
|
||||||
return copy;
|
return copy;
|
||||||
} finally {
|
} finally {
|
||||||
@@ -526,7 +530,9 @@ public class MapleHiredMerchant extends AbstractMapObject {
|
|||||||
|
|
||||||
public boolean addItem(MaplePlayerShopItem item) {
|
public boolean addItem(MaplePlayerShopItem item) {
|
||||||
synchronized (items) {
|
synchronized (items) {
|
||||||
if (items.size() >= 16) return false;
|
if (items.size() >= 16) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
items.add(item);
|
items.add(item);
|
||||||
return true;
|
return true;
|
||||||
@@ -607,7 +613,9 @@ public class MapleHiredMerchant extends AbstractMapObject {
|
|||||||
List<MaplePlayerShopItem> list = new LinkedList<>();
|
List<MaplePlayerShopItem> list = new LinkedList<>();
|
||||||
List<MaplePlayerShopItem> all = new ArrayList<>();
|
List<MaplePlayerShopItem> all = new ArrayList<>();
|
||||||
|
|
||||||
if(!open.get()) return list;
|
if (!open.get()) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
synchronized (items) {
|
synchronized (items) {
|
||||||
all.addAll(items);
|
all.addAll(items);
|
||||||
@@ -2156,7 +2156,7 @@ public class PacketCreator {
|
|||||||
p.writeByte(joinable);
|
p.writeByte(joinable);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void updateHiredMerchantBoxInfo(OutPacket p, MapleHiredMerchant hm) {
|
private static void updateHiredMerchantBoxInfo(OutPacket p, HiredMerchant hm) {
|
||||||
byte[] roomInfo = hm.getShopRoomInfo();
|
byte[] roomInfo = hm.getShopRoomInfo();
|
||||||
|
|
||||||
p.writeByte(5);
|
p.writeByte(5);
|
||||||
@@ -2166,7 +2166,7 @@ public class PacketCreator {
|
|||||||
p.writeBytes(roomInfo); // visitor capacity here, thanks GabrielSin
|
p.writeBytes(roomInfo); // visitor capacity here, thanks GabrielSin
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Packet updateHiredMerchantBox(MapleHiredMerchant hm) {
|
public static Packet updateHiredMerchantBox(HiredMerchant hm) {
|
||||||
final OutPacket p = OutPacket.create(SendOpcode.UPDATE_HIRED_MERCHANT);
|
final OutPacket p = OutPacket.create(SendOpcode.UPDATE_HIRED_MERCHANT);
|
||||||
p.writeInt(hm.getOwnerId());
|
p.writeInt(hm.getOwnerId());
|
||||||
updateHiredMerchantBoxInfo(p, hm);
|
updateHiredMerchantBoxInfo(p, hm);
|
||||||
@@ -5028,7 +5028,7 @@ public class PacketCreator {
|
|||||||
p.writeInt(owner.getId());
|
p.writeInt(owner.getId());
|
||||||
p.writeByte(owner.getClient().getChannel() - 1);
|
p.writeByte(owner.getClient().getChannel() - 1);
|
||||||
} else {
|
} else {
|
||||||
MapleHiredMerchant hm = (MapleHiredMerchant) mo;
|
HiredMerchant hm = (HiredMerchant) mo;
|
||||||
|
|
||||||
p.writeString(hm.getOwner());
|
p.writeString(hm.getOwner());
|
||||||
p.writeInt(hm.getMapId());
|
p.writeInt(hm.getMapId());
|
||||||
@@ -5080,7 +5080,7 @@ public class PacketCreator {
|
|||||||
* 0x12 = FKING POPUP LOL
|
* 0x12 = FKING POPUP LOL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static Packet getHiredMerchant(Character chr, MapleHiredMerchant hm, boolean firstTime) {//Thanks Dustin
|
public static Packet getHiredMerchant(Character chr, HiredMerchant hm, boolean firstTime) {//Thanks Dustin
|
||||||
final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION);
|
final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION);
|
||||||
p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode());
|
p.writeByte(PlayerInteractionHandler.Action.ROOM.getCode());
|
||||||
p.writeByte(0x05);
|
p.writeByte(0x05);
|
||||||
@@ -5114,9 +5114,9 @@ public class PacketCreator {
|
|||||||
p.writeShort(0);
|
p.writeShort(0);
|
||||||
p.writeShort(hm.getTimeOpen());
|
p.writeShort(hm.getTimeOpen());
|
||||||
p.writeByte(firstTime ? 1 : 0);
|
p.writeByte(firstTime ? 1 : 0);
|
||||||
List<MapleHiredMerchant.SoldItem> sold = hm.getSold();
|
List<HiredMerchant.SoldItem> sold = hm.getSold();
|
||||||
p.writeByte(sold.size());
|
p.writeByte(sold.size());
|
||||||
for (MapleHiredMerchant.SoldItem s : sold) {
|
for (HiredMerchant.SoldItem s : sold) {
|
||||||
p.writeInt(s.getItemId());
|
p.writeInt(s.getItemId());
|
||||||
p.writeShort(s.getQuantity());
|
p.writeShort(s.getQuantity());
|
||||||
p.writeInt(s.getMesos());
|
p.writeInt(s.getMesos());
|
||||||
@@ -5141,7 +5141,7 @@ public class PacketCreator {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Packet updateHiredMerchant(MapleHiredMerchant hm, Character chr) {
|
public static Packet updateHiredMerchant(HiredMerchant hm, Character chr) {
|
||||||
final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION);
|
final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION);
|
||||||
p.writeByte(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode());
|
p.writeByte(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode());
|
||||||
p.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso());
|
p.writeInt(hm.isOwner(chr) ? chr.getMerchantMeso() : chr.getMeso());
|
||||||
@@ -5212,7 +5212,7 @@ public class PacketCreator {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Packet spawnHiredMerchantBox(MapleHiredMerchant hm) {
|
public static Packet spawnHiredMerchantBox(HiredMerchant hm) {
|
||||||
final OutPacket p = OutPacket.create(SendOpcode.SPAWN_HIRED_MERCHANT);
|
final OutPacket p = OutPacket.create(SendOpcode.SPAWN_HIRED_MERCHANT);
|
||||||
p.writeInt(hm.getOwnerId());
|
p.writeInt(hm.getOwnerId());
|
||||||
p.writeInt(hm.getItemId());
|
p.writeInt(hm.getItemId());
|
||||||
|
|||||||
Reference in New Issue
Block a user