Sync with L2JServer Jan 30th 2015.

This commit is contained in:
mobius
2015-01-31 03:47:34 +00:00
parent acf0c17ba4
commit e7005fbedd
148 changed files with 1922 additions and 1672 deletions

View File

@ -97,7 +97,7 @@ import com.l2jserver.gameserver.handler.EffectHandler;
import com.l2jserver.gameserver.idfactory.IdFactory;
import com.l2jserver.gameserver.instancemanager.AirShipManager;
import com.l2jserver.gameserver.instancemanager.AntiFeedManager;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.instancemanager.BoatManager;
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
import com.l2jserver.gameserver.instancemanager.CastleManager;
@ -242,7 +242,7 @@ public class GameServer
FishingMonstersData.getInstance();
FishingRodsData.getInstance();
HennaData.getInstance();
AuctionManager.getInstance();
AuctionHouseManager.getInstance();
PrimeShopData.getInstance();
AppearanceItemData.getInstance();

View File

@ -191,9 +191,16 @@ public class GeoData
*/
public int getSpawnHeight(int x, int y, int z)
{
// + 30, defend against defective geodata and invalid spawn z
int nearestZ = getNearestZ(getGeoX(x), getGeoY(y), z + 30); // was z + 100
return Math.abs(nearestZ - z) <= SPAWN_Z_DELTA_LIMIT ? nearestZ : z;
final int geoX = getGeoX(x);
final int geoY = getGeoY(y);
if (!hasGeoPos(geoX, geoY))
{
return z;
}
int nextLowerZ = getNextLowerZ(geoX, geoY, z + 100);
return Math.abs(nextLowerZ - z) <= SPAWN_Z_DELTA_LIMIT ? nextLowerZ : z;
}
/**

View File

@ -19,7 +19,6 @@
package com.l2jserver.gameserver.data.xml.impl;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -28,7 +27,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.IXmlReader;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.StatsSet;
@ -36,11 +34,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.model.primeshop.PrimeShopGroup;
import com.l2jserver.gameserver.model.primeshop.PrimeShopItem;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRBuyProduct;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRBuyProduct.ExBrProductReplyType;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRGamePoint;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRProductInfo;
import com.l2jserver.gameserver.util.Util;
/**
* @author Gnacik, UnAfraid
@ -123,109 +117,6 @@ public class PrimeShopData implements IXmlReader
}
}
public void buyItem(L2PcInstance player, int brId, int count)
{
if (validatePlayer(brId, count, player))
{
final PrimeShopGroup item = _primeItems.get(brId);
for (PrimeShopItem itm : item.getItems())
{
player.addItem("PrimeShop", itm.getId(), itm.getCount() * count, player, true);
}
final int points = player.getPrimePoints() - (item.getPrice() * count);
player.setPrimePoints(points);
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SUCCESS));
player.sendPacket(new ExBRGamePoint(player));
}
}
/**
* @param brId
* @param count
* @param player
* @return
*/
private boolean validatePlayer(int brId, int count, L2PcInstance player)
{
if ((count < 1) && (count > 99))
{
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " tried to buy invalid itemcount [" + count + "] from Prime", Config.DEFAULT_PUNISH);
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
final PrimeShopGroup item = _primeItems.get(brId);
final long currentTime = System.currentTimeMillis() / 1000;
if (item == null)
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_PRODUCT));
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " tried to buy invalid brId from Prime", Config.DEFAULT_PUNISH);
return false;
}
else if ((item.getMinLevel() > 0) && (item.getMinLevel() > player.getLevel()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER));
return false;
}
else if ((item.getMaxLevel() > 0) && (item.getMaxLevel() < player.getLevel()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER));
return false;
}
else if ((item.getMinBirthday() > 0) && (item.getMinBirthday() > player.getBirthdays()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
else if ((item.getMaxBirthday() > 0) && (item.getMaxBirthday() < player.getBirthdays()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
else if ((Calendar.getInstance().get(Calendar.DAY_OF_WEEK) & item.getDaysOfWeek()) == 0)
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.NOT_DAY_OF_WEEK));
return false;
}
else if ((item.getStartSale() > 1) && (item.getStartSale() > currentTime))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.BEFORE_SALE_DATE));
return false;
}
else if ((item.getEndSale() > 1) && (item.getEndSale() < currentTime))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.AFTER_SALE_DATE));
return false;
}
final int weight = item.getWeight() * count;
final long slots = item.getCount() * count;
if (player.getPrimePoints() < (item.getPrice() * count))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.LACK_OF_POINT));
return false;
}
else if (player.getInventory().validateWeight(weight))
{
if (!player.getInventory().validateCapacity(slots))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVENTROY_OVERFLOW));
return false;
}
}
else
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVENTROY_OVERFLOW));
return false;
}
return true;
}
public void showProductInfo(L2PcInstance player, int brId)
{
final PrimeShopGroup item = _primeItems.get(brId);
@ -238,6 +129,11 @@ public class PrimeShopData implements IXmlReader
player.sendPacket(new ExBRProductInfo(item));
}
public PrimeShopGroup getItem(int brId)
{
return _primeItems.get(brId);
}
public Map<Integer, PrimeShopGroup> getPrimeItems()
{
return _primeItems;

View File

@ -35,6 +35,7 @@ public enum InstanceType
L2DoorInstance(L2Character),
L2TerrainObjectInstance(L2Npc),
L2EffectPointInstance(L2Npc),
CommissionManagerInstance(L2Npc),
// Summons, Pets, Decoys and Traps
L2ServitorInstance(L2Summon),
L2PetInstance(L2Summon),

View File

@ -31,5 +31,5 @@ public enum ItemLocation
REFUND,
MAIL,
FREIGHT,
AUCTION
AUCTION_HOUSE
}

View File

@ -35,16 +35,16 @@ import com.l2jserver.gameserver.network.SystemMessageId;
/**
* @author Erlandys
*/
public class AuctionManager
public class AuctionHouseManager
{
Connection con = null;
private static final Logger _log = Logger.getLogger(AuctionManager.class.getName());
private static final Logger _log = Logger.getLogger(AuctionHouseManager.class.getName());
private static ArrayList<Auctions> auctions;
private static HashMap<String, Integer> categoryType;
private static HashMap<Integer, Integer> categoryConvert;
private static HashMap<Integer, Integer> massCategoryConvert;
public AuctionManager()
public AuctionHouseManager()
{
_log.info(getClass().getSimpleName() + ": Initializing");
loadCategories();
@ -980,13 +980,13 @@ public class AuctionManager
}
}
public static final AuctionManager getInstance()
public static final AuctionHouseManager getInstance()
{
return SingletonHolder._instance;
}
private static class SingletonHolder
{
protected static final AuctionManager _instance = new AuctionManager();
protected static final AuctionHouseManager _instance = new AuctionHouseManager();
}
}

View File

@ -30,7 +30,7 @@ import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.model.entity.Auction;
/**
* Zoey76: TODO: Rewrite it and unharcode it.
* Zoey76: TODO: Rewrite it and unhardcode it.
*/
public final class ClanHallAuctionManager
{

View File

@ -775,6 +775,8 @@ public final class L2PcInstance extends L2Playable
private L2ItemInstance _appearanceItem = null;
private L2ItemInstance _targetAppearanceItem = null;
private boolean _usingPrimeShop = false;
protected boolean _inventoryDisable = false;
/** Player's cubics. */
private final Map<Integer, L2CubicInstance> _cubics = new ConcurrentSkipListMap<>();
@ -15164,12 +15166,22 @@ public final class L2PcInstance extends L2Playable
_targetAppearanceItem = item;
}
public void setUsingPrimeShop(boolean isUsing)
{
_usingPrimeShop = isUsing;
}
public boolean isUsingPrimeShop()
{
return _usingPrimeShop;
}
/**
* @return the prime shop points of the player.
*/
public int getPrimePoints()
{
return getAccountVariables().getInt("PrimePoints", 0);
return getAccountVariables().getInt("PRIME_POINTS", 0);
}
/**
@ -15178,6 +15190,9 @@ public final class L2PcInstance extends L2Playable
*/
public void setPrimePoints(int points)
{
getAccountVariables().set("PrimePoints", points);
// Immediate store upon change
final AccountVariables vars = getAccountVariables();
vars.set("PRIME_POINTS", points);
vars.storeMe();
}
}

View File

@ -432,6 +432,76 @@ public abstract class ItemContainer
return targetitem;
}
/**
* Detaches the item from this item container so it can be used as a single instance.
* @param process string Identifier of process triggering this action
* @param item the item instance to be detached
* @param count the count of items to be detached
* @param newLocation the new item location
* @param actor Player requesting the item detach
* @param reference Object Object referencing current action like NPC selling item or previous item in transformation
* @return the detached item instance if operation completes successfully, {@code null} if the item does not exist in this container anymore or item count is not available
*/
public L2ItemInstance detachItem(String process, L2ItemInstance item, long count, ItemLocation newLocation, L2PcInstance actor, Object reference)
{
if (item == null)
{
return null;
}
synchronized (item)
{
if (!_items.contains(item))
{
return null;
}
if (count > item.getCount())
{
return null;
}
if (count == item.getCount())
{
removeItem(item);
}
else
{
item.changeCount(process, -count, actor, reference);
item.updateDatabase(true);
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
item.setOwnerId(getOwnerId());
}
item.setItemLocation(newLocation);
item.updateDatabase(true);
}
refreshWeight();
return item;
}
/**
* Detaches the item from this item container so it can be used as a single instance.
* @param process string Identifier of process triggering this action
* @param itemObjectId the item object id to be detached
* @param count the count of items to be detached
* @param newLocation the new item location
* @param actor Player requesting the item detach
* @param reference Object Object referencing current action like NPC selling item or previous item in transformation
* @return the detached item instance if operation completes successfully, {@code null} if the item does not exist in this container anymore or item count is not available
*/
public L2ItemInstance detachItem(String process, int itemObjectId, long count, ItemLocation newLocation, L2PcInstance actor, Object reference)
{
final L2ItemInstance itemInstance = getItemByObjectId(itemObjectId);
if (itemInstance == null)
{
return null;
}
return detachItem(process, itemInstance, count, newLocation, actor, reference);
}
/**
* Destroy item from inventory and updates database
* @param process : String Identifier of process triggering this action

View File

@ -44,7 +44,7 @@ public class PcAuction extends ItemContainer
@Override
public ItemLocation getBaseLocation()
{
return ItemLocation.AUCTION;
return ItemLocation.AUCTION_HOUSE;
}
@Override

View File

@ -679,6 +679,22 @@ public class PcInventory extends Inventory
return item;
}
@Override
public L2ItemInstance detachItem(String process, L2ItemInstance item, long count, ItemLocation newLocation, L2PcInstance actor, Object reference)
{
item = super.detachItem(process, item, count, newLocation, actor, reference);
if ((item != null) && (actor != null))
{
actor.sendPacket(new ItemList(actor, false));
// Update current load as well
actor.sendPacket(new ExUserInfoInvenWeight(actor));
}
return item;
}
/**
* Destroy item from inventory and checks _adena and _ancientAdena
* @param process : String Identifier of process triggering this action

View File

@ -32,6 +32,15 @@ import com.l2jserver.gameserver.network.clientpackets.*;
import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdena;
import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdenaCancel;
import com.l2jserver.gameserver.network.clientpackets.adenadistribution.RequestDivideAdenaStart;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionBuyInfo;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionBuyItem;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionCancel;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionDelete;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionInfo;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionList;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionRegister;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionRegisteredItem;
import com.l2jserver.gameserver.network.clientpackets.auctionhouse.RequestCommissionRegistrableItemList;
import com.l2jserver.gameserver.network.clientpackets.crystalization.RequestCrystallizeEstimate;
import com.l2jserver.gameserver.network.clientpackets.crystalization.RequestCrystallizeItemCancel;
import com.l2jserver.gameserver.network.clientpackets.friend.RequestAnswerFriendInvite;

View File

@ -46,8 +46,8 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
import com.l2jserver.gameserver.network.serverpackets.ConfirmDlg;
import com.l2jserver.gameserver.network.serverpackets.ExShowCommission;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExShowCommission;
import com.l2jserver.gameserver.util.GMAudit;
import com.l2jserver.gameserver.util.Util;

View File

@ -12,13 +12,14 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionBuyInfo;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionBuyInfo;
/**
* @author Erlandys
@ -44,7 +45,7 @@ public final class RequestCommissionBuyInfo extends L2GameClientPacket
{
return;
}
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
Auctions auction = am.getAuctionById(_auctionID);
if (auction != null)
{

View File

@ -12,19 +12,20 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.enums.MailType;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.instancemanager.MailManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Message;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionList;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionList;
/**
* @author Erlandys
@ -51,7 +52,7 @@ public final class RequestCommissionBuyItem extends L2GameClientPacket
{
return;
}
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
Auctions auction;
if (am.getAuctionById(_auctionID) != null)
{

View File

@ -12,9 +12,10 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
public final class RequestCommissionCancel extends L2GameClientPacket
{

View File

@ -12,15 +12,16 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionDelete;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionList;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionDelete;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionList;
/**
* @author Erlandys
@ -49,7 +50,7 @@ public final class RequestCommissionDelete extends L2GameClientPacket
{
return;
}
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
am.checkForAuctionsDeletion();
Auctions auction = am.getAuctionById(_auctionID);
if (auction != null)

View File

@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionInfo;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionInfo;
/**
* @author Erlandys

View File

@ -12,12 +12,13 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionList;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionList;
/**
* @author Erlandys
@ -48,7 +49,7 @@ public final class RequestCommissionList extends L2GameClientPacket
{
return;
}
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
if (_category == 0)
{

View File

@ -12,19 +12,20 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.idfactory.IdFactory;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionInfo;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionList;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionRegister;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionInfo;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionList;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionRegister;
/**
* @author Erlandys
@ -59,7 +60,7 @@ public final class RequestCommissionRegister extends L2GameClientPacket
return;
}
long destroyPrice = _price;
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
am.checkForAuctionsDeletion();
long timeToAdd = 0;
switch (_duration)

View File

@ -12,11 +12,12 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionList;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionList;
/**
* @author Erlandys
@ -38,7 +39,7 @@ public final class RequestCommissionRegisteredItem extends L2GameClientPacket
{
return;
}
AuctionManager am = AuctionManager.getInstance();
AuctionHouseManager am = AuctionHouseManager.getInstance();
am.checkForAuctionsDeletion();

View File

@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.clientpackets;
package com.l2jserver.gameserver.network.clientpackets.auctionhouse;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.ExResponseCommissionItemList;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.auctionhouse.ExResponseCommissionItemList;
/**
* @author Erlandys

View File

@ -18,15 +18,27 @@
*/
package com.l2jserver.gameserver.network.clientpackets.primeshop;
import java.util.Calendar;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.PrimeShopData;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
import com.l2jserver.gameserver.model.primeshop.PrimeShopGroup;
import com.l2jserver.gameserver.model.primeshop.PrimeShopItem;
import com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRBuyProduct;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRBuyProduct.ExBrProductReplyType;
import com.l2jserver.gameserver.network.serverpackets.primeshop.ExBRGamePoint;
import com.l2jserver.gameserver.util.Util;
/**
* @author Gnacik, UnAfraid
*/
public final class RequestBRBuyProduct extends L2GameClientPacket
{
private static final int HERO_COINS = 23805;
private int _brId;
private int _count;
@ -40,11 +52,157 @@ public final class RequestBRBuyProduct extends L2GameClientPacket
@Override
protected void runImpl()
{
final L2PcInstance player = getClient().getActiveChar();
if (player != null)
final L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null)
{
PrimeShopData.getInstance().buyItem(player, _brId, _count);
return;
}
if (activeChar.isUsingPrimeShop())
{
activeChar.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return;
}
activeChar.setUsingPrimeShop(true);
final PrimeShopGroup item = PrimeShopData.getInstance().getItem(_brId);
if (validatePlayer(item, _count, activeChar))
{
final int price = (item.getPrice() * _count);
final int paymentId = validatePaymentId(activeChar, item, price);
if (paymentId < 0)
{
activeChar.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.LACK_OF_POINT));
return;
}
else if (paymentId > 0)
{
if (!activeChar.destroyItemByItemId("PrimeShop-" + item.getBrId(), paymentId, price, activeChar, true))
{
activeChar.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.LACK_OF_POINT));
return;
}
}
else if (paymentId == 0)
{
if (activeChar.getPrimePoints() < price)
{
activeChar.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.LACK_OF_POINT));
return;
}
activeChar.setPrimePoints(activeChar.getPrimePoints() - price);
}
for (PrimeShopItem subItem : item.getItems())
{
activeChar.addItem("PrimeShop", subItem.getId(), subItem.getCount() * _count, activeChar, true);
}
activeChar.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SUCCESS));
activeChar.sendPacket(new ExBRGamePoint(activeChar));
}
activeChar.setUsingPrimeShop(false);
}
/**
* @param item
* @param count
* @param player
* @return
*/
private static boolean validatePlayer(PrimeShopGroup item, int count, L2PcInstance player)
{
final long currentTime = System.currentTimeMillis() / 1000;
if (item == null)
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_PRODUCT));
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " tried to buy invalid brId from Prime", Config.DEFAULT_PUNISH);
return false;
}
else if ((count < 1) && (count > 99))
{
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " tried to buy invalid itemcount [" + count + "] from Prime", Config.DEFAULT_PUNISH);
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
else if ((item.getMinLevel() > 0) && (item.getMinLevel() > player.getLevel()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER));
return false;
}
else if ((item.getMaxLevel() > 0) && (item.getMaxLevel() < player.getLevel()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER));
return false;
}
else if ((item.getMinBirthday() > 0) && (item.getMinBirthday() > player.getBirthdays()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
else if ((item.getMaxBirthday() > 0) && (item.getMaxBirthday() < player.getBirthdays()))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVALID_USER_STATE));
return false;
}
else if ((Calendar.getInstance().get(Calendar.DAY_OF_WEEK) & item.getDaysOfWeek()) == 0)
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.NOT_DAY_OF_WEEK));
return false;
}
else if ((item.getStartSale() > 1) && (item.getStartSale() > currentTime))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.BEFORE_SALE_DATE));
return false;
}
else if ((item.getEndSale() > 1) && (item.getEndSale() < currentTime))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.AFTER_SALE_DATE));
return false;
}
final int weight = item.getWeight() * count;
final long slots = item.getCount() * count;
if (player.getInventory().validateWeight(weight))
{
if (!player.getInventory().validateCapacity(slots))
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVENTROY_OVERFLOW));
return false;
}
}
else
{
player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.INVENTROY_OVERFLOW));
return false;
}
return true;
}
private static int validatePaymentId(L2PcInstance player, PrimeShopGroup item, long amount)
{
switch (item.getPaymentType())
{
case 0: // Prime points
{
return 0;
}
case 1: // Adenas
{
return Inventory.ADENA_ID;
}
case 2: // Hero coins
{
return HERO_COINS;
}
}
return -1;
}
@Override

View File

@ -20,7 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
import com.l2jserver.gameserver.enums.ItemListType;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.model.ItemInfo;
import com.l2jserver.gameserver.model.TradeItem;
import com.l2jserver.gameserver.model.buylist.Product;
@ -119,28 +119,6 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
}
}
public void writeAuctionItem(Auctions auction)
{
writeQ(auction.getAuctionId()); // Auction id
writeQ(auction.getPrice()); // Price
writeD(auction.getCategory()); // Category
writeD(auction.getDuration()); // Duration / maybe in days???
writeD((int) auction.getFinishTime()); // Time when this item will vanish from auction (in seconds)(example (currentTime+60=after 1 minute))
writeS(CharNameTable.getInstance().getNameById(auction.getPlayerID())); // Name
writeD(0);
ItemInfo it = new ItemInfo(auction.getItem());
writeD(auction.getItem().getId()); // Item ID
writeQ(auction.getItem().getCount()); // Count
writeH(auction.getItem().getItem().getType2()); // item.getItem().getType2()
writeD(auction.getItem().getItem().getBodyPart()); // item.getItem().getBodyPart()
writeH(auction.getItem().getCustomType2()); // item.getCustomType2()
writeH(0x00); // ???
writeD(auction.getItem().getEnchantLevel());
writeItemElemental(it);
writeItemEnchantEffect(it);
writeD(0x00); // Item remodel visual ID
}
protected static final int calculateMask(ItemInfo item)
{
int mask = 0;
@ -225,4 +203,26 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
writeH(0x00);
}
}
public void writeAuctionItem(Auctions auction)
{
writeQ(auction.getAuctionId()); // Auction id
writeQ(auction.getPrice()); // Price
writeD(auction.getCategory()); // Category
writeD(auction.getDuration()); // Duration / maybe in days???
writeD((int) auction.getFinishTime()); // Time when this item will vanish from auction (in seconds)(example (currentTime+60=after 1 minute))
writeS(CharNameTable.getInstance().getNameById(auction.getPlayerID())); // Name
writeD(0);
ItemInfo it = new ItemInfo(auction.getItem());
writeD(auction.getItem().getId()); // Item ID
writeQ(auction.getItem().getCount()); // Count
writeH(auction.getItem().getItem().getType2()); // item.getItem().getType2()
writeD(auction.getItem().getItem().getBodyPart()); // item.getItem().getBodyPart()
writeH(auction.getItem().getCustomType2()); // item.getCustomType2()
writeH(0x00); // ???
writeD(auction.getItem().getEnchantLevel());
writeItemElemental(it);
writeItemEnchantEffect(it);
writeD(0x00); // Item remodel visual ID
}
}

View File

@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import com.l2jserver.gameserver.instancemanager.InstanceManager;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@ -49,8 +50,9 @@ public class ExInzoneWaiting extends L2GameServerPacket
writeD(_instanceTimes.size());
for (Entry<Integer, Long> entry : _instanceTimes.entrySet())
{
final long instanceTime = TimeUnit.MILLISECONDS.toMinutes(entry.getValue() - System.currentTimeMillis());
writeD(entry.getKey());
writeD((int) (entry.getValue() / 1000));
writeD((int) instanceTime);
}
}
}

View File

@ -85,7 +85,7 @@ public final class RelationChanged extends L2GameServerPacket
{
if (activeChar.isInvisible())
{
_log.severe("Cannot add insivisble character to multi relation packet");
_log.severe("Cannot add invisible character to multi relation packet.");
return;
}
Relation r = new Relation();

View File

@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Erlandys

View File

@ -12,7 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Erlandys

View File

@ -12,7 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Erlandys

View File

@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Erlandys

View File

@ -12,10 +12,11 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.serverpackets.AbstractItemPacket;
/**
* @author Erlandys

View File

@ -12,12 +12,13 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.AuctionManager.Auctions;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager;
import com.l2jserver.gameserver.instancemanager.AuctionHouseManager.Auctions;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.serverpackets.AbstractItemPacket;
/**
* @author Erlandys
@ -31,7 +32,7 @@ public class ExResponseCommissionList extends AbstractItemPacket
int _grade;
String _search;
boolean _yourAuction;
AuctionManager _am;
AuctionHouseManager _am;
int _yourAuctionsSize = 0;
int _categories[][] =
{
@ -115,14 +116,14 @@ public class ExResponseCommissionList extends AbstractItemPacket
_grade = grade;
_search = searchName;
_yourAuction = false;
_am = AuctionManager.getInstance();
_am = AuctionHouseManager.getInstance();
}
public ExResponseCommissionList(L2PcInstance player)
{
_player = player;
_yourAuction = true;
_am = AuctionManager.getInstance();
_am = AuctionHouseManager.getInstance();
for (Auctions auction : _am.getAuctions())
{
if (auction.getPlayerID() == player.getObjectId())

View File

@ -12,7 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author Erlandys

View File

@ -12,7 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.network.serverpackets;
package com.l2jserver.gameserver.network.serverpackets.auctionhouse;
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
/**
* @author mrTJO