Started work on bazaar

This commit is contained in:
Light2
2014-04-11 23:47:03 +02:00
parent 7eaed057c7
commit ea8bc53394
25 changed files with 1349 additions and 10 deletions
+6 -3
View File
@@ -70,6 +70,7 @@ import services.SurveyService;
import services.TerrainService;
import services.WeatherService;
import services.ai.AIService;
import services.bazaar.BazaarService;
import services.chat.ChatService;
import services.collections.CollectionService;
import services.combat.CombatService;
@@ -170,11 +171,10 @@ public class NGECore {
//public MissionService missionService;
public InstanceService instanceService;
public DevService devService;
public SurveyService surveyService;
public ResourceService resourceService;
public ConversationService conversationService;
public BazaarService bazaarService;
// Login Server
@@ -199,7 +199,7 @@ public class NGECore {
private BusConfiguration eventBusConfig = BusConfiguration.Default(1, new ThreadPoolExecutor(1, 4, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>()));
private ObjectDatabase buildingODB;
private ObjectDatabase auctionODB;
private ObjectDatabase resourcesODB;
private ObjectDatabase resourceRootsODB;
private ObjectDatabase resourceHistoryODB;
@@ -258,6 +258,7 @@ public class NGECore {
resourcesODB = new ObjectDatabase("resources", true, false, true);
resourceRootsODB = new ObjectDatabase("resourceroots", true, false, true);
resourceHistoryODB = new ObjectDatabase("resourcehistory", true, false, true);
auctionODB = new ObjectDatabase("auction", true, false, true);
// Services
loginService = new LoginService(this);
@@ -286,6 +287,7 @@ public class NGECore {
entertainmentService = new EntertainmentService(this);
devService = new DevService(this);
conversationService = new ConversationService(this);
bazaarService = new BazaarService(this);
if (config.keyExists("JYTHONCONSOLE.PORT")) {
int jythonPort = config.getInt("JYTHONCONSOLE.PORT");
@@ -338,6 +340,7 @@ public class NGECore {
zoneDispatch.addService(buffService);
zoneDispatch.addService(entertainmentService);
//zoneDispatch.addService(missionService);
zoneDispatch.addService(bazaarService);
zoneServer = new MINAServer(zoneDispatch, config.getInt("ZONE.PORT"));
zoneServer.start();
@@ -0,0 +1,34 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class AcceptAuctionResponseMessage extends SWGMessage {
private long itemId;
private int error;
public AcceptAuctionResponseMessage(long itemId, int error) {
this.itemId = itemId;
this.error = error;
}
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 3);
result.putInt(0xC58A446E);
result.putLong(itemId);
result.putInt(error);
return result.flip();
}
}
@@ -0,0 +1,38 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class AuctionItemDescriptionMessage extends SWGMessage {
private long itemId;
private String description;
public AuctionItemDescriptionMessage(long itemId, String description) {
this.itemId = itemId;
this.description = description;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(26 + (description.length() * 2)).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 2);
result.putInt(0xFE0E644B);
result.putLong(itemId);
result.put(getUnicodeString(description));
result.putInt(0);
result.putInt(0);
return result.flip();
}
}
@@ -0,0 +1,162 @@
package protocol.swg.auctionManagerClientListener;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class AuctionQueryHeadersMessage extends SWGMessage {
private int range;
private int counter;
private int screen;
private int category;
private int itemTypeCRC;
private String searchString;
private int unkInt;
private int minPrice;
private int maxPrice;
private byte includeEntranceFee;
private long vendorId;
private byte vendorFlag;
private short offset;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setRange(data.getInt());
setCounter(data.getInt());
setScreen(data.getInt());
setCategory(data.getInt());
setItemTypeCRC(data.getInt());
int size = data.getInt();
try {
setSearchString(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
data.position(data.position() + size * 2);
setUnkInt(data.getInt());
setMinPrice(data.getInt());
setMaxPrice(data.getInt());
setIncludeEntranceFee(data.get());
data.skip(5); // unk
setVendorId(data.getLong());
setVendorFlag(data.get());
setOffset(data.getShort());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public int getRange() {
return range;
}
public void setRange(int range) {
this.range = range;
}
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
public int getScreen() {
return screen;
}
public void setScreen(int screen) {
this.screen = screen;
}
public int getCategory() {
return category;
}
public void setCategory(int category) {
this.category = category;
}
public int getItemTypeCRC() {
return itemTypeCRC;
}
public void setItemTypeCRC(int itemTypeCRC) {
this.itemTypeCRC = itemTypeCRC;
}
public String getSearchString() {
return searchString;
}
public void setSearchString(String searchString) {
this.searchString = searchString;
}
public int getUnkInt() {
return unkInt;
}
public void setUnkInt(int unkInt) {
this.unkInt = unkInt;
}
public int getMinPrice() {
return minPrice;
}
public void setMinPrice(int minPrice) {
this.minPrice = minPrice;
}
public int getMaxPrice() {
return maxPrice;
}
public void setMaxPrice(int maxPrice) {
this.maxPrice = maxPrice;
}
public byte getIncludeEntranceFee() {
return includeEntranceFee;
}
public void setIncludeEntranceFee(byte includeEntranceFee) {
this.includeEntranceFee = includeEntranceFee;
}
public long getVendorId() {
return vendorId;
}
public void setVendorId(long vendorId) {
this.vendorId = vendorId;
}
public byte getVendorFlag() {
return vendorFlag;
}
public void setVendorFlag(byte vendorFlag) {
this.vendorFlag = vendorFlag;
}
public short getOffset() {
return offset;
}
public void setOffset(short offset) {
this.offset = offset;
}
}
@@ -0,0 +1,21 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class AuctionQueryHeadersResponseMessage extends SWGMessage {
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
}
@@ -0,0 +1,51 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class BidAuctionMessage extends SWGMessage {
private long auctionId;
private int myPrice;
private int proxyPrice;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setAuctionId(data.getLong());
setMyPrice(data.getInt());
setProxyPrice(data.getInt());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getAuctionId() {
return auctionId;
}
public void setAuctionId(long auctionId) {
this.auctionId = auctionId;
}
public int getMyPrice() {
return myPrice;
}
public void setMyPrice(int myPrice) {
this.myPrice = myPrice;
}
public int getProxyPrice() {
return proxyPrice;
}
public void setProxyPrice(int proxyPrice) {
this.proxyPrice = proxyPrice;
}
}
@@ -0,0 +1,45 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class BidAuctionResponseMessage extends SWGMessage {
private long objectId;
private int status;
public static final int SUCCESS = 0;
public static final int INVALIDAUCTIONER = 1;
public static final int INVALIDITEM = 2;
public static final int INVALIDPRICE = 4;
public static final int NOTENOUGHCREDITS = 9;
public static final int PURCHASEFAILED = 10;
public static final int PURCHASEREJECTED = 11;
public static final int PRICETOOHIGH = 13;
public static final int PRICEOVERFLOW = 14;
public BidAuctionResponseMessage(long objectId, int status) {
this.objectId = objectId;
this.status = status;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 3);
result.putInt(0x8FCBEF4A);
result.putLong(objectId);
result.putInt(status);
return result.flip();
}
}
@@ -0,0 +1,31 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CancelLiveAuctionMessage extends SWGMessage {
private long objectId;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setObjectId(data.getLong());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
}
@@ -0,0 +1,42 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CancelLiveAuctionResponseMessage extends SWGMessage {
public static final int SUCCESS = 0;
public static final int NOTALLOWED = 1;
public static final int INVALIDITEM = 2;
public static final int NOTOWNER = 8;
public static final int ALREADYCOMPLETED = 15;
private long itemId;
private int status;
public CancelLiveAuctionResponseMessage(long itemId, int status) {
this.itemId = itemId;
this.status = status;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(19).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 4);
result.putInt(0x7DA2246C);
result.putLong(itemId);
result.putInt(status);
result.put((byte) 0); // unk
return result.flip();
}
}
@@ -0,0 +1,30 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import main.NGECore;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CommoditiesItemTypeListResponse extends SWGMessage {
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
String galaxy = NGECore.getInstance().getGalaxyName();
IoBuffer result = IoBuffer.allocate(14 + galaxy.length()).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 2);
result.putInt(0xD4E937FC);
result.put(getAsciiString(galaxy + ".0"));
result.putInt(0);
return result.flip();
}
}
@@ -0,0 +1,47 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import java.util.Vector;
import main.NGECore;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CommoditiesResourceTypeListResponse extends SWGMessage {
private Vector<String> resNames;
public CommoditiesResourceTypeListResponse(Vector<String> resNames) {
this.resNames = resNames;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
String galaxyName = NGECore.getInstance().getGalaxyName();
final IoBuffer result = IoBuffer.allocate(100).order(ByteOrder.LITTLE_ENDIAN);
result.setAutoExpand(true);
result.putShort((short) 2);
result.putInt(0x5EDD19CB);
result.put(getAsciiString(galaxyName + "." + String.valueOf(resNames.size())));
result.putInt(479);
result.putLong(0);
resNames.forEach(s -> result.put(getAsciiString(s)));
int size = result.position();
IoBuffer result2 = IoBuffer.allocate(size).put(result.array(), 0, size);
return result2.flip();
}
}
@@ -0,0 +1,90 @@
package protocol.swg.auctionManagerClientListener;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CreateAuctionMessage extends SWGMessage {
private long objectId;
private long vendorId;
private int price;
private int duration;
private String description;
private byte premium;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setObjectId(data.getLong());
setVendorId(data.getLong());
setPrice(data.getInt());
setDuration(data.getInt()); // in minutes
int size = data.getInt();
try {
setDescription(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
data.position(data.position() + size * 2);
setPremium(data.get());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
public long getVendorId() {
return vendorId;
}
public void setVendorId(long vendorId) {
this.vendorId = vendorId;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public byte getPremium() {
return premium;
}
public void setPremium(byte premium) {
this.premium = premium;
}
}
@@ -0,0 +1,90 @@
package protocol.swg.auctionManagerClientListener;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class CreateImmediateAuctionMessage extends SWGMessage {
private long objectId;
private long vendorId;
private int price;
private int duration;
private String description;
private byte premium;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setObjectId(data.getLong());
setVendorId(data.getLong());
setPrice(data.getInt());
setDuration(data.getInt()); // in minutes
int size = data.getInt();
try {
setDescription(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
data.position(data.position() + size * 2);
setPremium(data.get());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
public long getVendorId() {
return vendorId;
}
public void setVendorId(long vendorId) {
this.vendorId = vendorId;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public byte getPremium() {
return premium;
}
public void setPremium(byte premium) {
this.premium = premium;
}
}
@@ -0,0 +1,31 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class GetAuctionDetails extends SWGMessage {
private long objectId;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setObjectId(data.getLong());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
}
@@ -0,0 +1,21 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class GetAuctionDetailsResponse extends SWGMessage {
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
}
@@ -0,0 +1,31 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class IsVendorOwnerMessage extends SWGMessage {
private long terminalId;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setTerminalId(data.getLong());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getTerminalId() {
return terminalId;
}
public void setTerminalId(long terminalId) {
this.terminalId = terminalId;
}
}
@@ -0,0 +1,42 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class IsVendorOwnerResponseMessage extends SWGMessage {
private int permission;
private int errorCode;
private long terminalId;
private String terminalString;
public IsVendorOwnerResponseMessage(int permission, int errorCode, long terminalId, String terminalString) {
this.permission = permission;
this.errorCode = errorCode;
this.terminalId = terminalId;
this.terminalString = terminalString;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(26 + terminalString.length()).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 6);
result.putInt(0xCE04173E);
result.putInt(permission);
result.putInt(errorCode);
result.putLong(terminalId);
result.put(getAsciiString(terminalString));
result.putShort((short) 0x64); // unk
return result.flip();
}
}
@@ -0,0 +1,55 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class ItemSoldMessage extends SWGMessage {
public static final int SUCCESS = 0;
public static final int INVALIDAUCTIONER = 1;
public static final int INVALIDITEM = 2;
public static final int BADVENDOR = 3;
public static final int INVALIDPRICE = 4;
public static final int INVALIDDURATION = 5;
public static final int ALREADYFORSALE = 6;
public static final int UNKERROR = 6;
public static final int DONTOWNITEM = 8;
public static final int NOTENOUGHCREDITS = 9;
public static final int TOOMANYITEMS = 13;
public static final int PRICETOOHIGH = 14;
public static final int CANTSELLTRADINGITEM = 19;
public static final int VENDORFULL = 25;
private long objectId;
private int status;
public ItemSoldMessage(long objectId, int status) {
this.objectId = objectId;
this.status = status;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 3);
result.putInt(0x0E61CC92);
result.putLong(objectId);
result.putInt(status);
return result.flip();
}
public void setStatus(int status) {
this.status = status;
}
}
@@ -0,0 +1,41 @@
package protocol.swg.auctionManagerClientListener;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class RetrieveAuctionItemMessage extends SWGMessage {
private long objectId;
private long vendorId;
@Override
public void deserialize(IoBuffer data) {
data.skip(6);
setObjectId(data.getLong());
setVendorId(data.getLong());
}
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
public long getVendorId() {
return vendorId;
}
public void setVendorId(long vendorId) {
this.vendorId = vendorId;
}
}
@@ -0,0 +1,41 @@
package protocol.swg.auctionManagerClientListener;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
public class RetrieveAuctionItemResponseMessage extends SWGMessage {
private long objectId;
private int status;
public static final int SUCCESS = 0;
public static final int NOTALLOWED = 1;
public static final int FULLINVENTORY = 12;
public static final int TOOFAR = 0x100;
public static final int DONTRETRIEVE = 0x200;
public RetrieveAuctionItemResponseMessage(long objectId, int status) {
this.objectId = objectId;
this.status = status;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 3);
result.putInt(0x9499EF8C);
result.putLong(objectId);
result.putInt(status);
return result.flip();
}
}
+3 -2
View File
@@ -34,7 +34,7 @@ public class Opcodes {
public static int ChatRequestRoomList = 0x4C3D2CFA;
public static int ChatSystemMessage = CRC.StringtoCRC("ChatSystemMessage");
public static int ClientOpenContainerMessage = 0x2D2D6EE1;
public static int CommodotiesItemTypeListRequest = 0x48F493C5;
public static int CommoditiesItemTypeListRequest = 0x48F493C5;
public static int CommoditiesResourceTypeListRequest = 0xCB1AE82D;
public static int NewbieTutorialResponse = 0xCA88FBAD;
public static int CmdSceneReady = 0x43FD1C22;
@@ -45,6 +45,7 @@ public class Opcodes {
public static int ClientVerifyAndLockNameRequest = 0x9eb04b9f;
public static int DeleteCharacterMessage = 0xE87AD031;
public static int GetMapLocationsMessage = 0x1A7AB839;
public static int IsVendorOwnerMessage = CRC.StringtoCRC("IsVendorOwnerMessage");
public static int LagRequest = 0x31805EE0;
public static int LoginClientId = 0x41131F96;
public static int ObjControllerMessage = 0x80CE5E46;
@@ -77,9 +78,9 @@ public class Opcodes {
public static int CollectionServerFirstListRequest = CRC.StringtoCRC("CollectionServerFirstListRequest");
public static int ShowHelmet = CRC.StringtoCRC("ShowHelmet");
public static int ShowBackpack = CRC.StringtoCRC("ShowBackpack");
public static int CreateAuctionMessage = CRC.StringtoCRC("CreateAuctionMessage");
public static int ChatOnEnteredRoom = CRC.StringtoCRC("ChatOnEnteredRoom");
public static int ChatCreateRoom = CRC.StringtoCRC("ChatCreateRoom");
public static int ChatQueryRoom = 0x9CF2B192;
public static int Unknown = 0x173B91C2; // packet sent to server on every character load-in
}
+1 -5
View File
@@ -361,11 +361,7 @@ public class PlayerService implements INetworkDispatch {
swgOpcodes.put(Opcodes.SetLfgInterests, (session, data) -> {
});
swgOpcodes.put(Opcodes.CommodotiesItemTypeListRequest, (session, data) -> {
});
swgOpcodes.put(Opcodes.SetFurnitureRoationDegree, (session, data) -> {
});
+243
View File
@@ -0,0 +1,243 @@
package services.bazaar;
import com.sleepycat.je.Environment;
import com.sleepycat.je.Transaction;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.NotPersistent;
import com.sleepycat.persist.model.PrimaryKey;
import engine.resources.objects.IPersistent;
@Entity(version=0)
public class AuctionItem implements IPersistent {
@PrimaryKey
private long objectId;
private long ownerId;
private long vendorId;
private long buyerId;
private long offerToId;
private int itemType;
private String ownerName;
private String bidderName;
private String itemName;
private String itemDescription;
private int price;
private int proxyBid;
private boolean auction;
private String vuid;
private int status;
private boolean onBazaar;
private long expireTime;
private int auctionOptions;
public static final int PREMIUM = 0x400;
public static final int WITHDRAW = 0x800;
public final static int FORSALE = 1;
public final static int SOLD = 2;
public final static int EXPIRED = 4;
public final static int OFFERED = 5;
public final static int RETRIEVED = 6;
@NotPersistent
private Transaction txn;
public AuctionItem() {
}
public AuctionItem(long objectId, long ownerId) {
this.objectId = objectId;
this.ownerId = ownerId;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
public long getOwnerId() {
return ownerId;
}
public void setOwnerId(long ownerId) {
this.ownerId = ownerId;
}
public long getVendorId() {
return vendorId;
}
public void setVendorId(long vendorId) {
this.vendorId = vendorId;
}
public long getBuyerId() {
return buyerId;
}
public void setBuyerId(long buyerId) {
this.buyerId = buyerId;
}
public long getOfferToId() {
return offerToId;
}
public void setOfferToId(long offerToId) {
this.offerToId = offerToId;
}
public int getItemType() {
return itemType;
}
public void setItemType(int itemType) {
this.itemType = itemType;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public String getBidderName() {
return bidderName;
}
public void setBidderName(String bidderName) {
this.bidderName = bidderName;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public String getItemDescription() {
return itemDescription;
}
public void setItemDescription(String itemDescription) {
this.itemDescription = itemDescription;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getProxyBid() {
return proxyBid;
}
public void setProxyBid(int proxyBid) {
this.proxyBid = proxyBid;
}
public boolean isAuction() {
return auction;
}
public void setAuction(boolean auction) {
this.auction = auction;
}
public String getVuid() {
return vuid;
}
public void setVuid(String vuid) {
this.vuid = vuid;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public boolean isOnBazaar() {
return onBazaar;
}
public void setOnBazaar(boolean onBazaar) {
this.onBazaar = onBazaar;
}
public long getExpireTime() {
return expireTime;
}
public void setExpireTime(long expireTime) {
this.expireTime = expireTime;
}
public int getAuctionOptions() {
return auctionOptions;
}
public void setAuctionOptions(int auctionOptions) {
this.auctionOptions = auctionOptions;
}
@Override
public void createTransaction(Environment env) {
txn = env.beginTransaction(null, null);
}
@Override
public Transaction getTransaction() {
return txn;
}
}
+149
View File
@@ -0,0 +1,149 @@
package services.bazaar;
import java.nio.ByteOrder;
import java.util.Map;
import main.NGECore;
import engine.clients.Client;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Point3D;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
import resources.common.Opcodes;
import resources.objects.building.BuildingObject;
import resources.objects.creature.CreatureObject;
import protocol.swg.ClientIdMsg;
import protocol.swg.auctionManagerClientListener.CommoditiesItemTypeListResponse;
import protocol.swg.auctionManagerClientListener.CommoditiesResourceTypeListResponse;
import protocol.swg.auctionManagerClientListener.CreateAuctionMessage;
import protocol.swg.auctionManagerClientListener.IsVendorOwnerMessage;
import protocol.swg.auctionManagerClientListener.IsVendorOwnerResponseMessage;
import protocol.swg.auctionManagerClientListener.ItemSoldMessage;
public class BazaarService implements INetworkDispatch {
private NGECore core;
public BazaarService(NGECore core) {
this.core = core;
}
@Override
public void insertOpcodes(Map<Integer, INetworkRemoteEvent> swgOpcodes, Map<Integer, INetworkRemoteEvent> objControllerOpcodes) {
swgOpcodes.put(Opcodes.CommoditiesItemTypeListRequest, (session, data) -> {
Client client = core.getClient(session);
if (client == null)
return;
SWGObject player = client.getParent();
if (player == null)
return;
session.write(new CommoditiesItemTypeListResponse().serialize());
});
swgOpcodes.put(Opcodes.IsVendorOwnerMessage, (session, data) -> {
Client client = core.getClient(session);
if (client == null)
return;
SWGObject player = client.getParent();
if (player == null)
return;
data = data.order(ByteOrder.LITTLE_ENDIAN);
data.position(0);
IsVendorOwnerMessage request = new IsVendorOwnerMessage();
request.deserialize(data);
long terminalId = request.getTerminalId();
SWGObject terminal = core.objectService.getObject(terminalId);
if(terminal == null)
return;
Point3D pos = terminal.getWorldPosition();
session.write(new IsVendorOwnerResponseMessage(2, 0, terminalId, "tatooine.@tatooine_region_names:mos_eisley.@terminal_name:terminal_bazaar." + terminalId + "#" + pos.x + "," + pos.z).serialize());
});
swgOpcodes.put(Opcodes.CommoditiesResourceTypeListRequest, (session, data) -> {
Client client = core.getClient(session);
if (client == null)
return;
SWGObject player = client.getParent();
if (player == null)
return;
data = data.order(ByteOrder.LITTLE_ENDIAN);
if(data.remaining() > 2) // if client attaches a string to the request then it has already recieved it on zone-in
return;
//session.write(new CommoditiesResourceTypeListResponse(core.resourceService.getCompleteResourceNameHistory()).serialize());
});
swgOpcodes.put(Opcodes.CreateAuctionMessage, (session, data) -> {
Client client = core.getClient(session);
if (client == null)
return;
SWGObject player = client.getParent();
if (player == null)
return;
data = data.order(ByteOrder.LITTLE_ENDIAN);
data.position(0);
CreateAuctionMessage createAuction = new CreateAuctionMessage();
SWGObject vendor = core.objectService.getObject(createAuction.getVendorId());
SWGObject item = core.objectService.getObject(createAuction.getObjectId());
if(vendor == null || item == null || item instanceof CreatureObject || item instanceof BuildingObject)
return;
});
}
public void addAuction(CreatureObject player, SWGObject item, SWGObject vendor, int price, int duration, String description, boolean auction, boolean premium) {
ItemSoldMessage itemSoldMsg = new ItemSoldMessage(item.getObjectID(), ItemSoldMessage.SUCCESS);
if(item.getAttributes().containsKey("no_trade") || !item.isSubChildOf(player)) {
itemSoldMsg.setStatus(ItemSoldMessage.INVALIDITEM);
player.getClient().getSession().write(itemSoldMsg.serialize());
return;
}
}
@Override
public void shutdown() {
}
}
@@ -11343,4 +11343,8 @@ public class ResourceService implements INetworkDispatch {
}
return containerObject;
}
public Vector<String> getCompleteResourceNameHistory() {
return completeResourceNameHistory;
}
}