rendered paste bodyIndex: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java (revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java (working copy)@@ -146,7 +146,41 @@ clan.removeClanMember(cha.getName()); } - public void deleteChar(int charslot) throws Exception+ /**+ * Marks char as deleted, sets deletettime field+ * @param charslot+ */+ public void markDeleted(int charslot)+ {+ int objid = getObjectIdForSlot(charslot);+ if (objid < 0)+ return;+ + java.sql.Connection con = null;+ try + {+ con = L2DatabaseFactory.getInstance().getConnection();+ PreparedStatement statement = con.prepareStatement("UPDATE characters SET deletetime = ? WHERE obj_Id=?");+ statement.setLong(1, System.currentTimeMillis()+(60000*60*24*Config.CHAR_DELETE_TIME));+ statement.setInt(2, objid);+ statement.execute();+ statement.close();+ }+ catch (Exception e)+ {+ _log.warning("Error while marking char as deleted: " + e);+ } + finally + {+ try { con.close(); } catch (Exception e) {}+ }+ }+ + /**+ * Delete char+ * @param objid+ */+ public void deleteChar(int objid) { //have to make sure active character must be nulled if (getActiveChar() != null)@@ -156,7 +190,6 @@ _activeChar = null; } - int objid = getObjectIdForSlot(charslot); if (objid < 0) return; Index: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/CharacterDelete.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/CharacterDelete.java (revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/CharacterDelete.java (working copy)@@ -55,7 +55,7 @@ try {- getClient().deleteChar(_charSlot);+ getClient().markDeleted(_charSlot); } catch (Exception e) {Index: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java (revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java (working copy)@@ -113,10 +113,26 @@ { return _deleteTimer; }- public void setDeleteTimer(int deleteTimer)++ public void setDeleteTimer(long deleteTimer) {- _deleteTimer = deleteTimer;+ long currentTimestamp = System.currentTimeMillis();+ int estimated = 0;+ + if(currentTimestamp < deleteTimer && deleteTimer > 0) // still alive :P+ {+ estimated = Math.abs((int)(deleteTimer - currentTimestamp)/1000);+ }+ else if(currentTimestamp > deleteTimer && deleteTimer > 0) // w00t, time to kill tat fuggin char+ {+ _deleteTimer = -1;+ //System.out.println("Char deletion time arrived, bye bye!");+ }+ + //System.out.println("Char deletion infoz, estimated: "+ estimated +" delete timer: "+deleteTimer+" current timestamp: "+currentTimestamp);+ _deleteTimer = (estimated); }+ public long getLastAccess() { return _lastAccess;Index: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/MultiSellList.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/MultiSellList.java (revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/MultiSellList.java (working copy)@@ -28,7 +28,11 @@ */ package net.sf.l2j.gameserver.serverpackets; +import java.util.ArrayList;++import net.sf.l2j.gameserver.model.L2MultiSell; import net.sf.l2j.gameserver.model.L2PcInstance;+import net.sf.l2j.gameserver.model.L2MultiSell.MultisellEntry; /** * This class ...@@ -40,10 +44,14 @@ private static final String _S__D0_MULTISELLLIST = "[S] D0 MultiSellList"; protected L2PcInstance _player;+ protected int _listId;+ protected ArrayList<MultisellEntry> list; - public MultiSellList( L2PcInstance p )+ public MultiSellList( L2PcInstance p, int listId ) { _player = p;+ _listId = listId;+ list = L2MultiSell.getInstance().getList(_listId); } void runImpl()@@ -51,43 +59,31 @@ } void writeImpl()- { + {+ //ddddd [dchh] [hdhdh] [hhdh] writeC(0xd0); writeD(1); //?? list id writeD(1); //list lenght- for(int i = 0; i < 1; i++)- {//dhdhdhh- writeD(1); // makeID- writeH(10);- writeD(71); //itemID- writeH(20);- //writeD(512); //itemType- //writeD(1); //itemAmount- writeD(512); - writeH(3); //Ingredient Count- writeH(3);- //supposed to be "dhdhdhh"- - //Item 1 supposed to be hhdh- writeH(1458); //ID- writeH(1459); //??- writeD(573); //Count- writeH(0x7fff); //Enchant Level- //Item 2- writeH(1458); //ID- writeH(10); //??- writeD(555); //Count- writeH(0x7fff); //Enchant Level- //Item 2- writeH(1459); //ID- writeH(1459); //??- writeD(555); //Count- writeH(0x7fff); //Enchant Level-- } -- writeD(12); //?? - + writeD(1);+ writeD(1);+ writeD(1);+ + writeD(1);+ writeC(1);+ writeH(1);+ writeH(1);+ + writeH(1);+ writeD(1);+ writeH(1);+ writeD(1);+ writeH(1);+ + writeH(1);+ writeH(1);+ writeD(1);+ writeH(1);+ } @OverrideIndex: C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/CharSelectInfo.java===================================================================--- C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/CharSelectInfo.java (revision 1250)+++ C:/eclipse-31m7/workspace/c4/L2_GameServer/java/net/sf/l2j/gameserver/serverpackets/CharSelectInfo.java (working copy)@@ -188,7 +188,9 @@ while (charList.next())// fills the package { charInfopackage = restoreChar(charList);- characterList.add(charInfopackage);+ + if(charInfopackage != null)+ characterList.add(charInfopackage); } charList.close();@@ -233,7 +235,7 @@ charInfopackage.setRace(chardata.getInt("race")); charInfopackage.setClassId(chardata.getInt("classid"));- charInfopackage.setDeleteTimer(chardata.getInt("deletetime"));+ charInfopackage.setDeleteTimer(chardata.getLong("deletetime")); charInfopackage.setLastAccess(chardata.getLong("lastAccess")); } catch (Exception e)@@ -241,6 +243,12 @@ _log.log(Level.INFO, "", e); } + if(charInfopackage.getDeleteTimer() == -1)+ {+ getClient().deleteChar(charInfopackage.getObjectId());+ return null;+ }+ return charInfopackage; }