Changeset 993

User picture

Author: ATracer

(2010/02/08 00:56) About 2 years ago

Warehouse implemented. Thanks kosyachok. Some advanced features of WH will be done later.
Update DB with sql query (inventory-rev993.sql).

Affected files

Updated trunk/AE-go_GameServer/data/scripts/system/database/mysql5/MySQL5InventoryDAO.java Download diff

992993
29
import com.aionemu.gameserver.dao.InventoryDAO;
29
import com.aionemu.gameserver.dao.InventoryDAO;
30
import com.aionemu.gameserver.model.gameobjects.Item;
30
import com.aionemu.gameserver.model.gameobjects.Item;
31
import com.aionemu.gameserver.model.gameobjects.PersistentState;
31
import com.aionemu.gameserver.model.gameobjects.PersistentState;
32
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
32
import com.aionemu.gameserver.model.gameobjects.player.Storage;
33
import com.aionemu.gameserver.model.gameobjects.player.Player;
33
import com.aionemu.gameserver.model.gameobjects.player.Player;
34
import com.aionemu.gameserver.model.gameobjects.player.StorageType;
35
import java.util.ArrayList;
34
36
35
/**
37
/**
36
 * @author ATracer
38
 * @author ATracer
...
...
38
 */
40
 */
39
public class MySQL5InventoryDAO extends InventoryDAO
41
public class MySQL5InventoryDAO extends InventoryDAO
40
{
42
{
41
    private static final Logger log = Logger.getLogger(MySQL5InventoryDAO.class);
43
	private static final Logger log = Logger.getLogger(MySQL5InventoryDAO.class);
42
44
43
    public static final String SELECT_QUERY = "SELECT `itemUniqueId`, `itemId`, `itemCount`, `itemColor`, `isEquiped`, `slot` FROM `inventory` WHERE `itemOwner`=?";
45
	public static final String SELECT_QUERY = "SELECT `itemUniqueId`, `itemId`, `itemCount`, `itemColor`, `isEquiped`, `slot` FROM `inventory` WHERE `itemOwner`=? AND `itemLocation`=?";
44
    public static final String INSERT_QUERY = "INSERT INTO `inventory` (`itemUniqueId`, `itemId`, `itemCount`, `itemColor`, `itemOwner`, `isEquiped`, `slot`) VALUES(?,?,?,?,?,?,?)";
46
	public static final String INSERT_QUERY = "INSERT INTO `inventory` (`itemUniqueId`, `itemId`, `itemCount`, `itemColor`, `itemOwner`, `isEquiped`, `slot`, `itemLocation`) VALUES(?,?,?,?,?,?,?,?)";
45
    public static final String UPDATE_QUERY = "UPDATE inventory SET  itemCount=?, itemColor=?, itemOwner=?, isEquiped=?, slot=? WHERE itemUniqueId=?";
47
	public static final String UPDATE_QUERY = "UPDATE inventory SET  itemCount=?, itemColor=?, itemOwner=?, isEquiped=?, slot=?, itemLocation=? WHERE itemUniqueId=?";
46
    public static final String DELETE_QUERY = "DELETE FROM inventory WHERE itemUniqueId=?";
48
	public static final String DELETE_QUERY = "DELETE FROM inventory WHERE itemUniqueId=?";
49
	public static final String SELECT_ACCOUNT_QUERY = "SELECT `account_id` FROM `players` WHERE `id`=?";
47
50
48
    @Override
51
	@Override
49
    public Inventory load(Player player)
52
	public Storage load(Player player, StorageType storageType)
50
    {
53
	{
51
        //TODO load parts - cube, equipment etc.
54
		//TODO load parts - cube, equipment etc.
52
        final Inventory inventory = new Inventory(player);
55
		final Storage inventory = new Storage(player, storageType);
53
        final int playerId = player.getObjectId();
56
		int playerId = player.getObjectId();
57
		final int storage = storageType.getId();
54
58
55
        DB.select(SELECT_QUERY, new ParamReadStH()
59
		if(storageType == StorageType.ACCOUNT_WAREHOUSE)
56
        {
60
		{
57
            @Override
61
			playerId = getPlayerAccountId(playerId);
58
            public void setParams(PreparedStatement stmt) throws SQLException
62
		}
59
            {
60
                stmt.setInt(1, playerId);
61
            }
62
63
63
            @Override
64
		final int owner = playerId;
64
            public void handleRead(ResultSet rset) throws SQLException
65
            {
66
                while(rset.next())
67
                {
68
                    int itemUniqueId = rset.getInt("itemUniqueId");
69
                    int itemId = rset.getInt("itemId");
70
                    int itemCount = rset.getInt("itemCount");
71
                    int itemColor = rset.getInt("itemColor");
72
                    int isEquiped = rset.getInt("isEquiped");
73
                    int slot = rset.getInt("slot");
74
                    Item item = new Item(itemUniqueId, itemId, itemCount, itemColor, isEquiped == 1, slot);
75
                    item.setPersistentState(PersistentState.UPDATED);
76
                    inventory.onLoadHandler(item);
77
                }
78
            }
79
        });
80
        return inventory;
81
    }
82
65
83
    @Override
66
		DB.select(SELECT_QUERY, new ParamReadStH()
84
    public boolean store(Inventory inventory)
67
		{
85
    {
86
        int playerId = inventory.getOwner().getObjectId();
87
        List<Item> inventoryItems = inventory.getAllItems();
88
        
89
        boolean resultSuccess = true;
90
        for(Item item : inventoryItems)
91
        {   	
92
        	resultSuccess = store(item, playerId);      
93
        } 
94
        return resultSuccess;
95
    }
96
    
97
    /**
98
     * @param item
99
     * @param playerId
100
     * @return
101
     */
102
    @Override
103
	public boolean store(final Item item, final int playerId)
104
    {   
105
    	boolean result = false;
106
    	
107
    	switch(item.getPersistentState())
108
    	{
109
    		case NEW:
110
    			result = insertItem(item, playerId);
111
    			break;
112
    		case UPDATE_REQUIRED:
113
    			result = updateItem(item, playerId);
114
    			break;
115
    		case DELETED:
116
    			result = deleteItem(item);
117
    			break;
118
    	}
119
    	item.setPersistentState(PersistentState.UPDATED);
120
    	return result;
121
    }
122
    
123
    /**
124
     * @param item
125
     * @param playerId
126
     * @return
127
     */
128
    private boolean insertItem(final Item item, final int playerId)
129
    {
130
    	return DB.insertUpdate(INSERT_QUERY, new IUStH() {
131
			@Override
68
			@Override
69
			public void setParams(PreparedStatement stmt) throws SQLException
70
			{
71
				stmt.setInt(1, owner);
72
				stmt.setInt(2, storage);
73
			}
74
75
			@Override
76
			public void handleRead(ResultSet rset) throws SQLException
77
			{
78
				while(rset.next())
79
				{
80
					int itemUniqueId = rset.getInt("itemUniqueId");
81
					int itemId = rset.getInt("itemId");
82
					int itemCount = rset.getInt("itemCount");
83
					int itemColor = rset.getInt("itemColor");
84
					int isEquiped = rset.getInt("isEquiped");
85
					int slot = rset.getInt("slot");
86
					Item item = new Item(itemUniqueId, itemId, itemCount, itemColor, isEquiped == 1, slot);
87
					item.setPersistentState(PersistentState.UPDATED);
88
					inventory.onLoadHandler(item);
89
				}
90
			}
91
		});
92
		return inventory;
93
	}
94
95
	public int getPlayerAccountId(final int playerId)
96
	{
97
		final List<Integer> owner = new ArrayList<Integer>();
98
		DB.select(SELECT_ACCOUNT_QUERY, new ParamReadStH()
99
		{
100
			@Override
101
			public void setParams(PreparedStatement stmt) throws SQLException
102
			{
103
				stmt.setInt(1, playerId);
104
			}
105
106
			@Override
107
			public void handleRead(ResultSet rset) throws SQLException
108
			{
109
				while(rset.next())
110
				{
111
					owner.add(rset.getInt("account_id"));
112
				}
113
			}
114
		});
115
		return owner.get(0);
116
	}
117
118
	@Override
119
	public boolean store(Player player)
120
	{
121
		int playerId = player.getObjectId();
122
		List<Item> allPlayerItems = new ArrayList<Item>();
123
		allPlayerItems.addAll(player.getStorage(StorageType.CUBE.getId()).getStorageItems());
124
		allPlayerItems.addAll(player.getStorage(StorageType.REGULAR_WAREHOUSE.getId()).getStorageItems());
125
		allPlayerItems.addAll(player.getStorage(StorageType.ACCOUNT_WAREHOUSE.getId()).getStorageItems());
126
		allPlayerItems.addAll(player.getInventory().getEquippedItems());
127
128
		boolean resultSuccess = true;
129
		for(Item item : allPlayerItems)
130
		{   	
131
			resultSuccess = store(item, playerId);      
132
		} 
133
		return resultSuccess;
134
	}
135
136
	/**
137
	 * @param item
138
	 * @param playerId
139
	 * @return
140
	 */
141
	@Override
142
	public boolean store(final Item item, int playerId)
143
	{   
144
		boolean result = false;
145
146
		if(item.getItemLocation() == StorageType.ACCOUNT_WAREHOUSE.getId())
147
		{
148
			playerId = getPlayerAccountId(playerId);
149
		}
150
151
		switch(item.getPersistentState())
152
		{
153
			case NEW:
154
				result = insertItem(item, playerId);
155
				break;
156
			case UPDATE_REQUIRED:
157
				result = updateItem(item, playerId);
158
				break;
159
			case DELETED:
160
				result = deleteItem(item);
161
				break;
162
		}
163
		item.setPersistentState(PersistentState.UPDATED);
164
		return result;
165
	}
166
167
	/**
168
	 * @param item
169
	 * @param playerId
170
	 * @return
171
	 */
172
	private boolean insertItem(final Item item, final int playerId)
173
	{
174
		return DB.insertUpdate(INSERT_QUERY, new IUStH() {
175
			@Override
132
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
176
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
133
			{
177
			{
134
				stmt.setInt(1, item.getObjectId());
178
				stmt.setInt(1, item.getObjectId());
...
...
138
				stmt.setInt(5, playerId);
182
				stmt.setInt(5, playerId);
139
				stmt.setBoolean(6, item.isEquipped());
183
				stmt.setBoolean(6, item.isEquipped());
140
				stmt.setInt(7, item.getEquipmentSlot());
184
				stmt.setInt(7, item.getEquipmentSlot());
185
				stmt.setInt(8, item.getItemLocation());
141
				stmt.execute();
186
				stmt.execute();
142
			}
187
			}
143
		});
188
		});
144
    }
189
	}
145
    
190
146
    /**
191
	/**
147
     * @param item
192
	 * @param item
148
     * @return
193
	 * @return
149
     */
194
	 */
150
    private boolean updateItem(final Item item,  final int playerId)
195
	private boolean updateItem(final Item item,  final int playerId)
151
    {
196
	{
152
    	return DB.insertUpdate(UPDATE_QUERY, new IUStH() {
197
		return DB.insertUpdate(UPDATE_QUERY, new IUStH() {
153
			@Override
198
			@Override
154
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
199
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
155
			{
200
			{
...
...
158
				stmt.setInt(3, playerId);
203
				stmt.setInt(3, playerId);
159
				stmt.setBoolean(4, item.isEquipped());
204
				stmt.setBoolean(4, item.isEquipped());
160
				stmt.setInt(5, item.getEquipmentSlot());
205
				stmt.setInt(5, item.getEquipmentSlot());
161
				stmt.setInt(6, item.getObjectId());
206
				stmt.setInt(6, item.getItemLocation());
207
				stmt.setInt(7, item.getObjectId());
162
				stmt.execute();
208
				stmt.execute();
163
			}
209
			}
164
		});
210
		});
165
    }
211
	}
166
212
167
    /**
213
	/**
168
     * 
214
	 * 
169
     * @param item
215
	 * @param item
170
     */
216
	 */
171
    private boolean deleteItem(final Item item) 
217
	private boolean deleteItem(final Item item) 
172
    {
218
	{
173
    	return DB.insertUpdate(DELETE_QUERY, new IUStH() {
219
		return DB.insertUpdate(DELETE_QUERY, new IUStH() {
174
			@Override
220
			@Override
175
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
221
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
176
			{
222
			{
...
...
178
				stmt.execute();
224
				stmt.execute();
179
			}
225
			}
180
		});
226
		});
181
    }
227
	}
182
228
183
    @Override
229
	@Override
184
    public int[] getUsedIDs() 
230
	public int[] getUsedIDs() 
185
    {
231
	{
186
        PreparedStatement statement = DB.prepareStatement("SELECT itemUniqueId FROM inventory", ResultSet.TYPE_SCROLL_INSENSITIVE,
232
		PreparedStatement statement = DB.prepareStatement("SELECT itemUniqueId FROM inventory", ResultSet.TYPE_SCROLL_INSENSITIVE,
187
                ResultSet.CONCUR_READ_ONLY);
233
			ResultSet.CONCUR_READ_ONLY);
188
234
189
        try
235
		try
190
        {
236
		{
191
            ResultSet rs = statement.executeQuery();
237
			ResultSet rs = statement.executeQuery();
192
            rs.last();
238
			rs.last();
193
            int count = rs.getRow();
239
			int count = rs.getRow();
194
            rs.beforeFirst();
240
			rs.beforeFirst();
195
            int[] ids = new int[count];
241
			int[] ids = new int[count];
196
            for(int i = 0; i < count; i++)
242
			for(int i = 0; i < count; i++)
197
            {
243
			{
198
                rs.next();
244
				rs.next();
199
                ids[i] = rs.getInt("itemUniqueId");
245
				ids[i] = rs.getInt("itemUniqueId");
200
            }
246
			}
201
            return ids;
247
			return ids;
202
        }
248
		}
203
        catch(SQLException e)
249
		catch(SQLException e)
204
        {
250
		{
205
            log.error("Can't get list of id's from inventory table", e);
251
			log.error("Can't get list of id's from inventory table", e);
206
        }
252
		}
207
        finally
253
		finally
208
        {
254
		{
209
            DB.close(statement);
255
			DB.close(statement);
210
        }
256
		}
211
257
212
        return new int[0];
258
		return new int[0];
213
    }
259
	}
214
260
215
    /**
261
	/**
216
     * {@inheritDoc}
262
	 * {@inheritDoc}
217
     */
263
	 */
218
    @Override
264
	@Override
219
    public boolean supports(String s, int i, int i1)
265
	public boolean supports(String s, int i, int i1)
220
    {
266
	{
221
        return MySQL5DAOUtils.supports(s, i, i1);
267
		return MySQL5DAOUtils.supports(s, i, i1);
222
    }
268
	}
223
269
224
}
270
}

Updated trunk/AE-go_GameServer/data/scripts/system/handlers/admincommands/Add.java Download diff

992993
20
20
21
import com.aionemu.gameserver.configs.AdminConfig;
21
import com.aionemu.gameserver.configs.AdminConfig;
22
import com.aionemu.gameserver.model.gameobjects.Item;
22
import com.aionemu.gameserver.model.gameobjects.Item;
23
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
23
import com.aionemu.gameserver.model.gameobjects.player.Storage;
24
import com.aionemu.gameserver.model.gameobjects.player.Player;
24
import com.aionemu.gameserver.model.gameobjects.player.Player;
25
import com.aionemu.gameserver.model.items.ItemId;
25
import com.aionemu.gameserver.model.items.ItemId;
26
import com.aionemu.gameserver.network.aion.serverpackets.SM_INVENTORY_UPDATE;
26
import com.aionemu.gameserver.network.aion.serverpackets.SM_INVENTORY_UPDATE;
...
...
52
			PacketSendUtility.sendMessage(admin, "You dont have enough rights to execute this command");
52
			PacketSendUtility.sendMessage(admin, "You dont have enough rights to execute this command");
53
			return;
53
			return;
54
		}
54
		}
55
		
55
56
		if(params.length == 0 || params.length > 2)
56
		if(params.length == 0 || params.length > 2)
57
		{
57
		{
58
			PacketSendUtility.sendMessage(admin, "syntax //add <item ID> <quantity>");
58
			PacketSendUtility.sendMessage(admin, "syntax //add <item ID> <quantity>");
...
...
61
61
62
		int itemId = 0;
62
		int itemId = 0;
63
		int itemCount = 1;
63
		int itemCount = 1;
64
		
64
65
		try
65
		try
66
		{
66
		{
67
			itemId = Integer.parseInt(params[0]);
67
			itemId = Integer.parseInt(params[0]);
...
...
75
			PacketSendUtility.sendMessage(admin, "Parameters need to be an integer.");
75
			PacketSendUtility.sendMessage(admin, "Parameters need to be an integer.");
76
			return;
76
			return;
77
		}
77
		}
78
		
78
79
		Item item  = itemService.newItem(itemId, itemCount);
79
		Item item  = itemService.newItem(itemId, itemCount);
80
		
80
81
		if(item == null)
81
		if(item == null)
82
		{
82
		{
83
			PacketSendUtility.sendMessage(admin, "Item template was not found for this itemId");
83
			PacketSendUtility.sendMessage(admin, "Item template was not found for this itemId");
84
			return;
84
			return;
85
		}
85
		}
86
		
86
87
		Inventory inventory = admin.getInventory();
87
		Storage inventory = admin.getInventory();
88
		Item addedItem = null;
88
		Item addedItem = null;
89
		
89
90
		if(itemId == ItemId.KINAH.value())
90
		if(itemId == ItemId.KINAH.value())
91
		{
91
		{
92
			addedItem = inventory.getKinahItem();
92
			addedItem = inventory.getKinahItem();
...
...
97
		{
97
		{
98
			addedItem = inventory.addToBag(item);
98
			addedItem = inventory.addToBag(item);
99
		}
99
		}
100
		
100
101
		if(addedItem != null)
101
		if(addedItem != null)
102
		{
102
		{
103
			PacketSendUtility.sendPacket(admin, new SM_INVENTORY_UPDATE(Collections.singletonList(addedItem)));
103
			PacketSendUtility.sendPacket(admin, new SM_INVENTORY_UPDATE(Collections.singletonList(addedItem)));

Added trunk/AE-go_GameServer/sql/Update/inventory-rev993.sql

Show contents

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/dao/InventoryDAO.java Download diff

992993
17
package com.aionemu.gameserver.dao;
17
package com.aionemu.gameserver.dao;
18
18
19
import com.aionemu.gameserver.model.gameobjects.Item;
19
import com.aionemu.gameserver.model.gameobjects.Item;
20
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
20
import com.aionemu.gameserver.model.gameobjects.player.Storage;
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.model.gameobjects.player.StorageType;
22
23
23
/**
24
/**
24
 * @author ATracer
25
 * @author ATracer
...
...
29
	 * @param player
30
	 * @param player
30
	 * @return
31
	 * @return
31
	 */
32
	 */
32
	public abstract Inventory load(Player player);
33
	public abstract Storage load(Player player, StorageType storageType);
33
	
34
34
	/**
35
	/**
35
	 * @param inventory
36
	 * @param inventory
36
	 */
37
	 */
37
	public abstract boolean store(Inventory inventory);
38
	public abstract boolean store(Player player);
38
	
39
39
	/**
40
	/**
40
	 * @param item
41
	 * @param item
41
	 */
42
	 */
42
	public abstract boolean store(Item item, int playerId);
43
	public abstract boolean store(Item item, int playerId);
43
	
44
44
	@Override
45
	@Override
45
	public String getClassName()
46
	public String getClassName()
46
	{
47
	{

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/itemengine/actions/SkillLearnAction.java Download diff

992993
57
	{
57
	{
58
		if(!validateConditions(player))
58
		if(!validateConditions(player))
59
			return;
59
			return;
60
		
60
61
		//item animation and message
61
		//item animation and message
62
		ItemTemplate itemTemplate = parentItem.getItemTemplate();
62
		ItemTemplate itemTemplate = parentItem.getItemTemplate();
63
		//PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.USE_ITEM(itemTemplate.getDescription()));
63
		//PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.USE_ITEM(itemTemplate.getDescription()));
...
...
67
		player.getSkillList().addSkill(skillid, 1);
67
		player.getSkillList().addSkill(skillid, 1);
68
		PacketSendUtility.sendPacket(player, new SM_SKILL_LIST(new SkillListEntry(skillid, 1, null)));
68
		PacketSendUtility.sendPacket(player, new SM_SKILL_LIST(new SkillListEntry(skillid, 1, null)));
69
		DAOManager.getDAO(PlayerSkillListDAO.class).storeSkills(player);
69
		DAOManager.getDAO(PlayerSkillListDAO.class).storeSkills(player);
70
		
70
71
		//remove book from inventory (assuming its not stackable)
71
		//remove book from inventory (assuming its not stackable)
72
		Item item = player.getInventory().getItemByObjId(parentItem.getObjectId());
72
		Item item = player.getInventory().getItemByObjId(parentItem.getObjectId());
73
		player.getInventory().removeFromBag(item);
73
		player.getInventory().removeFromBag(item, true);
74
		PacketSendUtility.sendPacket(player, new SM_DELETE_ITEM(parentItem.getObjectId()));	
74
		PacketSendUtility.sendPacket(player, new SM_DELETE_ITEM(parentItem.getObjectId()));	
75
	}
75
	}
76
76
...
...
79
		//1. check player level
79
		//1. check player level
80
		if(player.getCommonData().getLevel() < level)
80
		if(player.getCommonData().getLevel() < level)
81
			return false;
81
			return false;
82
		
82
83
		PlayerClass pc = player.getCommonData().getPlayerClass();
83
		PlayerClass pc = player.getCommonData().getPlayerClass();
84
		
84
85
		if(!validateClass(pc))
85
		if(!validateClass(pc))
86
			return false;
86
			return false;
87
		
87
88
		//4. check player race and SkillRace.ALL
88
		//4. check player race and SkillRace.ALL
89
		if(player.getCommonData().getRace().ordinal() != race.ordinal() 
89
		if(player.getCommonData().getRace().ordinal() != race.ordinal() 
90
			&& race != SkillRace.ALL)
90
			&& race != SkillRace.ALL)
...
...
92
		//5. check whether this skill is already learned
92
		//5. check whether this skill is already learned
93
		if(player.getSkillList().isSkillPresent(skillid))
93
		if(player.getSkillList().isSkillPresent(skillid))
94
			return false;
94
			return false;
95
		
95
96
		return true;
96
		return true;
97
	}
97
	}
98
98
...
...
106
		if(pc.ordinal() == playerClass.ordinal()
106
		if(pc.ordinal() == playerClass.ordinal()
107
			|| playerClass == SkillClass.ALL)
107
			|| playerClass == SkillClass.ALL)
108
			result = true;
108
			result = true;
109
		
109
110
		return result;
110
		return result;
111
	}
111
	}
112
}
112
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/account/PlayerAccountData.java Download diff

992993
18
18
19
import java.sql.Timestamp;
19
import java.sql.Timestamp;
20
20
21
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
21
import com.aionemu.gameserver.model.gameobjects.player.Storage;
22
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
22
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
23
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
23
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
24
24
...
...
35
{
35
{
36
	private PlayerCommonData	playerCommonData;
36
	private PlayerCommonData	playerCommonData;
37
	private PlayerAppearance	appereance;
37
	private PlayerAppearance	appereance;
38
	private Inventory			inventory;
38
	private Storage			inventory;
39
	private Timestamp			creationDate;
39
	private Timestamp			creationDate;
40
	private Timestamp			deletionDate;
40
	private Timestamp			deletionDate;
41
41
42
	public PlayerAccountData(PlayerCommonData playerCommonData, PlayerAppearance appereance, Inventory inventory)
42
	public PlayerAccountData(PlayerCommonData playerCommonData, PlayerAppearance appereance, Storage inventory)
43
	{
43
	{
44
		this.playerCommonData = playerCommonData;
44
		this.playerCommonData = playerCommonData;
45
		this.appereance = appereance;
45
		this.appereance = appereance;
...
...
94
	/**
94
	/**
95
	 * @return the inventory
95
	 * @return the inventory
96
	 */
96
	 */
97
	public Inventory getInventory()
97
	public Storage getInventory()
98
	{
98
	{
99
		return inventory;
99
		return inventory;
100
	}
100
	}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/Item.java Download diff

992993
32
public class Item extends AionObject
32
public class Item extends AionObject
33
{	
33
{	
34
	private int itemCount = 1;
34
	private int itemCount = 1;
35
	
35
36
	private int itemColor = 0;
36
	private int itemColor = 0;
37
	
37
38
	private ItemTemplate itemTemplate;
38
	private ItemTemplate itemTemplate;
39
	
39
40
	private boolean isEquipped = false;
40
	private boolean isEquipped = false;
41
	
41
42
	private int equipmentSlot = 0;
42
	private int equipmentSlot = 0;
43
	
43
44
	private boolean isQuest;
44
	private boolean isQuest;
45
	
45
46
	private PersistentState persistentState;
46
	private PersistentState persistentState;
47
	
47
48
	//TODO move to ItemStoneList ?
48
	//TODO move to ItemStoneList ?
49
	private List<ItemStone> itemStones;
49
	private List<ItemStone> itemStones;
50
	
50
51
	private int itemLocation;
52
51
	/**
53
	/**
52
	 * @param objId
54
	 * @param objId
53
	 * @param itemTemplate
55
	 * @param itemTemplate
...
...
61
	public Item(int objId, ItemTemplate itemTemplate, int itemCount, boolean isEquipped, int equipmentSlot)
63
	public Item(int objId, ItemTemplate itemTemplate, int itemCount, boolean isEquipped, int equipmentSlot)
62
	{
64
	{
63
		super(objId);
65
		super(objId);
64
		
66
65
		this.itemTemplate = itemTemplate;
67
		this.itemTemplate = itemTemplate;
66
		this.itemCount = itemCount;
68
		this.itemCount = itemCount;
67
		this.isEquipped = isEquipped;
69
		this.isEquipped = isEquipped;
68
		this.equipmentSlot = equipmentSlot;
70
		this.equipmentSlot = equipmentSlot;
69
		this.persistentState = PersistentState.NEW;
71
		this.persistentState = PersistentState.NEW;
70
	}
72
	}
71
	
73
72
	/**
74
	/**
73
	 * @param objId
75
	 * @param objId
74
	 * @param itemId
76
	 * @param itemId
...
...
81
	public Item(int objId, int itemId, int itemCount, int itemColor, boolean isEquipped, int equipmentSlot)
83
	public Item(int objId, int itemId, int itemCount, int itemColor, boolean isEquipped, int equipmentSlot)
82
	{
84
	{
83
		super(objId);
85
		super(objId);
84
		
86
85
		this.itemTemplate = DataManager.ITEM_DATA.getItemTemplate(itemId);
87
		this.itemTemplate = DataManager.ITEM_DATA.getItemTemplate(itemId);
86
		this.itemCount = itemCount;
88
		this.itemCount = itemCount;
87
		this.itemColor = itemColor;
89
		this.itemColor = itemColor;
...
...
107
109
108
	/**
110
	/**
109
	 *@return the itemColor
111
	 *@return the itemColor
110
     */
112
	 */
111
	public int getItemColor()
113
	public int getItemColor()
112
	{
114
	{
113
		return itemColor;
115
		return itemColor;
...
...
147
		this.itemCount = itemCount;
149
		this.itemCount = itemCount;
148
		setPersistentState(PersistentState.UPDATE_REQUIRED);
150
		setPersistentState(PersistentState.UPDATE_REQUIRED);
149
	}
151
	}
150
	
152
151
	/**
153
	/**
152
	 *  Every increase operation should be persisted immediately in caller method
154
	 *  Every increase operation should be persisted immediately in caller method
153
	 *  Use <code>setItemCount</code> method for non-persisted operations
155
	 *  Use <code>setItemCount</code> method for non-persisted operations
...
...
245
		int nextSlot = itemStones == null ? 0 : itemStones.size();
247
		int nextSlot = itemStones == null ? 0 : itemStones.size();
246
		if(itemStones == null)
248
		if(itemStones == null)
247
			itemStones = new ArrayList<ItemStone>();
249
			itemStones = new ArrayList<ItemStone>();
248
		
250
249
		ItemStone stone = new ItemStone(getObjectId(), itemId,
251
		ItemStone stone = new ItemStone(getObjectId(), itemId,
250
			nextSlot, PersistentState.NEW);
252
			nextSlot, PersistentState.NEW);
251
		this.itemStones.add(stone);
253
		this.itemStones.add(stone);
...
...
284
			default:
286
			default:
285
				this.persistentState = persistentState;
287
				this.persistentState = persistentState;
286
		}
288
		}
287
		
289
288
	}
290
	}
289
291
290
	/**
292
	/**
...
...
321
		sb.append('}');
323
		sb.append('}');
322
		return sb.toString();
324
		return sb.toString();
323
	}
325
	}
326
327
	public void setItemLocation(int storageType)
328
	{
329
		this.itemLocation = storageType;
330
	}
331
332
	public int getItemLocation()
333
	{
334
		return itemLocation;
335
	}
324
}
336
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/player/Player.java Download diff

992993
18
18
19
import java.util.ArrayList;
19
import java.util.ArrayList;
20
import java.util.List;
20
import java.util.List;
21
import java.util.SortedMap;
22
import java.util.TreeMap;
23
import java.util.Collections;
21
24
22
import com.aionemu.commons.callbacks.Enhancable;
25
import com.aionemu.commons.callbacks.Enhancable;
23
import com.aionemu.gameserver.controllers.PlayerController;
26
import com.aionemu.gameserver.controllers.PlayerController;
...
...
28
import com.aionemu.gameserver.model.gameobjects.VisibleObject;
31
import com.aionemu.gameserver.model.gameobjects.VisibleObject;
29
import com.aionemu.gameserver.model.gameobjects.player.listeners.PlayerLoggedInListener;
32
import com.aionemu.gameserver.model.gameobjects.player.listeners.PlayerLoggedInListener;
30
import com.aionemu.gameserver.model.gameobjects.player.listeners.PlayerLoggedOutListener;
33
import com.aionemu.gameserver.model.gameobjects.player.listeners.PlayerLoggedOutListener;
34
import com.aionemu.gameserver.model.gameobjects.Item;
31
import com.aionemu.gameserver.model.gameobjects.stats.PlayerGameStats;
35
import com.aionemu.gameserver.model.gameobjects.stats.PlayerGameStats;
32
import com.aionemu.gameserver.model.gameobjects.stats.PlayerLifeStats;
36
import com.aionemu.gameserver.model.gameobjects.stats.PlayerLifeStats;
33
import com.aionemu.gameserver.model.group.PlayerGroup;
37
import com.aionemu.gameserver.model.group.PlayerGroup;
...
...
60
	private BlockList			blockList;
64
	private BlockList			blockList;
61
	private ResponseRequester	requester;
65
	private ResponseRequester	requester;
62
	private boolean				lookingForGroup	= false;
66
	private boolean				lookingForGroup	= false;
63
	private Inventory			inventory;
67
	private Storage                         inventory;
68
	private Storage                         regularWarehouse;
69
	private Storage                         accountWarehouse;
70
	private SortedMap<Integer, Item>        equipment = Collections.synchronizedSortedMap(new TreeMap<Integer, Item>());
64
	private PlayerStore			store;
71
	private PlayerStore			store;
65
	private PlayerStatsTemplate	playerStatsTemplate;
72
	private PlayerStatsTemplate	playerStatsTemplate;
66
	private TitleList			titleList;
73
	private TitleList			titleList;
...
...
305
	/**
312
	/**
306
	 * @return the inventory
313
	 * @return the inventory
307
	 */
314
	 */
308
	public Inventory getInventory()
315
316
	public SortedMap<Integer, Item> getEquipment()
309
	{
317
	{
310
		return inventory;
318
		return equipment;
311
	}
319
	}
312
320
313
	/**
321
	/**
...
...
373
					QuestEnv env = new QuestEnv(obj, this, questId, 0);
381
					QuestEnv env = new QuestEnv(obj, this, questId, 0);
374
					if (QuestEngine.getInstance().getQuest(env).checkStartCondition())
382
					if (QuestEngine.getInstance().getQuest(env).checkStartCondition())
375
					{
383
					{
376
					    if (!nearbyQuestList.contains(questId))
384
						if (!nearbyQuestList.contains(questId))
377
					    {
385
						{
378
					    	nearbyQuestList.add(questId);
386
							nearbyQuestList.add(questId);
379
					    }
387
						}
380
					}
388
					}
381
				}
389
				}
382
			}
390
			}
...
...
393
	 * @param inventory
401
	 * @param inventory
394
	 *            the inventory to set Inventory should be set right after player object is created
402
	 *            the inventory to set Inventory should be set right after player object is created
395
	 */
403
	 */
396
	public void setInventory(Inventory inventory)
404
	public void setStorage(Storage storage, StorageType storageType)
397
	{
405
	{
398
		this.inventory = inventory;
406
		if(storageType == StorageType.CUBE)
399
		inventory.setOwner(this);
407
		{
400
	}
408
			this.inventory = storage;
409
			inventory.setOwner(this);
410
		}
401
411
402
	/**
412
		if(storageType == StorageType.REGULAR_WAREHOUSE)
403
	 * @param CubeUpgrade
413
		{
404
	 *            int Sets the cubesize
414
			this.regularWarehouse = storage;
405
	 */
415
			regularWarehouse.setOwner(this);
406
	public void setCubesize(int cubesize)
416
		}
407
	{
408
		this.playerCommonData.setCubesize(cubesize);
409
	}
410
417
411
	/**
418
		if(storageType == StorageType.ACCOUNT_WAREHOUSE)
412
	 * @return the playerSettings
419
		{
413
	 */
420
			this.accountWarehouse = storage;
414
	public PlayerSettings getPlayerSettings()
421
			accountWarehouse.setOwner(this);
415
	{
422
		}
416
		return playerSettings;
417
	}
418
423
419
	/**
420
	 * @param playerSettings the playerSettings to set
421
	 */
422
	public void setPlayerSettings(PlayerSettings playerSettings)
423
	{
424
		this.playerSettings = playerSettings;
425
	}
424
	}
426
425
427
	/**
426
	public Storage getStorage(int storageType)
428
	 * @return the zoneInstance
429
	 */
430
	public ZoneInstance getZoneInstance()
431
	{
427
	{
432
		return zoneInstance;
428
		if(storageType == StorageType.REGULAR_WAREHOUSE.getId())
433
	}
429
			return regularWarehouse;
434
430
435
	/**
431
		if(storageType == StorageType.ACCOUNT_WAREHOUSE.getId())
436
	 * @param zoneInstance the zoneInstance to set
432
			return accountWarehouse;
437
	 */
438
	public void setZoneInstance(ZoneInstance zoneInstance)
439
	{
440
		this.zoneInstance = zoneInstance;
441
	}
442
433
443
	public TitleList getTitleList()
434
		if(storageType == StorageType.CUBE.getId())
444
	{
435
			return inventory;
445
		return titleList;
436
		else
437
			return null;
446
	}
438
	}
447
	
448
	public void setTitleList(TitleList titleList)
449
	{
450
		this.titleList = titleList;
451
		titleList.setOwner(this);
452
	}
453
439
454
	/**
440
	public Storage getInventory()
455
	 * @return the playerGroup
456
	 */
457
	public PlayerGroup getPlayerGroup()
458
	{
441
	{
459
		return playerGroup;
442
		return inventory;
460
	}
443
	}
461
444
462
	/**
445
	/**
463
	 * @param playerGroup the playerGroup to set
446
	 * @param CubeUpgrade
447
	 *            int Sets the cubesize
464
	 */
448
	 */
465
	public void setPlayerGroup(PlayerGroup playerGroup)
449
	 public void setCubesize(int cubesize)
466
	{
450
	{
467
		this.playerGroup = playerGroup;
451
		this.playerCommonData.setCubesize(cubesize);
468
	}
452
	}
469
453
470
	@Override
454
	 /**
471
	public void initializeAi()
455
	  * @return the playerSettings
472
	{
456
	  */
473
		// TODO Auto-generated method stub
457
	 public PlayerSettings getPlayerSettings()
474
	}
458
	 {
459
		 return playerSettings;
460
	 }
475
461
476
	/**
462
	 /**
477
	 * This method is called when player logs into the game. It's main responsibility is to call all registered
463
	  * @param playerSettings the playerSettings to set
478
	 * listeners.<br>
464
	  */
479
	 * <br>
465
	 public void setPlayerSettings(PlayerSettings playerSettings)
480
	 * 
466
	 {
481
	 * <b><font color='red'>NOTICE: </font>this method is supposed to be called only from
467
		 this.playerSettings = playerSettings;
482
	 * {@link PlayerService#playerLoggedIn(Player)}</b>
468
	 }
483
	 */
484
	@Enhancable(callback = PlayerLoggedInListener.class)
485
	public void onLoggedIn()
486
	{
487
469
488
	}
470
	 /**
471
	  * @return the zoneInstance
472
	  */
473
	 public ZoneInstance getZoneInstance()
474
	 {
475
		 return zoneInstance;
476
	 }
489
477
490
	/**
478
	 /**
491
	 * This method is called when player leaves the game. It's main responsibility is to call all registered listeners.<br>
479
	  * @param zoneInstance the zoneInstance to set
492
	 * <br>
480
	  */
493
	 * 
481
	 public void setZoneInstance(ZoneInstance zoneInstance)
494
	 * <b><font color='red'>NOTICE: </font>this method is supposed to be called only from
482
	 {
495
	 * {@link PlayerService#playerLoggedOut(Player)}</b>
483
		 this.zoneInstance = zoneInstance;
496
	 */
484
	 }
497
	@Enhancable(callback = PlayerLoggedOutListener.class)
498
	public void onLoggedOut()
499
	{
500
485
501
	}
486
	 public TitleList getTitleList()
487
	 {
488
		 return titleList;
489
	 }
490
491
	 public void setTitleList(TitleList titleList)
492
	 {
493
		 this.titleList = titleList;
494
		 titleList.setOwner(this);
495
	 }
496
497
	 /**
498
	  * @return the playerGroup
499
	  */
500
	 public PlayerGroup getPlayerGroup()
501
	 {
502
		 return playerGroup;
503
	 }
504
505
	 /**
506
	  * @param playerGroup the playerGroup to set
507
	  */
508
	 public void setPlayerGroup(PlayerGroup playerGroup)
509
	 {
510
		 this.playerGroup = playerGroup;
511
	 }
512
513
	 @Override
514
	 public void initializeAi()
515
	 {
516
		 // TODO Auto-generated method stub
517
	 }
518
519
	 /**
520
	  * This method is called when player logs into the game. It's main responsibility is to call all registered
521
	  * listeners.<br>
522
	  * <br>
523
	  * 
524
	  * <b><font color='red'>NOTICE: </font>this method is supposed to be called only from
525
	  * {@link PlayerService#playerLoggedIn(Player)}</b>
526
	  */
527
	 @Enhancable(callback = PlayerLoggedInListener.class)
528
	 public void onLoggedIn()
529
	 {
530
531
	 }
532
533
	 /**
534
	  * This method is called when player leaves the game. It's main responsibility is to call all registered listeners.<br>
535
	  * <br>
536
	  * 
537
	  * <b><font color='red'>NOTICE: </font>this method is supposed to be called only from
538
	  * {@link PlayerService#playerLoggedOut(Player)}</b>
539
	  */
540
	 @Enhancable(callback = PlayerLoggedOutListener.class)
541
	 public void onLoggedOut()
542
	 {
543
544
	 }
502
}
545
}

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/player/Storage.java

Show contents

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/player/StorageType.java

Show contents

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_DELETE_ITEM.java Download diff

992993
17
package com.aionemu.gameserver.network.aion.clientpackets;
17
package com.aionemu.gameserver.network.aion.clientpackets;
18
18
19
import com.aionemu.gameserver.model.gameobjects.Item;
19
import com.aionemu.gameserver.model.gameobjects.Item;
20
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
20
import com.aionemu.gameserver.model.gameobjects.player.Storage;
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.network.aion.AionClientPacket;
22
import com.aionemu.gameserver.network.aion.AionClientPacket;
23
import com.aionemu.gameserver.network.aion.serverpackets.SM_DELETE_ITEM;
23
import com.aionemu.gameserver.network.aion.serverpackets.SM_DELETE_ITEM;
...
...
29
public class CM_DELETE_ITEM extends AionClientPacket
29
public class CM_DELETE_ITEM extends AionClientPacket
30
{
30
{
31
	public int objId;
31
	public int objId;
32
	
32
33
	public CM_DELETE_ITEM(int opcode)
33
	public CM_DELETE_ITEM(int opcode)
34
	{
34
	{
35
		super(opcode);
35
		super(opcode);
...
...
47
	{
47
	{
48
48
49
		Player player = getConnection().getActivePlayer();
49
		Player player = getConnection().getActivePlayer();
50
		Inventory bag = player.getInventory();
50
		Storage bag = player.getInventory();
51
		Item resultItem = bag.getItemByObjId(objId);
51
		Item resultItem = bag.getItemByObjId(objId);
52
		if (resultItem != null)
52
		if (resultItem != null)
53
			bag.removeFromBag(resultItem);
53
			bag.removeFromBag(resultItem, true);
54
		sendPacket(new SM_DELETE_ITEM(objId));
54
		sendPacket(new SM_DELETE_ITEM(objId));
55
	}
55
	}
56
}
56
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_DIALOG_SELECT.java Download diff

992993
21
import com.aionemu.gameserver.model.gameobjects.Npc;
21
import com.aionemu.gameserver.model.gameobjects.Npc;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
23
import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
23
import com.aionemu.gameserver.model.gameobjects.player.RequestResponseHandler;
24
import com.aionemu.gameserver.model.gameobjects.player.StorageType;
24
import com.aionemu.gameserver.network.aion.AionClientPacket;
25
import com.aionemu.gameserver.network.aion.AionClientPacket;
25
import com.aionemu.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
26
import com.aionemu.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
26
import com.aionemu.gameserver.network.aion.serverpackets.SM_MESSAGE;
27
import com.aionemu.gameserver.network.aion.serverpackets.SM_MESSAGE;
...
...
29
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
30
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
30
import com.aionemu.gameserver.network.aion.serverpackets.SM_TELEPORT_MAP;
31
import com.aionemu.gameserver.network.aion.serverpackets.SM_TELEPORT_MAP;
31
import com.aionemu.gameserver.network.aion.serverpackets.SM_TRADELIST;
32
import com.aionemu.gameserver.network.aion.serverpackets.SM_TRADELIST;
33
import com.aionemu.gameserver.network.aion.serverpackets.SM_WAREHOUSE_INFO;
32
import com.aionemu.gameserver.questEngine.QuestEngine;
34
import com.aionemu.gameserver.questEngine.QuestEngine;
33
import com.aionemu.gameserver.questEngine.model.QuestEnv;
35
import com.aionemu.gameserver.questEngine.model.QuestEnv;
34
import com.aionemu.gameserver.services.ClassChangeService;
36
import com.aionemu.gameserver.services.ClassChangeService;
35
import com.aionemu.gameserver.services.CubeExpandService;
37
import com.aionemu.gameserver.services.CubeExpandService;
36
import com.aionemu.gameserver.utils.PacketSendUtility;
38
import com.aionemu.gameserver.utils.PacketSendUtility;
39
import com.aionemu.gameserver.utils.MathUtil;
37
import com.google.inject.Inject;
40
import com.google.inject.Inject;
38
41
39
/**
42
/**
...
...
86
		final Player player = getConnection().getActivePlayer();
89
		final Player player = getConnection().getActivePlayer();
87
		if(player == null)
90
		if(player == null)
88
			return;
91
			return;
89
		
92
90
		if(targetObjectId == 0)
93
		if(targetObjectId == 0)
91
		{
94
		{
92
			if (QuestEngine.getInstance().onDialog(new QuestEnv(null, player, questId, dialogId)))
95
			if (QuestEngine.getInstance().onDialog(new QuestEnv(null, player, questId, dialogId)))
...
...
118
				break;
121
				break;
119
			case 20:
122
			case 20:
120
				//warehouse
123
				//warehouse
121
				sendPacket(new SM_DIALOG_WINDOW(targetObjectId, 26));
124
				if(MathUtil.isInRange(npc, player, 10)) // voiding exploit with sending fake client dialog_select packet
125
				{
126
					sendPacket(new SM_DIALOG_WINDOW(targetObjectId, 26));
127
					sendPacket(new SM_WAREHOUSE_INFO(player.getStorage(StorageType.REGULAR_WAREHOUSE.getId()).getStorageItems(), StorageType.REGULAR_WAREHOUSE.getId()));
128
					sendPacket(new SM_WAREHOUSE_INFO(null, StorageType.REGULAR_WAREHOUSE.getId())); // strange retail way of sending warehouse packets
129
					sendPacket(new SM_WAREHOUSE_INFO(player.getStorage(StorageType.ACCOUNT_WAREHOUSE.getId()).getUnquippedItems(), StorageType.ACCOUNT_WAREHOUSE.getId()));
130
					sendPacket(new SM_WAREHOUSE_INFO(null, StorageType.ACCOUNT_WAREHOUSE.getId()));
131
				}				
122
				break;
132
				break;
123
			case 27:
133
			case 27:
124
				//Consign trade?? npc karinerk, koorunerk
134
				//Consign trade?? npc karinerk, koorunerk
...
...
141
						}
151
						}
142
						//TODO not enought kinah message
152
						//TODO not enought kinah message
143
					}
153
					}
144
		
154
145
					@Override
155
					@Override
146
					public void denyRequest(Creature requester, Player responder)
156
					public void denyRequest(Creature requester, Player responder)
147
					{
157
					{
...
...
173
				break;
183
				break;
174
			case 38:
184
			case 38:
175
				//flight and teleport
185
				//flight and teleport
176
//				if (player.getCommonData().isFlying() == true)
186
				//				if (player.getCommonData().isFlying() == true)
177
//				{
187
				//				{
178
//					PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300696));
188
				//					PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300696));
179
//					return;
189
				//					return;
180
//				}
190
				//				}
181
				sendPacket(new SM_TELEPORT_MAP(player, targetObjectId));
191
				sendPacket(new SM_TELEPORT_MAP(player, targetObjectId));
182
				break;
192
				break;
183
			case 39:
193
			case 39:

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_ENTER_WORLD.java Download diff

992993
25
import com.aionemu.gameserver.model.account.AccountTime;
25
import com.aionemu.gameserver.model.account.AccountTime;
26
import com.aionemu.gameserver.model.account.PlayerAccountData;
26
import com.aionemu.gameserver.model.account.PlayerAccountData;
27
import com.aionemu.gameserver.model.gameobjects.Item;
27
import com.aionemu.gameserver.model.gameobjects.Item;
28
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
28
import com.aionemu.gameserver.model.gameobjects.player.Storage;
29
import com.aionemu.gameserver.model.gameobjects.player.Player;
29
import com.aionemu.gameserver.model.gameobjects.player.Player;
30
import com.aionemu.gameserver.model.templates.BindPointTemplate;
30
import com.aionemu.gameserver.model.templates.BindPointTemplate;
31
import com.aionemu.gameserver.network.aion.AionClientPacket;
31
import com.aionemu.gameserver.network.aion.AionClientPacket;
...
...
156
			// will be removed next time
156
			// will be removed next time
157
157
158
			//items
158
			//items
159
			Inventory inventory = player.getInventory();
159
			Storage inventory = player.getInventory();
160
			List<Item> equipedItems = inventory.getEquippedItems();
160
			List<Item> equipedItems = inventory.getEquippedItems();
161
			if(equipedItems.size() != 0)
161
			if(equipedItems.size() != 0)
162
			{
162
			{
...
...
221
			AccountTime accountTime = getConnection().getAccount().getAccountTime();
221
			AccountTime accountTime = getConnection().getAccount().getAccountTime();
222
222
223
			sendPacket(SM_SYSTEM_MESSAGE.ACCUMULATED_TIME(
223
			sendPacket(SM_SYSTEM_MESSAGE.ACCUMULATED_TIME(
224
															accountTime.getAccumulatedOnlineHours(), 
224
				accountTime.getAccumulatedOnlineHours(), 
225
															accountTime.getAccumulatedOnlineMinutes(),
225
				accountTime.getAccumulatedOnlineMinutes(),
226
															accountTime.getAccumulatedRestHours(),
226
				accountTime.getAccumulatedRestHours(),
227
															accountTime.getAccumulatedRestMinutes())
227
				accountTime.getAccumulatedRestMinutes())
228
														);
228
			);
229
229
230
			/*
230
			/*
231
			 * Needed
231
			 * Needed
232
			 */
232
			 */
233
			sendPacket(new SM_PLAYER_SPAWN(player));
233
			 sendPacket(new SM_PLAYER_SPAWN(player));
234
			sendPacket(new SM_EMOTION_LIST());
234
			 sendPacket(new SM_EMOTION_LIST());
235
			sendPacket(new SM_INFLUENCE_RATIO());
235
			 sendPacket(new SM_INFLUENCE_RATIO());
236
            sendPacket(new SM_PRICES());
236
			 sendPacket(new SM_PRICES());
237
            sendPacket(new SM_PLAYER_ID(player));
237
			 sendPacket(new SM_PLAYER_ID(player));
238
            sendPacket(new SM_ABYSS_RANK());
238
			 sendPacket(new SM_ABYSS_RANK());
239
			sendPacket(new SM_FLY_TIME());
239
			 sendPacket(new SM_FLY_TIME());
240
240
241
			sendPacket(new SM_MESSAGE(0, null, "Welcome to " + Config.SERVER_NAME
241
			 sendPacket(new SM_MESSAGE(0, null, "Welcome to " + Config.SERVER_NAME
242
				+ " server\nPowered by aion-unique software\ndeveloped by www.aion-unique.org team.\nCopyright 2010", null,
242
				 + " server\nPowered by aion-unique software\ndeveloped by www.aion-unique.org team.\nCopyright 2010", null,
243
				ChatType.ANNOUNCEMENTS));
243
				 ChatType.ANNOUNCEMENTS));
244
244
245
			playerService.playerLoggedIn(player);
245
			 playerService.playerLoggedIn(player);
246
246
247
			ClassChangeService.showClassChangeDialog(player);
247
			 ClassChangeService.showClassChangeDialog(player);
248
		}
248
		}
249
		else
249
		else
250
		{
250
		{
...
...
252
		}
252
		}
253
	}
253
	}
254
254
255
	
255
256
}
256
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_EQUIP_ITEM.java Download diff

992993
16
 */
16
 */
17
package com.aionemu.gameserver.network.aion.clientpackets;
17
package com.aionemu.gameserver.network.aion.clientpackets;
18
18
19
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
19
import com.aionemu.gameserver.model.gameobjects.player.Storage;
20
import com.aionemu.gameserver.model.gameobjects.player.Player;
20
import com.aionemu.gameserver.model.gameobjects.player.Player;
21
import com.aionemu.gameserver.network.aion.AionClientPacket;
21
import com.aionemu.gameserver.network.aion.AionClientPacket;
22
import com.aionemu.gameserver.network.aion.serverpackets.SM_UPDATE_PLAYER_APPEARANCE;
22
import com.aionemu.gameserver.network.aion.serverpackets.SM_UPDATE_PLAYER_APPEARANCE;
...
...
52
52
53
		final Player activePlayer = getConnection().getActivePlayer();
53
		final Player activePlayer = getConnection().getActivePlayer();
54
54
55
		Inventory inventory = activePlayer.getInventory();
55
		Storage inventory = activePlayer.getInventory();
56
		
56
57
		boolean operationResult = false;
57
		boolean operationResult = false;
58
		
58
59
		if(action == 0)
59
		if(action == 0)
60
		{
60
		{
61
			operationResult = inventory.equipItem(itemUniqueId, slotRead);
61
			operationResult = inventory.equipItem(itemUniqueId, slotRead);

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_GROUP_DISTRIBUTION.java Download diff

992993
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
21
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.model.group.PlayerGroup;
22
import com.aionemu.gameserver.model.group.PlayerGroup;
23
import com.aionemu.gameserver.network.aion.AionClientPacket;
23
import com.aionemu.gameserver.network.aion.AionClientPacket;
24
25
/**
24
/**
26
 * @author Lyahim
25
 * @author Lyahim
27
 */
26
 */
28
public class CM_GROUP_DISTRIBUTION extends AionClientPacket
27
public class CM_GROUP_DISTRIBUTION extends AionClientPacket
29
{
28
{
30
	private int amount;
29
	private int amount;
31
		
30
32
	public CM_GROUP_DISTRIBUTION(int opcode)
31
	public CM_GROUP_DISTRIBUTION(int opcode)
33
	{
32
	{
34
		super(opcode);
33
		super(opcode);
...
...
53
	{
52
	{
54
		Player player = getConnection().getActivePlayer();
53
		Player player = getConnection().getActivePlayer();
55
		PlayerGroup pg = null;
54
		PlayerGroup pg = null;
56
		
55
57
		if(player != null)
56
		if(player != null)
58
			pg = player.getPlayerGroup();
57
			pg = player.getPlayerGroup();
59
		if(pg != null)
58
		if(pg != null)
60
		{
59
		{
61
			int rewardcount = pg.size() - 1;
60
			int rewardcount = pg.size() - 1;
62
		
61
63
			if(rewardcount <= amount)
62
			if(rewardcount <= amount)
64
			{
63
			{
65
				int reward = amount/rewardcount;
64
				int reward = amount/rewardcount;
66
				
65
67
				Iterator it = pg.getGroupMemberIterator();
66
				Iterator it = pg.getGroupMemberIterator();
68
				while(it.hasNext())
67
				while(it.hasNext())
69
				{
68
				{
70
					Player member = (Player)it.next();
69
					Player member = (Player)it.next();
71
					
70
72
					if(member.equals(player))
71
					if(member.equals(player))
73
						member.getInventory().decreaseKinah(amount);
72
						member.getInventory().decreaseKinah(amount);
74
					else
73
					else

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_MOVE_ITEM.java

Show contents

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_SPLIT_ITEM.java Download diff

992993
19
	private ItemService itemService;
19
	private ItemService itemService;
20
20
21
	int sourceItemObjId;
21
	int sourceItemObjId;
22
	int sourceStorageType;
22
	int itemAmount;
23
	int itemAmount;
23
	int destinationItemObjId;
24
	int destinationItemObjId;
25
	int destinationStorageType;
24
	int slotNum; // destination slot.
26
	int slotNum; // destination slot.
25
27
26
	public CM_SPLIT_ITEM(int opcode)
28
	public CM_SPLIT_ITEM(int opcode)
...
...
31
	@Override
33
	@Override
32
	protected void readImpl()
34
	protected void readImpl()
33
	{
35
	{
34
		sourceItemObjId = readD();      // drag item unique ID. If merging and itemCount becoming null, this item must be deleted.
36
		sourceItemObjId = readD();       // drag item unique ID. If merging and itemCount becoming null, this item must be deleted.
35
		itemAmount = readD();           // Items count to be moved.
37
		itemAmount = readD();            // Items count to be moved.
36
		@SuppressWarnings("unused")
38
		byte[] zeros = readB(4);         // Nothing
37
		byte[] zeros = readB(5);        // Nothing
39
		sourceStorageType = readC();     // Source storage
38
		destinationItemObjId = readD(); // Destination item unique ID if merging. Null if spliting.
40
		destinationItemObjId = readD();  // Destination item unique ID if merging. Null if spliting.
39
		zeros = readB(1);               // Nothing
41
		destinationStorageType = readC();// Destination storage
40
		slotNum = readH();              // Destination slot. Not needed right now, Items adding only to next available slot. Not needed at all when merge.
42
		slotNum = readH();               // Destination slot. Not needed right now, Items adding only to next available slot. Not needed at all when merge.
41
	}
43
	}
42
44
45
43
	@Override
46
	@Override
44
	protected void runImpl()
47
	protected void runImpl()
45
	{
48
	{
46
		Player player = getConnection().getActivePlayer();
49
		Player player = getConnection().getActivePlayer();
47
50
48
		if(destinationItemObjId == 0)
51
		if(destinationItemObjId == 0)
49
			itemService.splitItem(player, sourceItemObjId, itemAmount, slotNum);
52
			itemService.splitItem(player, sourceItemObjId, itemAmount, slotNum, sourceStorageType, destinationStorageType);
50
		else
53
		else
51
			itemService.mergeItems(player, sourceItemObjId, itemAmount, destinationItemObjId);
54
			itemService.mergeItems(player, sourceItemObjId, itemAmount, destinationItemObjId, sourceStorageType, destinationStorageType);
52
	}
55
	}
53
}
56
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_TELEPORT_SELECT.java Download diff

992993
18
18
19
import com.aionemu.gameserver.dataholders.DataManager;
19
import com.aionemu.gameserver.dataholders.DataManager;
20
import com.aionemu.gameserver.model.gameobjects.Npc;
20
import com.aionemu.gameserver.model.gameobjects.Npc;
21
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
21
import com.aionemu.gameserver.model.gameobjects.player.Storage;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
23
import com.aionemu.gameserver.model.templates.teleport.TelelocationTemplate;
23
import com.aionemu.gameserver.model.templates.teleport.TelelocationTemplate;
24
import com.aionemu.gameserver.model.templates.teleport.TeleporterTemplate;
24
import com.aionemu.gameserver.model.templates.teleport.TeleporterTemplate;
...
...
39
	public  int					locId;
39
	public  int					locId;
40
40
41
	public  TelelocationTemplate _tele;
41
	public  TelelocationTemplate _tele;
42
	
42
43
	private TeleporterTemplate teleport;
43
	private TeleporterTemplate teleport;
44
44
45
	public CM_TELEPORT_SELECT(int opcode)
45
	public CM_TELEPORT_SELECT(int opcode)
...
...
66
	{
66
	{
67
		Player activePlayer = getConnection().getActivePlayer();
67
		Player activePlayer = getConnection().getActivePlayer();
68
		@SuppressWarnings("unused")
68
		@SuppressWarnings("unused")
69
		Inventory bag = activePlayer.getInventory();
69
		Storage bag = activePlayer.getInventory();
70
		World world = activePlayer.getActiveRegion().getWorld();
70
		World world = activePlayer.getActiveRegion().getWorld();
71
		Npc npc = (Npc)world.findAionObject(targetObjectId);
71
		Npc npc = (Npc)world.findAionObject(targetObjectId);
72
		
72
73
		if(activePlayer == null)
73
		if(activePlayer == null)
74
			return;
74
			return;
75
75
76
		teleport = DataManager.TELEPORTER_DATA.getTeleporterTemplate(npc.getNpcId());
76
		teleport = DataManager.TELEPORTER_DATA.getTeleporterTemplate(npc.getNpcId());
77
		
77
78
		switch(teleport.getType())
78
		switch(teleport.getType())
79
		{
79
		{
80
			case FLIGHT:
80
			case FLIGHT:

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_VIEW_PLAYER_DETAILS.java Download diff

992993
18
18
19
import org.apache.log4j.Logger;
19
import org.apache.log4j.Logger;
20
20
21
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
21
import com.aionemu.gameserver.model.gameobjects.player.Storage;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
22
import com.aionemu.gameserver.model.gameobjects.player.Player;
23
import com.aionemu.gameserver.network.aion.AionClientPacket;
23
import com.aionemu.gameserver.network.aion.AionClientPacket;
24
import com.aionemu.gameserver.network.aion.serverpackets.SM_VIEW_PLAYER_DETAILS;
24
import com.aionemu.gameserver.network.aion.serverpackets.SM_VIEW_PLAYER_DETAILS;
...
...
32
public class CM_VIEW_PLAYER_DETAILS extends AionClientPacket
32
public class CM_VIEW_PLAYER_DETAILS extends AionClientPacket
33
{
33
{
34
	private static final Logger log = Logger.getLogger(CM_VIEW_PLAYER_DETAILS.class);
34
	private static final Logger log = Logger.getLogger(CM_VIEW_PLAYER_DETAILS.class);
35
	
35
36
	private int targetObjectId;
36
	private int targetObjectId;
37
37
38
	@Inject	
38
	@Inject	
...
...
65
			log.warn("CHECKPOINT: can't show player details for " + targetObjectId);
65
			log.warn("CHECKPOINT: can't show player details for " + targetObjectId);
66
			return;
66
			return;
67
		}
67
		}
68
		Inventory inventory = player.getInventory();	
68
		Storage inventory = player.getInventory();
69
69
70
		sendPacket(new SM_VIEW_PLAYER_DETAILS(inventory.getEquippedItems()));
70
		sendPacket(new SM_VIEW_PLAYER_DETAILS(inventory.getEquippedItems()));
71
	}
71
	}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/InventoryPacket.java Download diff

992993
46
		writeD(buf, Integer.parseInt(itemTemplate.getDescription()));
46
		writeD(buf, Integer.parseInt(itemTemplate.getDescription()));
47
		writeH(buf, 0);
47
		writeH(buf, 0);
48
	}
48
	}
49
	
49
50
	/**
50
	/**
51
	 *  All misc items
51
	 *  All misc items
52
	 * @param buf
52
	 * @param buf
...
...
56
	{
56
	{
57
		writeH(buf, 0x16); //length of details
57
		writeH(buf, 0x16); //length of details
58
		writeC(buf, 0);
58
		writeC(buf, 0);
59
		
59
60
		if(isQuest)
60
		if(isQuest)
61
		{
61
		{
62
			writeC(buf, 0x20);
62
			writeC(buf, 0x20);
...
...
66
			writeC(buf, 0x3E); //or can be 0x1E 0x3E 0x20 (quest)
66
			writeC(buf, 0x3E); //or can be 0x1E 0x3E 0x20 (quest)
67
			writeC(buf, 0x63); // ?
67
			writeC(buf, 0x63); // ?
68
		}
68
		}
69
		
69
70
		
70
71
		writeD(buf, item.getItemCount());
71
		writeD(buf, item.getItemCount());
72
		writeD(buf, 0);
72
		writeD(buf, 0);
73
		writeD(buf, 0);
73
		writeD(buf, 0);
...
...
76
		writeC(buf, 0);
76
		writeC(buf, 0);
77
		writeH(buf, item.getEquipmentSlot()); // not equipable items
77
		writeH(buf, item.getEquipmentSlot()); // not equipable items
78
	}
78
	}
79
	
79
80
	/**
80
	/**
81
	 * 
81
	 * 
82
	 * @param buf
82
	 * @param buf
83
	 * @param item
83
	 * @param item
84
	 */
84
	 */
85
	protected void writeKinah(ByteBuffer buf, Item item)
85
	protected void writeKinah(ByteBuffer buf, Item item, boolean isInventory)
86
	{
86
	{
87
		writeH(buf, 0x16); //length of details
87
		writeH(buf, 0x16); //length of details
88
		writeC(buf, 0);
88
		writeC(buf, 0);
...
...
95
		writeH(buf, 0);
95
		writeH(buf, 0);
96
		writeC(buf, 0);
96
		writeC(buf, 0);
97
		writeH(buf, 255); // FF FF equipment
97
		writeH(buf, 255); // FF FF equipment
98
		writeC(buf, 0);
98
		if(isInventory)
99
			writeC(buf, 0);
99
	}
100
	}
100
	
101
101
	/**
102
	/**
102
	 *  For all weapon. Weapon is identified by weapon_type in xml
103
	 *  For all weapon. Weapon is identified by weapon_type in xml
103
	 *  
104
	 *  
104
	 * @param buf
105
	 * @param buf
105
	 * @param item
106
	 * @param item
106
	 */
107
	 */
107
	protected void writeWeaponInfo(ByteBuffer buf, Item item)
108
	protected void writeWeaponInfo(ByteBuffer buf, Item item, boolean isInventory)
108
	{
109
	{
109
		int itemSlotId = item.getEquipmentSlot();
110
		int itemSlotId = item.getEquipmentSlot();
110
		writeH(buf, 0x4B);
111
		writeH(buf, 0x4B);
...
...
117
		writeC(buf, 0); //enchant (1-10)
118
		writeC(buf, 0); //enchant (1-10)
118
		writeD(buf, item.getItemTemplate().getItemId());
119
		writeD(buf, item.getItemTemplate().getItemId());
119
		writeC(buf, 0);
120
		writeC(buf, 0);
120
		
121
121
		writeItemStones(buf, item);
122
		writeItemStones(buf, item);
122
		
123
123
		
124
124
		writeC(buf, 0);
125
		writeC(buf, 0);
125
		writeD(buf, 0);
126
		writeD(buf, 0);
126
		writeD(buf, 0);
127
		writeD(buf, 0);
127
		
128
128
		writeD(buf, 0);//unk 1.5.1.9
129
		writeD(buf, 0);//unk 1.5.1.9
129
		writeC(buf, 0);//unk 1.5.1.9
130
		writeC(buf, 0);//unk 1.5.1.9
130
131
...
...
137
		writeH(buf, 0);
138
		writeH(buf, 0);
138
		writeC(buf, 0);
139
		writeC(buf, 0);
139
		writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
140
		writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
140
		writeC(buf,  0);//item.isEquipped() ? 1 : 0
141
		if(isInventory)
142
			writeC(buf,  0);//item.isEquipped() ? 1 : 0
141
	}
143
	}
142
	
144
143
	/**
145
	/**
144
	 *  Writes manastones : 6C - statenum mask, 6H - value
146
	 *  Writes manastones : 6C - statenum mask, 6H - value
145
	 * @param buf
147
	 * @param buf
...
...
149
	{
151
	{
150
		int count = 0;
152
		int count = 0;
151
		List<ItemStone> itemStones = item.getItemStones();
153
		List<ItemStone> itemStones = item.getItemStones();
152
		
154
153
		if(itemStones != null)
155
		if(itemStones != null)
154
		{
156
		{
155
			for(ItemStone itemStone : itemStones)
157
			for(ItemStone itemStone : itemStones)
156
			{
158
			{
157
				if(count == 6)
159
				if(count == 6)
158
					break;
160
					break;
159
				
161
160
				StatModifier modifier = itemStone.getFirstModifier();
162
				StatModifier modifier = itemStone.getFirstModifier();
161
				if(modifier != null)
163
				if(modifier != null)
162
				{
164
				{
...
...
170
			{
172
			{
171
				if(count == 6)
173
				if(count == 6)
172
					break;
174
					break;
173
				
175
174
				StatModifier modifier = itemStone.getFirstModifier();
176
				StatModifier modifier = itemStone.getFirstModifier();
175
				if(modifier != null)
177
				if(modifier != null)
176
				{
178
				{
...
...
184
		{
186
		{
185
			writeB(buf, new byte[18]);
187
			writeB(buf, new byte[18]);
186
		}
188
		}
187
		
189
188
		//for now max 6 stones - write some junk
190
		//for now max 6 stones - write some junk
189
		
191
190
	}
192
	}
191
	
193
192
	/**
194
	/**
193
	 *  For all armor. Armor is identified by armor_type in xml
195
	 *  For all armor. Armor is identified by armor_type in xml
194
	 * @param buf
196
	 * @param buf
195
	 * @param item
197
	 * @param item
196
	 */
198
	 */
197
	protected void writeArmorInfo(ByteBuffer buf, Item item)
199
	protected void writeArmorInfo(ByteBuffer buf, Item item, boolean isInventory)
198
	{
200
	{
199
		int itemSlotId = item.getEquipmentSlot();
201
		int itemSlotId = item.getEquipmentSlot();
200
		writeH(buf, 0x4F);
202
		writeH(buf, 0x4F);
...
...
207
		writeH(buf, 0x0B); //? some details separator
209
		writeH(buf, 0x0B); //? some details separator
208
		writeC(buf, 0); //enchant (1-10)
210
		writeC(buf, 0); //enchant (1-10)
209
		writeD(buf, item.getItemTemplate().getItemId());
211
		writeD(buf, item.getItemTemplate().getItemId());
210
		
212
211
		writeC(buf, 0);
213
		writeC(buf, 0);
212
		
214
213
		writeItemStones(buf, item);
215
		writeItemStones(buf, item);
214
		
216
215
		writeC(buf, 0);
217
		writeC(buf, 0);
216
		writeD(buf, 0);
218
		writeD(buf, 0);
217
		writeD(buf, 0);	
219
		writeD(buf, 0);	
218
		
220
219
		writeD(buf, 0);//unk 1.5.1.9
221
		writeD(buf, 0);//unk 1.5.1.9
220
		writeC(buf, 0);//unk 1.5.1.9
222
		writeC(buf, 0);//unk 1.5.1.9
221
		
223
222
		writeC(buf, 0x3E);
224
		writeC(buf, 0x3E);
223
		writeC(buf, 0x02);
225
		writeC(buf, 0x02);
224
		writeD(buf, item.getItemCount());
226
		writeD(buf, item.getItemCount());
...
...
228
		writeH(buf, 0);
230
		writeH(buf, 0);
229
		writeC(buf, 0);
231
		writeC(buf, 0);
230
		writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
232
		writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
231
		writeC(buf,  1);//item.isEquipped() ? 1 : 0
233
		if(isInventory)
234
			writeC(buf,  1);//item.isEquipped() ? 1 : 0
232
	}
235
	}
233
}
236
}

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_DELETE_WAREHOUSE_ITEM.java

Show contents

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_EXCHANGE_ADD_ITEM.java Download diff

992993
45
	{
45
	{
46
46
47
		writeC(buf, action); // 0 -self 1-other
47
		writeC(buf, action); // 0 -self 1-other
48
		
48
49
		writeGeneralInfo(buf, item);
49
		writeGeneralInfo(buf, item);
50
		
50
51
		ItemTemplate itemTemplate = item.getItemTemplate();
51
		ItemTemplate itemTemplate = item.getItemTemplate();
52
		
52
53
		if(itemTemplate.getItemId() == ItemId.KINAH.value())
53
		if(itemTemplate.getItemId() == ItemId.KINAH.value())
54
		{
54
		{
55
			writeKinah(buf, item);
55
			writeKinah(buf, item, true);
56
		}
56
		}
57
		else if (itemTemplate.isWeapon())
57
		else if (itemTemplate.isWeapon())
58
		{
58
		{
59
			writeWeaponInfo(buf, item);
59
			writeWeaponInfo(buf, item, true);
60
		}
60
		}
61
		else if (itemTemplate.isArmor())
61
		else if (itemTemplate.isArmor())
62
		{
62
		{
63
			writeArmorInfo(buf,item);
63
			writeArmorInfo(buf,item, true);
64
		}
64
		}
65
		else
65
		else
66
		{				
66
		{				

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_INVENTORY_INFO.java Download diff

992993
40
	public static final int EMPTY = 0;
40
	public static final int EMPTY = 0;
41
	public static final int FULL = 1;
41
	public static final int FULL = 1;
42
	public int CUBE = 0;
42
	public int CUBE = 0;
43
	
43
44
	private List<Item> items;
44
	private List<Item> items;
45
	private int size;
45
	private int size;
46
46
47
	public int packetType = FULL;
47
	public int packetType = FULL;
48
	
48
49
	/**
49
	/**
50
	 * @param items
50
	 * @param items
51
	 */
51
	 */
...
...
57
		this.size = items.size();
57
		this.size = items.size();
58
		this.CUBE = cubesize;
58
		this.CUBE = cubesize;
59
	}
59
	}
60
	
60
61
	/**
61
	/**
62
	 * @param isEmpty
62
	 * @param isEmpty
63
	 */
63
	 */
...
...
78
			writeH(buf, 0);
78
			writeH(buf, 0);
79
			return;
79
			return;
80
		}
80
		}
81
		
81
82
		// something wrong with cube part.
82
		// something wrong with cube part.
83
		writeC(buf, 1); // TRUE/FALSE (1/0) update cube size
83
		writeC(buf, 1); // TRUE/FALSE (1/0) update cube size
84
		writeC(buf, CUBE); // cube size
84
		writeC(buf, CUBE); // cube size
...
...
88
		for(Item item : items)
88
		for(Item item : items)
89
		{
89
		{
90
			writeGeneralInfo(buf, item);
90
			writeGeneralInfo(buf, item);
91
			
91
92
			ItemTemplate itemTemplate = item.getItemTemplate();
92
			ItemTemplate itemTemplate = item.getItemTemplate();
93
			
93
94
			if(itemTemplate.getItemId() == ItemId.KINAH.value())
94
			if(itemTemplate.getItemId() == ItemId.KINAH.value())
95
			{
95
			{
96
				writeKinah(buf, item);
96
				writeKinah(buf, item, true);
97
			}
97
			}
98
			else if (itemTemplate.isWeapon())
98
			else if (itemTemplate.isWeapon())
99
			{
99
			{
100
				writeWeaponInfo(buf, item);
100
				writeWeaponInfo(buf, item, true);
101
			}
101
			}
102
			else if (itemTemplate.isArmor())
102
			else if (itemTemplate.isArmor())
103
			{
103
			{
104
				writeArmorInfo(buf,item);
104
				writeArmorInfo(buf,item, true);
105
			}
105
			}
106
			else
106
			else
107
			{				
107
			{				

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_INVENTORY_UPDATE.java Download diff

992993
34
{
34
{
35
	private List<Item> items;
35
	private List<Item> items;
36
	private int size;
36
	private int size;
37
	
37
38
	public SM_INVENTORY_UPDATE(List<Item> items)
38
	public SM_INVENTORY_UPDATE(List<Item> items)
39
	{
39
	{
40
		this.items = items;
40
		this.items = items;
...
...
44
	/**
44
	/**
45
	 * {@inheritDoc} dc
45
	 * {@inheritDoc} dc
46
	 */
46
	 */
47
	
47
48
	@Override
48
	@Override
49
	protected void writeImpl(AionConnection con, ByteBuffer buf)
49
	protected void writeImpl(AionConnection con, ByteBuffer buf)
50
	{	
50
	{	
51
		writeH(buf, 25); // padding?
51
		writeH(buf, 25); // padding?
52
		writeH(buf, size); // number of entries
52
		writeH(buf, size); // number of entries
53
		for(Item item : items)
53
		for(Item item : items)
54
 		{
54
		{
55
			writeGeneralInfo(buf, item);
55
			writeGeneralInfo(buf, item);
56
			
56
57
			ItemTemplate itemTemplate = item.getItemTemplate();
57
			ItemTemplate itemTemplate = item.getItemTemplate();
58
			
58
59
			if(itemTemplate.getItemId() == ItemId.KINAH.value())
59
			if(itemTemplate.getItemId() == ItemId.KINAH.value())
60
			{
60
			{
61
				writeKinah(buf, item);
61
				writeKinah(buf, item, true);
62
			}
62
			}
63
			else if (itemTemplate.isWeapon())
63
			else if (itemTemplate.isWeapon())
64
			{
64
			{
65
				writeWeaponInfo(buf, item);
65
				writeWeaponInfo(buf, item, true);
66
			}
66
			}
67
			else if (itemTemplate.isArmor())
67
			else if (itemTemplate.isArmor())
68
			{
68
			{
69
				writeArmorInfo(buf,item);
69
				writeArmorInfo(buf,item, true);
70
			}
70
			}
71
			else
71
			else
72
			{
72
			{
73
				writeGeneralItemInfo(buf, item, item.isQuest());
73
				writeGeneralItemInfo(buf, item, item.isQuest());
74
				writeC(buf, 0);
74
				writeC(buf, 0);
75
			}
75
			}
76
 		}
76
		}
77
	}	
77
	}	
78
}
78
}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_SYSTEM_MESSAGE.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_UPDATE_ITEM.java Download diff

File was changed - ok, show the diff

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_UPDATE_WAREHOUSE_ITEM.java

Show contents

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_WAREHOUSE_INFO.java

Show contents

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_WAREHOUSE_UPDATE.java

Show contents

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/aion/ServerPacketsOpcodes.java Download diff

992993
41
	static
41
	static
42
	{
42
	{
43
		Set<Integer> idSet = new HashSet<Integer>();
43
		Set<Integer> idSet = new HashSet<Integer>();
44
		
44
45
		addPacketOpcode(SM_VERSION_CHECK.class, 0x00, idSet);
45
		addPacketOpcode(SM_VERSION_CHECK.class, 0x00, idSet);
46
		addPacketOpcode(SM_STATS_INFO.class, 0x01, idSet);
46
		addPacketOpcode(SM_STATS_INFO.class, 0x01, idSet);
47
		addPacketOpcode(SM_SET_BIND_POINT.class, 0x03, idSet);
47
		addPacketOpcode(SM_SET_BIND_POINT.class, 0x03, idSet);
48
        addPacketOpcode(SM_ABYSS_RANK.class, 0x05, idSet);
48
		addPacketOpcode(SM_ABYSS_RANK.class, 0x05, idSet);
49
		addPacketOpcode(SM_MACRO_LIST.class, 0x07, idSet);
49
		addPacketOpcode(SM_MACRO_LIST.class, 0x07, idSet);
50
		addPacketOpcode(SM_MACRO_RESULT.class, 0x08, idSet);
50
		addPacketOpcode(SM_MACRO_RESULT.class, 0x08, idSet);
51
		addPacketOpcode(SM_NICKNAME_CHECK_RESPONSE.class, 0x09, idSet);
51
		addPacketOpcode(SM_NICKNAME_CHECK_RESPONSE.class, 0x09, idSet);
...
...
121
		addPacketOpcode(SM_DUEL.class, 0xB9, idSet);
121
		addPacketOpcode(SM_DUEL.class, 0xB9, idSet);
122
		addPacketOpcode(SM_TELEPORT_MAP.class, 0xBC, idSet);
122
		addPacketOpcode(SM_TELEPORT_MAP.class, 0xBC, idSet);
123
		addPacketOpcode(SM_USE_OBJECT.class, 0xBD, idSet);
123
		addPacketOpcode(SM_USE_OBJECT.class, 0xBD, idSet);
124
		addPacketOpcode(SM_DELETE_WAREHOUSE_ITEM.class, 0xC2, idSet);
125
		addPacketOpcode(SM_UPDATE_WAREHOUSE_ITEM.class, 0xC3, idSet);
126
		addPacketOpcode(SM_WAREHOUSE_INFO.class, 0xC8, idSet);
127
		addPacketOpcode(SM_WAREHOUSE_UPDATE.class, 0xC9, idSet);
124
		addPacketOpcode(SM_TITLE_LIST.class, 0xD0, idSet);
128
		addPacketOpcode(SM_TITLE_LIST.class, 0xD0, idSet);
125
		addPacketOpcode(SM_TITLE_SET.class, 0xD1, idSet);
129
		addPacketOpcode(SM_TITLE_SET.class, 0xD1, idSet);
126
		addPacketOpcode(SM_CHANNEL_INFO.class, 0xDD, idSet);
130
		addPacketOpcode(SM_CHANNEL_INFO.class, 0xDD, idSet);
...
...
144
		addPacketOpcode(SM_STATUPDATE_MP.class, 0xFC, idSet);
148
		addPacketOpcode(SM_STATUPDATE_MP.class, 0xFC, idSet);
145
		addPacketOpcode(SM_ATTACK_STATUS.class, 0xFD, idSet);
149
		addPacketOpcode(SM_ATTACK_STATUS.class, 0xFD, idSet);
146
		addPacketOpcode(SM_RECONNECT_KEY.class, 0xFF, idSet);
150
		addPacketOpcode(SM_RECONNECT_KEY.class, 0xFF, idSet);
147
		
151
148
		addPacketOpcode(SM_CUSTOM_PACKET.class, 99999, idSet); // fake packet
152
		addPacketOpcode(SM_CUSTOM_PACKET.class, 99999, idSet); // fake packet
149
153
150
		addPacketOpcode(SM_BLOCK_RESPONSE.class, 0xDF, idSet);
154
		addPacketOpcode(SM_BLOCK_RESPONSE.class, 0xDF, idSet);
151
		
155
152
		addPacketOpcode(SM_RIFT_STATUS.class, 0xA4, idSet);
156
		addPacketOpcode(SM_RIFT_STATUS.class, 0xA4, idSet);
153
		
157
154
		//Unrecognized Opcodes from 1.5.4:
158
		//Unrecognized Opcodes from 1.5.4:
155
		//addPacketOpcode(SM_BUY_LIST.class, 0x7E, idSet);
159
		//addPacketOpcode(SM_BUY_LIST.class, 0x7E, idSet);
156
		//addPacketOpcode(SM_GUILD_DETAILS.class, 0x24, idSet);
160
		//addPacketOpcode(SM_GUILD_DETAILS.class, 0x24, idSet);
...
...
179
		if(idSet.contains(opcode))
183
		if(idSet.contains(opcode))
180
			throw new IllegalArgumentException(String.format("There already exists another packet with id 0x%02X", opcode));
184
			throw new IllegalArgumentException(String.format("There already exists another packet with id 0x%02X", opcode));
181
185
182
		
186
183
		idSet.add(opcode);
187
		idSet.add(opcode);
184
		opcodes.put(packetClass, opcode);
188
		opcodes.put(packetClass, opcode);
185
	}
189
	}

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/network/factories/AionPacketHandlerFactory.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/questEngine/Quest.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/AccountService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/ExchangeService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/ItemService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/PlayerService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/TeleportService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/TradeService.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/skillengine/action/ItemUseAction.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/utils/stats/StatFunctions.java Download diff

File was changed - ok, show the diff

Updated trunk/AE-go_GameServer/test/com/aionemu/gameserver/model/ItemStorageTest.java Download diff

File was changed - ok, show the diff