Changeset 1503

User picture

Author: kosyachok

(2010/03/12 19:47) Almost 2 years ago

- MAIL. no express mail for now. Will be done a bit later.

Use mail-1503.sql to put new table to DB.

Affected files

Added trunk/AE-go_GameServer/data/scripts/system/database/mysql5/MySQL5MailDAO.java

Show contents

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

15021503
90
	@Override
90
	@Override
91
	public void storePlayer(final Player player)
91
	public void storePlayer(final Player player)
92
	{
92
	{
93
		DB.insertUpdate("UPDATE players SET name=?, exp=?, recoverexp=?, x=?, y=?, z=?, heading=?, world_id=?, player_class=?, last_online=?, cube_size=?,
warehouse_size=?, note=?, bind_point=?, title_id=? WHERE id=?", new IUStH(){
93
		DB.insertUpdate("UPDATE players SET name=?, exp=?, recoverexp=?, x=?, y=?, z=?, heading=?, world_id=?, player_class=?, last_online=?, cube_size=?, warehouse_size=?, note=?, bind_point=?, title_id=?, mailboxLetters=? WHERE id=?", new IUStH(){
94
			@Override
94
			@Override
95
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
95
			public void handleInsertUpdate(PreparedStatement stmt) throws SQLException
96
			{
96
			{
...
...
111
				stmt.setString(13,player.getCommonData().getNote());
111
				stmt.setString(13,player.getCommonData().getNote());
112
				stmt.setInt(14, player.getCommonData().getBindPoint());
112
				stmt.setInt(14, player.getCommonData().getBindPoint());
113
				stmt.setInt(15, player.getCommonData().getTitleId());
113
				stmt.setInt(15, player.getCommonData().getTitleId());
114
				stmt.setInt(16, player.getObjectId());
114
				stmt.setInt(16, player.getMailbox().getLettersCount());
115
				stmt.setInt(17, player.getObjectId());
115
				stmt.execute();
116
				stmt.execute();
116
			}
117
			}
117
		});
118
		});
...
...
157
158
158
	private Object	pcdLock	= new Object();
159
	private Object	pcdLock	= new Object();
159
160
161
	
162
	@Override
163
	public PlayerCommonData loadPlayerCommonDataByName(final String name, final World world)
164
	{
165
		final List<Integer> playerObjId = new ArrayList<Integer>();
166
		
167
		DB.select("SELECT id FROM players WHERE name = ?", new ParamReadStH(){
168
			
169
		@Override
170
		public void setParams(PreparedStatement stmt) throws SQLException
171
		{
172
			stmt.setString(1, name);
173
		}
174
		
175
		@Override
176
		public void handleRead(ResultSet resultSet) throws SQLException
177
		{
178
			resultSet.next();
179
			
180
			playerObjId.add(resultSet.getInt("id"));
181
		}
182
		});
183
		
184
		if(playerObjId.size() == 0)
185
			return null;
186
		else
187
			return loadPlayerCommonData(playerObjId.get(0), world, null);
188
	}
189
	
160
	/**
190
	/**
161
	 * {@inheritDoc}
191
	 * {@inheritDoc}
162
	 */
192
	 */
...
...
199
				cd.setBindPoint(resultSet.getInt("bind_point"));
229
				cd.setBindPoint(resultSet.getInt("bind_point"));
200
				cd.setTitleId(resultSet.getInt("title_id"));
230
				cd.setTitleId(resultSet.getInt("title_id"));
201
				cd.setWarehouseSize(resultSet.getInt("warehouse_size"));
231
				cd.setWarehouseSize(resultSet.getInt("warehouse_size"));
232
				cd.setOnline(resultSet.getBoolean("online"));
233
				cd.setMailboxLetters(resultSet.getInt("mailboxLetters"));
202
234
203
				float x = resultSet.getFloat("x");
235
				float x = resultSet.getFloat("x");
204
				float y = resultSet.getFloat("y");
236
				float y = resultSet.getFloat("y");
...
...
206
				byte heading = resultSet.getByte("heading");
238
				byte heading = resultSet.getByte("heading");
207
				int worldId = resultSet.getInt("world_id");
239
				int worldId = resultSet.getInt("world_id");
208
240
209
				if(z < -1000)
241
				if(z < -1000 && playerInitialData != null)
210
				{
242
				{
211
					//unstuck unlucky characters :)
243
					//unstuck unlucky characters :)
212
					LocationData ld = playerInitialData.getSpawnLocation(cd.getRace());
244
					LocationData ld = playerInitialData.getSpawnLocation(cd.getRace());

Updated trunk/AE-go_GameServer/sql/au_server_gs.sql Download diff

15021503
32
  `last_online` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
32
  `last_online` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
33
  `cube_size` tinyint(1) NOT NULL default '0',
33
  `cube_size` tinyint(1) NOT NULL default '0',
34
  `warehouse_size` tinyint(1) NOT NULL default '0',
34
  `warehouse_size` tinyint(1) NOT NULL default '0',
35
  `mailboxLetters` tinyint(4) NOT NULL default '0',
35
  `bind_point` INT NOT NULL default '0',
36
  `bind_point` INT NOT NULL default '0',
36
  `title_id` int(3) NOT NULL default '-1',
37
  `title_id` int(3) NOT NULL default '-1',
37
  `online` tinyint(1) NOT NULL default '0',
38
  `online` tinyint(1) NOT NULL default '0',
...
...
313
PRIMARY KEY (`player_id`),
314
PRIMARY KEY (`player_id`),
314
FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
315
FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
315
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
316
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
317
318
319
-- ----------------------------
320
-- mail_table
321
-- ----------------------------
322
CREATE TABLE IF NOT EXISTS  `mail` (
323
`mailUniqueId` int(11) NOT NULL, `mailRecipientId` int(11) NOT NULL,
324
`senderName` varchar(16) character set utf8 NOT NULL,`mailTitle` varchar(20) character set utf8 NOT NULL,
325
`mailMessage` varchar(500) character set utf8 NOT NULL, `unread` tinyint(4) NOT NULL default '1',
326
`attachedItemId` int(11) NOT NULL, `attachedKinahCount` int(11) NOT NULL,
327
`express` tinyint(4) NOT NULL default '0', 
328
`recievedTime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
329
PRIMARY KEY  (`mailUniqueId`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Added trunk/AE-go_GameServer/sql/Update/mail-1503.sql

Show contents

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/dao/MailDAO.java

Show contents

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

15021503
112
	public abstract void setPlayersOffline(final boolean online);
112
	public abstract void setPlayersOffline(final boolean online);
113
	
113
	
114
	/**
114
	/**
115
	 * get commondata by name for MailService
116
	 * @param name
117
	 * @return
118
	 */
119
	public abstract PlayerCommonData loadPlayerCommonDataByName(String name, final World world);
120
	/**
115
	 * Identifier name for all PlayerDAO classes
121
	 * Identifier name for all PlayerDAO classes
116
	 * 
122
	 * 
117
	 * @return PlayerDAO.class.getName()
123
	 * @return PlayerDAO.class.getName()

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

Show contents

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

Show contents

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

15021503
65
	private Storage				regularWarehouse;
65
	private Storage				regularWarehouse;
66
	private Storage				accountWarehouse;
66
	private Storage				accountWarehouse;
67
	private Equipment			equipment;
67
	private Equipment			equipment;
68
	private Mailbox             mailbox;
68
	private PrivateStore		store;
69
	private PrivateStore		store;
69
	private PlayerStatsTemplate	playerStatsTemplate;
70
	private PlayerStatsTemplate	playerStatsTemplate;
70
	private TitleList			titleList;
71
	private TitleList			titleList;
...
...
827
	{
828
	{
828
		this.invul = invul;
829
		this.invul = invul;
829
	}
830
	}
831
	
832
	public void setMailbox(Mailbox mailbox)
833
	{
834
		this.mailbox = mailbox;
835
	}
836
	
837
	public Mailbox getMailbox()
838
	{
839
		return mailbox;
840
	}
830
841
831
}
842
}

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

15021503
65
	private int			    bindPoint;
65
	private int			    bindPoint;
66
	private int             titleId = -1;
66
	private int             titleId = -1;
67
	private int				dp = 0;
67
	private int				dp = 0;
68
	private int 			mailboxLetters;
68
69
69
	public PlayerCommonData(int objId)
70
	public PlayerCommonData(int objId)
70
	{
71
	{
...
...
423
	{
424
	{
424
		return warehouseSize;
425
		return warehouseSize;
425
	}
426
	}
427
	
428
	public void setMailboxLetters(int count)
429
	{
430
		this.mailboxLetters = count;
431
	}
432
	
433
	public int getMailboxLetters()
434
	{
435
		return mailboxLetters;
436
	}
426
}
437
}

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

15021503
14
	CUBE(0),
14
	CUBE(0),
15
	REGULAR_WAREHOUSE(1),
15
	REGULAR_WAREHOUSE(1),
16
	ACCOUNT_WAREHOUSE(2),
16
	ACCOUNT_WAREHOUSE(2),
17
	LEGION_WAREHOUSE(3);
17
	LEGION_WAREHOUSE(3),
18
	MAILBOX(127);
18
19
19
	private int id;
20
	private int id;
20
21

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/model/templates/mail/MailMessage.java

Show contents

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

Show contents

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

15021503
36
import com.aionemu.gameserver.network.aion.serverpackets.SM_INFLUENCE_RATIO;
36
import com.aionemu.gameserver.network.aion.serverpackets.SM_INFLUENCE_RATIO;
37
import com.aionemu.gameserver.network.aion.serverpackets.SM_INVENTORY_INFO;
37
import com.aionemu.gameserver.network.aion.serverpackets.SM_INVENTORY_INFO;
38
import com.aionemu.gameserver.network.aion.serverpackets.SM_MACRO_LIST;
38
import com.aionemu.gameserver.network.aion.serverpackets.SM_MACRO_LIST;
39
import com.aionemu.gameserver.network.aion.serverpackets.SM_MAIL_SERVICE;
39
import com.aionemu.gameserver.network.aion.serverpackets.SM_MESSAGE;
40
import com.aionemu.gameserver.network.aion.serverpackets.SM_MESSAGE;
40
import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_ID;
41
import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_ID;
41
import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_SPAWN;
42
import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_SPAWN;
...
...
244
			player.setRates(Rates.getRatesFor(client.getAccount().getMembership()));
245
			player.setRates(Rates.getRatesFor(client.getAccount().getMembership()));
245
246
246
			ClassChangeService.showClassChangeDialog(player);
247
			ClassChangeService.showClassChangeDialog(player);
247
248
			
248
			// TODO need some task
249
			// TODO need some task
249
			sendPacket(new SM_RIFT_ANNOUNCE(player));
250
			sendPacket(new SM_RIFT_ANNOUNCE(player));
251
	
252
			sendPacket(new SM_MAIL_SERVICE(player, player.getMailbox().getLettersOnly()));
253
			if(player.getMailbox().haveUnread())
254
				sendPacket(new SM_MAIL_SERVICE(true, true));
250
		}
255
		}
251
		else
256
		else
252
		{
257
		{

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

Show contents

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

Show contents

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

Show contents

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

15021503
47
		writeD(buf, itemTemplate.getNameId());
47
		writeD(buf, itemTemplate.getNameId());
48
		writeH(buf, 0);
48
		writeH(buf, 0);
49
	}
49
	}
50
	
51
	protected void writeMailGeneralInfo(ByteBuffer buf, Item item)
52
	{
53
		writeD(buf, item.getObjectId());
54
		ItemTemplate itemTemplate = item.getItemTemplate();
55
		writeD(buf, itemTemplate.getTemplateId());
56
		writeD(buf, 1);
57
		writeD(buf, 0);
58
		writeH(buf, 0x24);
59
		writeD(buf, itemTemplate.getNameId());
60
		writeH(buf, 0);
61
	}
50
62
51
	/**
63
	/**
52
	 *  All misc items
64
	 *  All misc items
53
	 * @param buf
65
	 * @param buf
54
	 * @param item
66
	 * @param item
55
	 */
67
	 */
56
	protected void writeGeneralItemInfo(ByteBuffer buf, Item item, boolean isQuest, boolean privateStore)
68
	protected void writeGeneralItemInfo(ByteBuffer buf, Item item, boolean isQuest, boolean privateStore, boolean mail)
57
	{
69
	{
58
		writeH(buf, 0x16); //length of details
70
		writeH(buf, 0x16); //length of details
59
		writeC(buf, 0);
71
		writeC(buf, 0);
...
...
75
		if(!privateStore)
87
		if(!privateStore)
76
			writeH(buf, 0);
88
			writeH(buf, 0);
77
		writeC(buf, 0);
89
		writeC(buf, 0);
78
		writeH(buf, item.getEquipmentSlot()); // not equipable items		
90
		if(!mail)
91
			writeH(buf, item.getEquipmentSlot()); // not equipable items		
79
	}
92
	}
80
93
81
	/**
94
	/**
...
...
109
	 */
122
	 */
110
	protected void writeWeaponInfo(ByteBuffer buf, Item item, boolean isInventory)
123
	protected void writeWeaponInfo(ByteBuffer buf, Item item, boolean isInventory)
111
	{
124
	{
112
		this.writeWeaponInfo(buf, item, isInventory, false, false);
125
		this.writeWeaponInfo(buf, item, isInventory, false, false, false);
113
	}
126
	}
114
	
127
	
115
	/**
128
	/**
...
...
118
	 * @param buf
131
	 * @param buf
119
	 * @param item
132
	 * @param item
120
	 */
133
	 */
121
	protected void writeWeaponInfo(ByteBuffer buf, Item item, boolean isInventory, boolean isWeaponSwitch, boolean privateStore)
134
	protected void writeWeaponInfo(ByteBuffer buf, Item item, boolean isInventory, boolean isWeaponSwitch, boolean privateStore, boolean mail)
122
	{
135
	{
123
		int itemSlotId = item.getEquipmentSlot();
136
		int itemSlotId = item.getEquipmentSlot();
124
		
137
		
...
...
160
			if(!privateStore)
173
			if(!privateStore)
161
				writeH(buf, 0);
174
				writeH(buf, 0);
162
			writeC(buf, 0);
175
			writeC(buf, 0);
163
			writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
176
			if(!mail)
177
				writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
164
			if(isInventory)
178
			if(isInventory)
165
				writeC(buf,  0);//item.isEquipped() ? 1 : 0
179
				writeC(buf,  0);//item.isEquipped() ? 1 : 0
166
		}
180
		}
...
...
220
	 * @param buf
234
	 * @param buf
221
	 * @param item
235
	 * @param item
222
	 */
236
	 */
223
	protected void writeArmorInfo(ByteBuffer buf, Item item, boolean isInventory, boolean privateStore)
237
	protected void writeArmorInfo(ByteBuffer buf, Item item, boolean isInventory, boolean privateStore, boolean mail)
224
	{
238
	{
225
		int itemSlotId = item.getEquipmentSlot();
239
		int itemSlotId = item.getEquipmentSlot();
226
		writeH(buf, 0x4F);
240
		writeH(buf, 0x4F);
...
...
254
		if(!privateStore)
268
		if(!privateStore)
255
			writeH(buf, 0);
269
			writeH(buf, 0);
256
		writeC(buf, 0);
270
		writeC(buf, 0);
257
		writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
271
		if(!mail)
272
			writeH(buf, item.isEquipped() ? 255 : item.getEquipmentSlot()); // FF FF equipment
258
		if(isInventory)
273
		if(isInventory)
259
			writeC(buf,  1);//item.isEquipped() ? 1 : 0
274
			writeC(buf,  1);//item.isEquipped() ? 1 : 0
260
	}
275
	}

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

Show contents

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

15021503
60
		}
60
		}
61
		else if (itemTemplate.isArmor())
61
		else if (itemTemplate.isArmor())
62
		{
62
		{
63
			writeArmorInfo(buf,item, true, false);
63
			writeArmorInfo(buf,item, true, false, false);
64
		}
64
		}
65
		else
65
		else
66
		{				
66
		{				
67
			writeGeneralItemInfo(buf, item, false, false);
67
			writeGeneralItemInfo(buf, item, false, false, false);
68
			writeC(buf, 0);
68
			writeC(buf, 0);
69
		}
69
		}
70
	}
70
	}

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

15021503
102
			}
102
			}
103
			else if (itemTemplate.isArmor())
103
			else if (itemTemplate.isArmor())
104
			{
104
			{
105
				writeArmorInfo(buf,item, true, false);
105
				writeArmorInfo(buf,item, true, false, false);
106
			}
106
			}
107
			else
107
			else
108
			{
108
			{
109
				writeGeneralItemInfo(buf, item, false, false);
109
				writeGeneralItemInfo(buf, item, false, false, false);
110
				writeC(buf, 0);
110
				writeC(buf, 0);
111
			}
111
			}
112
		}
112
		}

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

15021503
66
			}
66
			}
67
			else if (itemTemplate.isArmor())
67
			else if (itemTemplate.isArmor())
68
			{
68
			{
69
				writeArmorInfo(buf,item, true, false);
69
				writeArmorInfo(buf,item, true, false, false);
70
			}
70
			}
71
			else
71
			else
72
			{
72
			{
73
				writeGeneralItemInfo(buf, item, item.isQuest(), false);
73
				writeGeneralItemInfo(buf, item, item.isQuest(), false, false);
74
				writeC(buf, 0);
74
				writeC(buf, 0);
75
			}
75
			}
76
		}
76
		}

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

Show contents

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

15021503
64
64
65
				if (itemTemplate.isWeapon())
65
				if (itemTemplate.isWeapon())
66
				{
66
				{
67
					writeWeaponInfo(buf, item, false, false, true);
67
					writeWeaponInfo(buf, item, false, false, true, false);
68
				}
68
				}
69
				else if (itemTemplate.isArmor())
69
				else if (itemTemplate.isArmor())
70
				{
70
				{
71
					writeArmorInfo(buf, item, false, true);
71
					writeArmorInfo(buf, item, false, true, false);
72
				}
72
				}
73
				else
73
				else
74
				{
74
				{
75
					writeGeneralItemInfo(buf, item, false, true);
75
					writeGeneralItemInfo(buf, item, false, true, false);
76
				}
76
				}
77
			}
77
			}
78
		}
78
		}

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

15021503
69
		}
69
		}
70
		else if (itemTemplate.isWeapon())
70
		else if (itemTemplate.isWeapon())
71
		{
71
		{
72
			writeWeaponInfo(buf, item, true, isWeaponSwitch, false);
72
			writeWeaponInfo(buf, item, true, isWeaponSwitch, false, false);
73
		}
73
		}
74
		else if (itemTemplate.isArmor())
74
		else if (itemTemplate.isArmor())
75
		{
75
		{
76
			writeArmorInfo(buf,item, true, false);
76
			writeArmorInfo(buf,item, true, false, false);
77
		}
77
		}
78
		else
78
		else
79
		{
79
		{
80
			writeGeneralItemInfo(buf, item, item.isQuest(), false);
80
			writeGeneralItemInfo(buf, item, item.isQuest(), false, false);
81
		}
81
		}
82
	}
82
	}
83
83

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

15021503
44
		}
44
		}
45
		else if (itemTemplate.isArmor())
45
		else if (itemTemplate.isArmor())
46
		{
46
		{
47
			writeArmorInfo(buf,item, false, false);
47
			writeArmorInfo(buf,item, false, false, false);
48
		}
48
		}
49
		else
49
		else
50
		{
50
		{
51
			writeGeneralItemInfo(buf, item, item.isQuest(), false);
51
			writeGeneralItemInfo(buf, item, item.isQuest(), false, false);
52
		}
52
		}
53
	}
53
	}
54
54

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

15021503
74
				writeWeaponInfo(buf, item, false);
74
				writeWeaponInfo(buf, item, false);
75
75
76
			else if (itemTemplate.isArmor())
76
			else if (itemTemplate.isArmor())
77
				writeArmorInfo(buf, item, false, false);
77
				writeArmorInfo(buf, item, false, false, false);
78
78
79
			else
79
			else
80
				writeGeneralItemInfo(buf, item, false, false);
80
				writeGeneralItemInfo(buf, item, false, false, false);
81
		}
81
		}
82
	}
82
	}
83
83

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

15021503
49
		}
49
		}
50
		else if (itemTemplate.isArmor())
50
		else if (itemTemplate.isArmor())
51
		{
51
		{
52
			writeArmorInfo(buf,item, false, false);
52
			writeArmorInfo(buf,item, false, false, false);
53
		}
53
		}
54
		else
54
		else
55
		{
55
		{
56
			writeGeneralItemInfo(buf, item, item.isQuest(), false);
56
			writeGeneralItemInfo(buf, item, item.isQuest(), false, false);
57
		}
57
		}
58
58
59
	}
59
	}

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

15021503
173
		addPacketOpcode(SM_STATUPDATE_MP.class, 0xFC, idSet);
173
		addPacketOpcode(SM_STATUPDATE_MP.class, 0xFC, idSet);
174
		addPacketOpcode(SM_ATTACK_STATUS.class, 0xFD, idSet);
174
		addPacketOpcode(SM_ATTACK_STATUS.class, 0xFD, idSet);
175
		addPacketOpcode(SM_RECONNECT_KEY.class, 0xFF, idSet);
175
		addPacketOpcode(SM_RECONNECT_KEY.class, 0xFF, idSet);
176
176
		addPacketOpcode(SM_MAIL_SERVICE.class, 0xA1, idSet);
177
		addPacketOpcode(SM_CUSTOM_PACKET.class, 99999, idSet); // fake packet
177
		addPacketOpcode(SM_CUSTOM_PACKET.class, 99999, idSet); // fake packet
178
178
179
		// Unrecognized Opcodes from 1.5.4:
179
		// Unrecognized Opcodes from 1.5.4:

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

15021503
54
import com.aionemu.gameserver.network.aion.clientpackets.CM_FRIEND_DEL;
54
import com.aionemu.gameserver.network.aion.clientpackets.CM_FRIEND_DEL;
55
import com.aionemu.gameserver.network.aion.clientpackets.CM_FRIEND_STATUS;
55
import com.aionemu.gameserver.network.aion.clientpackets.CM_FRIEND_STATUS;
56
import com.aionemu.gameserver.network.aion.clientpackets.CM_GATHER;
56
import com.aionemu.gameserver.network.aion.clientpackets.CM_GATHER;
57
import com.aionemu.gameserver.network.aion.clientpackets.CM_GET_MAIL_ATTACHMENT;
57
import com.aionemu.gameserver.network.aion.clientpackets.CM_GODSTONE_SOCKET;
58
import com.aionemu.gameserver.network.aion.clientpackets.CM_GODSTONE_SOCKET;
58
import com.aionemu.gameserver.network.aion.clientpackets.CM_GROUP_DISTRIBUTION;
59
import com.aionemu.gameserver.network.aion.clientpackets.CM_GROUP_DISTRIBUTION;
59
import com.aionemu.gameserver.network.aion.clientpackets.CM_GROUP_RESPONSE;
60
import com.aionemu.gameserver.network.aion.clientpackets.CM_GROUP_RESPONSE;
...
...
109
import com.aionemu.gameserver.network.aion.clientpackets.CM_VERIFY_LOCATION;
110
import com.aionemu.gameserver.network.aion.clientpackets.CM_VERIFY_LOCATION;
110
import com.aionemu.gameserver.network.aion.clientpackets.CM_VERSION_CHECK;
111
import com.aionemu.gameserver.network.aion.clientpackets.CM_VERSION_CHECK;
111
import com.aionemu.gameserver.network.aion.clientpackets.CM_VIEW_PLAYER_DETAILS;
112
import com.aionemu.gameserver.network.aion.clientpackets.CM_VIEW_PLAYER_DETAILS;
113
import com.aionemu.gameserver.network.aion.clientpackets.CM_SEND_MAIL;
114
import com.aionemu.gameserver.network.aion.clientpackets.CM_READ_MAIL;
115
import com.aionemu.gameserver.network.aion.clientpackets.CM_DELETE_MAIL;
112
import com.google.inject.Injector;
116
import com.google.inject.Injector;
113
117
114
/**
118
/**
...
...
222
		addPacket(new CM_PRIVATE_STORE(0x6D), State.IN_GAME);
226
		addPacket(new CM_PRIVATE_STORE(0x6D), State.IN_GAME);
223
		addPacket(new CM_PRIVATE_STORE_NAME(0x6E), State.IN_GAME);
227
		addPacket(new CM_PRIVATE_STORE_NAME(0x6E), State.IN_GAME);
224
		addPacket(new CM_SKILL_DEACTIVATE(0x88), State.IN_GAME);
228
		addPacket(new CM_SKILL_DEACTIVATE(0x88), State.IN_GAME);
229
		addPacket(new CM_SEND_MAIL(0x6A), State.IN_GAME);
230
		addPacket(new CM_READ_MAIL(0x7C), State.IN_GAME);
231
		addPacket(new CM_GET_MAIL_ATTACHMENT(0x7E), State.IN_GAME);
232
		addPacket(new CM_DELETE_MAIL(0x7F),State.IN_GAME);
225
		addPacket(new CM_MANASTONE_REMOVE(0x4F), State.IN_GAME);
233
		addPacket(new CM_MANASTONE_REMOVE(0x4F), State.IN_GAME);
226
	}
234
	}
227
235

Added trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/MailService.java

Show contents

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

15021503
29
import com.aionemu.gameserver.dao.FriendListDAO;
29
import com.aionemu.gameserver.dao.FriendListDAO;
30
import com.aionemu.gameserver.dao.InventoryDAO;
30
import com.aionemu.gameserver.dao.InventoryDAO;
31
import com.aionemu.gameserver.dao.ItemStoneListDAO;
31
import com.aionemu.gameserver.dao.ItemStoneListDAO;
32
import com.aionemu.gameserver.dao.MailDAO;
32
import com.aionemu.gameserver.dao.PlayerAppearanceDAO;
33
import com.aionemu.gameserver.dao.PlayerAppearanceDAO;
33
import com.aionemu.gameserver.dao.PlayerDAO;
34
import com.aionemu.gameserver.dao.PlayerDAO;
34
import com.aionemu.gameserver.dao.PlayerMacrossesDAO;
35
import com.aionemu.gameserver.dao.PlayerMacrossesDAO;
...
...
48
import com.aionemu.gameserver.model.gameobjects.PersistentState;
49
import com.aionemu.gameserver.model.gameobjects.PersistentState;
49
import com.aionemu.gameserver.model.gameobjects.player.Equipment;
50
import com.aionemu.gameserver.model.gameobjects.player.Equipment;
50
import com.aionemu.gameserver.model.gameobjects.player.MacroList;
51
import com.aionemu.gameserver.model.gameobjects.player.MacroList;
52
import com.aionemu.gameserver.model.gameobjects.player.Mailbox;
51
import com.aionemu.gameserver.model.gameobjects.player.Player;
53
import com.aionemu.gameserver.model.gameobjects.player.Player;
52
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
54
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
53
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
55
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
...
...
172
		DAOManager.getDAO(PlayerPunishmentsDAO.class).storePlayerPunishments(player);
174
		DAOManager.getDAO(PlayerPunishmentsDAO.class).storePlayerPunishments(player);
173
		DAOManager.getDAO(InventoryDAO.class).store(player);
175
		DAOManager.getDAO(InventoryDAO.class).store(player);
174
		DAOManager.getDAO(ItemStoneListDAO.class).save(player);
176
		DAOManager.getDAO(ItemStoneListDAO.class).save(player);
177
		DAOManager.getDAO(MailDAO.class).storeMailbox(player);
175
	}
178
	}
176
179
177
	/**
180
	/**
...
...
232
		player.getEquipment().onLoadApplyEquipmentStats();
235
		player.getEquipment().onLoadApplyEquipmentStats();
233
236
234
		itemService.loadItemStones(player);
237
		itemService.loadItemStones(player);
238
		player.setMailbox(DAOManager.getDAO(MailDAO.class).loadPlayerMailbox(player));
235
239
236
		// if kinah was deleted by some reason it should be restored with 0 count
240
		// if kinah was deleted by some reason it should be restored with 0 count
237
		if(player.getStorage(StorageType.CUBE.getId()).getKinahItem() == null)
241
		if(player.getStorage(StorageType.CUBE.getId()).getKinahItem() == null)
...
...
290
		Storage regularWarehouse = new Storage(newPlayer, StorageType.REGULAR_WAREHOUSE);
294
		Storage regularWarehouse = new Storage(newPlayer, StorageType.REGULAR_WAREHOUSE);
291
		Storage accountWarehouse = new Storage(newPlayer, StorageType.ACCOUNT_WAREHOUSE);
295
		Storage accountWarehouse = new Storage(newPlayer, StorageType.ACCOUNT_WAREHOUSE);
292
		Equipment equipment = new Equipment(newPlayer);
296
		Equipment equipment = new Equipment(newPlayer);
297
		Mailbox mailbox = new Mailbox(newPlayer);
293
		newPlayer.setStorage(playerInventory, StorageType.CUBE);
298
		newPlayer.setStorage(playerInventory, StorageType.CUBE);
294
		newPlayer.setStorage(regularWarehouse, StorageType.REGULAR_WAREHOUSE);
299
		newPlayer.setStorage(regularWarehouse, StorageType.REGULAR_WAREHOUSE);
295
		newPlayer.setStorage(accountWarehouse, StorageType.ACCOUNT_WAREHOUSE);
300
		newPlayer.setStorage(accountWarehouse, StorageType.ACCOUNT_WAREHOUSE);
296
		newPlayer.setEquipment(equipment);
301
		newPlayer.setEquipment(equipment);
302
		newPlayer.setMailbox(mailbox);
297
303
298
		for(ItemType itemType : items)
304
		for(ItemType itemType : items)
299
		{
305
		{

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/utils/guice/DataInjectionModule.java Download diff

15021503
50
import com.aionemu.gameserver.services.GroupService;
50
import com.aionemu.gameserver.services.GroupService;
51
import com.aionemu.gameserver.services.ItemService;
51
import com.aionemu.gameserver.services.ItemService;
52
import com.aionemu.gameserver.services.LegionService;
52
import com.aionemu.gameserver.services.LegionService;
53
import com.aionemu.gameserver.services.MailService;
53
import com.aionemu.gameserver.services.PlayerService;
54
import com.aionemu.gameserver.services.PlayerService;
54
import com.aionemu.gameserver.services.PeriodicSaveService;
55
import com.aionemu.gameserver.services.PeriodicSaveService;
55
import com.aionemu.gameserver.services.PrivateStoreService;
56
import com.aionemu.gameserver.services.PrivateStoreService;
...
...
124
		bind(DuelService.class).in(Scopes.SINGLETON);
125
		bind(DuelService.class).in(Scopes.SINGLETON);
125
		bind(ServiceProxy.class).in(Scopes.SINGLETON);
126
		bind(ServiceProxy.class).in(Scopes.SINGLETON);
126
		bind(QuestService.class).in(Scopes.SINGLETON);
127
		bind(QuestService.class).in(Scopes.SINGLETON);
128
		bind(MailService.class).in(Scopes.SINGLETON);
127
	}
129
	}
128
130
129
	@Provides
131
	@Provides

Updated trunk/AE-go_GameServer/src/com/aionemu/gameserver/utils/guice/IDFactoriesInjectionModule.java Download diff

15021503
19
import com.aionemu.commons.database.dao.DAOManager;
19
import com.aionemu.commons.database.dao.DAOManager;
20
import com.aionemu.gameserver.dao.InventoryDAO;
20
import com.aionemu.gameserver.dao.InventoryDAO;
21
import com.aionemu.gameserver.dao.LegionDAO;
21
import com.aionemu.gameserver.dao.LegionDAO;
22
import com.aionemu.gameserver.dao.MailDAO;
22
import com.aionemu.gameserver.dao.PlayerDAO;
23
import com.aionemu.gameserver.dao.PlayerDAO;
23
import com.aionemu.gameserver.utils.idfactory.IDFactory;
24
import com.aionemu.gameserver.utils.idfactory.IDFactory;
24
import com.aionemu.gameserver.utils.idfactory.IDFactoryAionObject;
25
import com.aionemu.gameserver.utils.idfactory.IDFactoryAionObject;
...
...
53
		idFactory.lockIds(DAOManager.getDAO(PlayerDAO.class).getUsedIDs());
54
		idFactory.lockIds(DAOManager.getDAO(PlayerDAO.class).getUsedIDs());
54
		idFactory.lockIds(DAOManager.getDAO(InventoryDAO.class).getUsedIDs());
55
		idFactory.lockIds(DAOManager.getDAO(InventoryDAO.class).getUsedIDs());
55
		idFactory.lockIds(DAOManager.getDAO(LegionDAO.class).getUsedIDs());
56
		idFactory.lockIds(DAOManager.getDAO(LegionDAO.class).getUsedIDs());
57
		idFactory.lockIds(DAOManager.getDAO(MailDAO.class).getUsedIDs());
56
58
57
		return idFactory;
59
		return idFactory;
58
	}
60
	}