Package l2p.gameserver.instancemanager

Source Code of l2p.gameserver.instancemanager.PlayerManager

package l2p.gameserver.instancemanager;

import l2p.Config;
import l2p.database.DatabaseUtils;
import l2p.database.FiltredPreparedStatement;
import l2p.database.L2DatabaseFactory;
import l2p.database.ThreadConnection;
import l2p.gameserver.model.L2Clan;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.tables.ClanTable;

import java.util.logging.Logger;

/**
* Набор статичных метордов для работы с игроками.
*/
public class PlayerManager
{
  protected static Logger _log = Logger.getLogger(PlayerManager.class.getName());

  public static void saveCharToDisk(L2Player cha)
  {
    try
    {
      cha.getInventory().updateDatabase(true);
      cha.store(false);
    }
    catch(Exception e)
    {
      _log.warning("Error saving player character: " + e);
      e.printStackTrace();
    }
  }

  public static void deleteFromClan(int charId, int clanId)
  {
    if(clanId == 0)
    {
      return;
    }
    L2Clan clan = ClanTable.getInstance().getClan(clanId);
    if(clan != null)
    {
      clan.removeClanMember(charId);
    }
  }

  public static void deleteCharByObjId(int objid)
  {
    if(objid < 0)
    {
      return;
    }
    ThreadConnection con = null;
    FiltredPreparedStatement statement = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("DELETE FROM characters WHERE obj_Id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_shortcuts WHERE char_obj_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_macroses WHERE char_obj_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE pets FROM pets, items WHERE pets.item_obj_id=items.object_id AND items.owner_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM items WHERE owner_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_skills WHERE char_obj_Id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_effects_save WHERE char_obj_Id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_skills_save WHERE char_obj_Id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_quests WHERE char_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_recipebook WHERE char_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_friends WHERE char_id=? or friend_id=?");
      statement.setInt(1, objid);
      statement.setInt(2, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM seven_signs WHERE char_obj_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("DELETE FROM character_subclasses WHERE char_obj_id=?");
      statement.setInt(1, objid);
      statement.execute();
      DatabaseUtils.closeStatement(statement);
      //CashShop database cleaning on L2Player deletion
      if(Config.itemmallType == 1)
      {
        statement = con.prepareStatement("DELETE FROM character_cash WHERE char_obj_id=?");
        statement.setInt(1, objid);
        statement.execute();
        DatabaseUtils.closeStatement(statement);
      }
      statement = null;
    }
    catch(Exception e)
    {
      _log.warning("data error on delete char:" + e);
    }
    finally
    {
      DatabaseUtils.closeDatabaseCS(con, statement);
    }
  }

  /**
   * Create a new player in the characters table of the database.
   */
  public static boolean createDb(L2Player player)
  {
    ThreadConnection con = null;
    FiltredPreparedStatement statement = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("INSERT INTO `characters` (account_name, obj_Id, char_name, face, hairStyle, hairColor, sex, karma, pvpkills, pkkills, clanid, createtime, deletetime, title, accesslevel, online, leaveclan, deleteclan, nochannel, pledge_type, pledge_rank, lvl_joined_academy, apprentice) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
      statement.setString(1, player.getAccountName());
      statement.setInt(2, player.getObjectId());
      statement.setString(3, player.getName());
      statement.setInt(4, player.getFace());
      statement.setInt(5, player.getHairStyle());
      statement.setInt(6, player.getHairColor());
      statement.setInt(7, player.getSex());
      statement.setInt(8, player.getKarma());
      statement.setInt(9, player.getPvpKills());
      statement.setInt(10, player.getPkKills());
      statement.setInt(11, player.getClanId());
      statement.setLong(12, player.getCreateTime() / 1000);
      statement.setInt(13, player.getDeleteTimer());
      statement.setString(14, player.getTitle());
      statement.setInt(15, player.getAccessLevel());
      statement.setInt(16, player.isOnline() ? 1 : 0);
      statement.setLong(17, player.getLeaveClanTime() / 1000);
      statement.setLong(18, player.getDeleteClanTime() / 1000);
      statement.setLong(19, player.getNoChannel() > 0 ? player.getNoChannel() / 1000 : player.getNoChannel());
      statement.setInt(20, player.getPledgeType());
      statement.setInt(21, player.getPowerGrade());
      statement.setInt(22, player.getLvlJoinedAcademy());
      statement.setInt(23, player.getApprentice());
      statement.executeUpdate();
      DatabaseUtils.closeStatement(statement);
      statement = con.prepareStatement("INSERT INTO character_subclasses (char_obj_id, class_id, exp, sp, curHp, curMp, curCp, maxHp, maxMp, maxCp, level, active, isBase, death_penalty, skills) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
      statement.setInt(1, player.getObjectId());
      statement.setInt(2, player.getTemplate().classId.getId());
      statement.setInt(3, 0);
      statement.setInt(4, 0);
      statement.setDouble(5, player.getTemplate().baseHpMax + player.getTemplate().lvlHpAdd + player.getTemplate().lvlHpMod);
      statement.setDouble(6, player.getTemplate().baseMpMax + player.getTemplate().lvlMpAdd + player.getTemplate().lvlMpMod);
      statement.setDouble(7, player.getTemplate().baseCpMax + player.getTemplate().lvlCpAdd + player.getTemplate().lvlCpMod);
      statement.setDouble(8, player.getTemplate().baseHpMax + player.getTemplate().lvlHpAdd + player.getTemplate().lvlHpMod);
      statement.setDouble(9, player.getTemplate().baseMpMax + player.getTemplate().lvlMpAdd + player.getTemplate().lvlMpMod);
      statement.setDouble(10, player.getTemplate().baseCpMax + player.getTemplate().lvlCpAdd + player.getTemplate().lvlCpMod);
      statement.setInt(11, 1);
      statement.setInt(12, 1);
      statement.setInt(13, 1);
      statement.setInt(14, 0);
      statement.setString(15, "");
      statement.executeUpdate();
      DatabaseUtils.closeStatement(statement);
      //CashShop database creation for new L2Player
      if(Config.itemmallType == 1)
      {
      statement = con.prepareStatement("INSERT INTO character_cash (char_obj_id, char_name, cash) VALUES (?,?,?)");
      statement.setInt(1, player.getObjectId());
      statement.setString(2, player.getName());
      statement.setInt(3, 0);
      statement.executeUpdate();
      DatabaseUtils.closeStatement(statement);
      }
    }
    catch(final Exception e)
    {
      e.printStackTrace();
      return false;
    }
    finally
    {
      DatabaseUtils.closeDatabaseCS(con, statement);
    }
    return true;
  }
}
TOP

Related Classes of l2p.gameserver.instancemanager.PlayerManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.