|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// Magicbane Emulator Project © 2013 - 2022
|
|
|
|
// www.magicbane.com
|
|
|
|
|
|
|
|
|
|
|
|
package engine.net.client.msg;
|
|
|
|
|
|
|
|
|
|
|
|
import engine.exception.SerializationException;
|
|
|
|
import engine.net.AbstractConnection;
|
|
|
|
import engine.net.ByteBufferReader;
|
|
|
|
import engine.net.ByteBufferWriter;
|
|
|
|
import engine.net.client.Protocol;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sell to NPC window msg
|
|
|
|
*
|
|
|
|
* @author Eighty
|
|
|
|
*/
|
|
|
|
public class SellToNPCWindowMsg extends ClientNetMsg {
|
|
|
|
|
|
|
|
//Item Types:
|
|
|
|
//1: weapon
|
|
|
|
//2: armor/cloth/shield
|
|
|
|
//5: scrolls
|
|
|
|
//8: potions
|
|
|
|
//10: charters
|
|
|
|
//13: Jewelry
|
|
|
|
|
|
|
|
|
|
|
|
private int npcType;
|
|
|
|
private int npcID;
|
|
|
|
private byte unknownByte01; //so far always 0x00
|
|
|
|
private byte unknownByte02; //0: show only specified, 1: show all
|
|
|
|
private ArrayList<Integer> itemTypes;
|
|
|
|
private ArrayList<Integer> skillTokens;
|
|
|
|
private ArrayList<Integer> unknownArray02;
|
|
|
|
private int unknown01; //so far always 0
|
|
|
|
private int unknown02; //so far always 0 on output
|
|
|
|
private int unknown03; //so far always 10000
|
|
|
|
private int unknown04; //so far always 0 on output
|
|
|
|
private float unknown05; //suspect sell percentage, ex: 0.26 for 26%
|
|
|
|
private int unknown06; //suspect gold available on vendor
|
|
|
|
private int unknown07; //so far always 0
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This is the general purpose constructor
|
|
|
|
*/
|
|
|
|
public SellToNPCWindowMsg(int npcType, int npcID, byte unknownByte02,
|
|
|
|
ArrayList<Integer> itemTypes, ArrayList<Integer> skillTokens,
|
|
|
|
ArrayList<Integer> unknownArray02, float unknown05, int unknown06) {
|
|
|
|
super(Protocol.SHOPINFO);
|
|
|
|
this.npcType = npcType;
|
|
|
|
this.npcID = npcID;
|
|
|
|
this.unknownByte01 = (byte) 0;
|
|
|
|
this.unknownByte02 = unknownByte02;
|
|
|
|
this.itemTypes = itemTypes;
|
|
|
|
this.skillTokens = skillTokens;
|
|
|
|
this.unknownArray02 = unknownArray02;
|
|
|
|
this.unknown01 = 0;
|
|
|
|
this.unknown02 = 0;
|
|
|
|
this.unknown03 = 10000;
|
|
|
|
this.unknown04 = 0;
|
|
|
|
this.unknown05 = unknown05;
|
|
|
|
this.unknown06 = unknown06;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This constructor is used by NetMsgFactory. It attempts to deserialize the ByteBuffer into a message. If a BufferUnderflow occurs (based on reading past the limit) then this constructor Throws that Exception to the caller.
|
|
|
|
*/
|
|
|
|
public SellToNPCWindowMsg(AbstractConnection origin, ByteBufferReader reader) {
|
|
|
|
super(Protocol.SHOPINFO, origin, reader);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes the subclass specific items to the supplied NetMsgWriter.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
protected void _deserialize(ByteBufferReader reader) {
|
|
|
|
|
|
|
|
this.itemTypes = new ArrayList<>();
|
|
|
|
this.skillTokens = new ArrayList<>();
|
|
|
|
this.unknownArray02 = new ArrayList<>();
|
|
|
|
|
|
|
|
this.npcType = reader.getInt();
|
|
|
|
this.npcID = reader.getInt();
|
|
|
|
this.unknownByte01 = reader.get();
|
|
|
|
this.unknownByte02 = reader.get();
|
|
|
|
int cnt = reader.getInt();
|
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
|
this.itemTypes.add(reader.getInt());
|
|
|
|
cnt = reader.getInt();
|
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
|
this.skillTokens.add(reader.getInt());
|
|
|
|
cnt = reader.getInt();
|
|
|
|
for (int i = 0; i < cnt; i++)
|
|
|
|
this.unknownArray02.add(reader.getInt());
|
|
|
|
this.unknown01 = reader.getInt();
|
|
|
|
this.unknown02 = reader.getInt();
|
|
|
|
this.unknown03 = reader.getInt();
|
|
|
|
this.unknown04 = reader.getInt();
|
|
|
|
this.unknown05 = reader.getFloat();
|
|
|
|
this.unknown06 = reader.getInt();
|
|
|
|
this.unknown07 = reader.getInt();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the subclass specific items from the supplied NetMsgReader.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
protected void _serialize(ByteBufferWriter writer)
|
|
|
|
throws SerializationException {
|
|
|
|
writer.putInt(this.npcType);
|
|
|
|
writer.putInt(this.npcID);
|
|
|
|
writer.put(this.unknownByte01);
|
|
|
|
writer.put(this.unknownByte02);
|
|
|
|
writer.putInt(this.itemTypes.size());
|
|
|
|
for (Integer i : this.itemTypes)
|
|
|
|
writer.putInt(i);
|
|
|
|
writer.putInt(this.skillTokens.size());
|
|
|
|
for (Integer i : this.skillTokens)
|
|
|
|
writer.putInt(i);
|
|
|
|
writer.putInt(this.unknownArray02.size());
|
|
|
|
for (Integer i : this.unknownArray02)
|
|
|
|
writer.putInt(i);
|
|
|
|
writer.putInt(this.unknown01);
|
|
|
|
writer.putInt(this.unknown02);
|
|
|
|
writer.putInt(this.unknown03);
|
|
|
|
writer.putInt(this.unknown04);
|
|
|
|
writer.putFloat(this.unknown05);
|
|
|
|
writer.putInt(this.unknown06);
|
|
|
|
writer.putInt(this.unknown07);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getNPCType() {
|
|
|
|
return this.npcType;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setNPCType(int value) {
|
|
|
|
this.npcType = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getNPCID() {
|
|
|
|
return this.npcID;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setNPCID(int value) {
|
|
|
|
this.npcID = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public byte getUnknownByte01() {
|
|
|
|
return this.unknownByte01;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknownByte01(byte value) {
|
|
|
|
this.unknownByte01 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public byte getUnknownByte02() {
|
|
|
|
return this.unknownByte02;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknownByte02(byte value) {
|
|
|
|
this.unknownByte02 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<Integer> getItemTypes() {
|
|
|
|
return this.itemTypes;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setItemTypes(ArrayList<Integer> value) {
|
|
|
|
this.itemTypes = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<Integer> getSkillTokens() {
|
|
|
|
return this.skillTokens;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setSkillTokens(ArrayList<Integer> value) {
|
|
|
|
this.skillTokens = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<Integer> getUnknownArray02() {
|
|
|
|
return this.unknownArray02;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknownArray02(ArrayList<Integer> value) {
|
|
|
|
this.unknownArray02 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown01() {
|
|
|
|
return unknown01;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown01(int value) {
|
|
|
|
this.unknown01 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown02() {
|
|
|
|
return unknown02;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown02(int value) {
|
|
|
|
this.unknown02 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown03() {
|
|
|
|
return unknown03;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown03(int value) {
|
|
|
|
this.unknown03 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown04() {
|
|
|
|
return unknown04;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown04(int value) {
|
|
|
|
this.unknown04 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public float getUnknown05() {
|
|
|
|
return unknown05;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown05(float value) {
|
|
|
|
this.unknown05 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown06() {
|
|
|
|
return unknown06;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown06(int value) {
|
|
|
|
this.unknown06 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getUnknown07() {
|
|
|
|
return unknown07;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknown07(int value) {
|
|
|
|
this.unknown07 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setskillTokens(ArrayList<Integer> value) {
|
|
|
|
this.skillTokens = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void addItemType(int value) {
|
|
|
|
this.itemTypes.add(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void addSkillToken(int value) {
|
|
|
|
this.skillTokens.add(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void addUnknownArray02(int value) {
|
|
|
|
this.unknownArray02.add(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setItemType(ArrayList<Integer> value) {
|
|
|
|
this.itemTypes = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnknownArray(ArrayList<Integer> value) {
|
|
|
|
this.unknownArray02 = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setupOutput() {
|
|
|
|
this.unknownByte01 = (byte) 0;
|
|
|
|
this.unknownByte02 = (byte) 0;
|
|
|
|
this.unknown01 = 0;
|
|
|
|
this.unknown02 = 0;
|
|
|
|
this.unknown03 = 10000;
|
|
|
|
this.unknown04 = 0;
|
|
|
|
this.unknown07 = 0;
|
|
|
|
}
|
|
|
|
}
|