CharSelectInfo.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
net.sf.l2j.gameserver.serverpackets |
![]() |
![]() |
L2J |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* $Header: /cvsroot/l2j/L2_Gameserver/java/net/sf/l2j/gameserver/serverpackets/CharSelectInfo.java,v 1.8 2004/11/19 08:54:44 l2chef Exp $
*
* $Author: l2chef $
* $Date: 2004/11/19 08:54:44 $
* $Revision: 1.8 $
* $Log: CharSelectInfo.java,v $
* Revision 1.8 2004/11/19 08:54:44 l2chef
* database is now used
*
* Revision 1.7 2004/11/10 11:01:08 dethx
* char selection screen now shows the maxmp+mpbonus when selecting a char
*
* Revision 1.6 2004/07/13 22:59:58 l2chef
* removed empty constructor
*
* Revision 1.5 2004/07/12 20:57:40 l2chef
* char data is now stored in subfolder data/accounts
*
* Revision 1.4 2004/07/11 23:39:01 l2chef
* chars are always reloaded from disk (whatev)
*
* Revision 1.3 2004/07/04 11:14:53 l2chef
* logging is used instead of system.out
*
* Revision 1.2 2004/06/27 08:51:42 jeichhorn
* Added copyright notice
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.serverpackets;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Logger;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.ItemTable;
import net.sf.l2j.gameserver.model.CharSelectInfoPackage;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.templates.L2Item;
import net.sf.l2j.gameserver.model.Inventory;
/**
* This class ...
*
* @version $Revision: 1.8 $ $Date: 2004/11/19 08:54:44 $
*/
public class CharSelectInfo extends ServerBasePacket
{
// d SdSddddddddddffddddddddddddddddddddddddddddddddddddddddddddddffd
private static final String _S__1F_CHARSELECTINFO = "[S] 1F CharSelectInfo";
private static Logger _log = Logger.getLogger(CharSelectInfo.class.getName());
private String _loginName;
private int _sessionId;
private CharSelectInfoPackage _charInfopackage;
private CharSelectInfoPackage [] _characterPackages;
private String [] _charNameList;
/**
* @param _characters
*/
public CharSelectInfo(String loginName, int sessionId)
{
_sessionId = sessionId;
_loginName = loginName;
_characterPackages = loadCharacterSelectInfo();
}
public byte[] getContent()
{
int size = (_characterPackages.length);
_bao.write(0x1f);
writeD(size);
long count = 0x01e1eb;
for (int i=0; i < size;i++)
{
CharSelectInfoPackage charInfoPackage = _characterPackages[i];
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getCharId()); //?
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(0x00); //??
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
writeD(charInfoPackage.getClassId());
writeD(0x01); // active ??
writeD(0x00); // noeffect ?
writeD(0x00); // noeffect ?
writeD(0x00); // noeffect ?
writeF(charInfoPackage.getCurrentHp()); // hp cur
writeF(charInfoPackage.getCurrentMp()); // mp cur
writeD(charInfoPackage.getSp());
writeD(charInfoPackage.getExp());
writeD(charInfoPackage.getLevel());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
writeD(charInfoPackage.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
writeD(0x00);
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
writeD(charInfoPackage.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp()); // hp max
writeF(charInfoPackage.getMaxMp()+charInfoPackage.getInventory().getMpBonus()); // mp max
writeD(charInfoPackage.getDeleteTimer()); // days left before delete .. if != 0 then char is inactive
}
return _bao.toByteArray();
}
public CharSelectInfoPackage [] loadCharacterSelectInfo()
{
CharSelectInfoPackage [] characters;
try
{
java.sql.Connection con = null;
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT * FROM characters WHERE account_name=? ORDER BY char_name");
statement.setString(1, _loginName);
ResultSet char_list = statement.executeQuery();
char_list.last();
characters = new CharSelectInfoPackage [char_list.getRow()];
char_list.beforeFirst();
while (char_list.next())//fills the package
{
_charInfopackage = new CharSelectInfoPackage();
restoreChar(char_list);
PreparedStatement statement2 = con.prepareStatement("SELECT * FROM character_inventory WHERE char_obj_id=?");
statement2.setInt(1, char_list.getInt(2));
ResultSet char_inv = statement2.executeQuery();
restoreInventory(char_inv);
char_inv.close();
statement2.close();
characters[char_list.getRow()-1] = _charInfopackage;
}
char_list.close();
statement.close();
con.close();
return characters;
}
catch (Exception e)
{
e.printStackTrace();
_log.warning("could not restore charinfo:"+e);
}
return null;
}
private void restoreInventory(ResultSet invdata)
{
try
{
while ( invdata.next())
{
if (invdata.getInt(7) != -1)
{
L2ItemInstance item = new L2ItemInstance();
item.setObjectId(invdata.getInt(2));
int itemId = invdata.getInt(3);
L2Item itemTemp = ItemTable.getInstance().getTemplate(itemId);
item.setItem(itemTemp);
item.setCount(1);
item.setPrice(1);
// equip slot is the current used slot. -1 == item is not equiped
item.setEquipSlot(invdata.getInt(7));
//_charInfopackage.getInventory().addItem(item);
_charInfopackage.getInventory().equipItem(item);
}
}
}
catch (Exception e)
{
_log.warning("could not restore inventory:"+e);
e.printStackTrace();
}
}
private void restoreChar(ResultSet chardata)
{
try {
_charInfopackage.setName(chardata.getString(3) );
_charInfopackage.setLevel( chardata.getInt(4));
_charInfopackage.setMaxHp( chardata.getInt(5) );
_charInfopackage.setCurrentHp( chardata.getDouble(6) );
_charInfopackage.setMaxMp( chardata.getInt(7) );
_charInfopackage.setCurrentMp( chardata.getDouble(8) );
_charInfopackage.setFace( chardata.getInt(26) );
_charInfopackage.setHairStyle( chardata.getInt(27) );
_charInfopackage.setHairColor( chardata.getInt(28) );
_charInfopackage.setSex( chardata.getInt(29) );
_charInfopackage.setExp( chardata.getInt(38) );
_charInfopackage.setSp( chardata.getInt(39) );
_charInfopackage.setClanId( chardata.getInt(43));
_charInfopackage.setRace(chardata.getInt(45) );
_charInfopackage.setClassId( chardata.getInt(46));
_charInfopackage.setDeleteTimer( chardata.getInt(47) );
}catch(Exception e){e.printStackTrace();}
}
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
*/
public String [] getCharacterlist()
{
return _charNameList;
}
public String getType()
{
return _S__1F_CHARSELECTINFO;
}
}
The table below shows all metrics for CharSelectInfo.java.




