📄 l1dwarfinventory.java
字号:
package l1j.server.server.model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.L1DatabaseFactory;
import l1j.server.server.datatables.ItemTable;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.templates.L1Item;
import l1j.server.server.utils.SQLUtil;
public class L1DwarfInventory extends L1Inventory {
/**
*
*/
private static final long serialVersionUID = 1L;
public L1DwarfInventory(L1PcInstance owner) {
_owner = owner;
}
// DBのcharacter_itemsの読込
@Override
public void loadItems() {
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("SELECT * FROM character_warehouse WHERE account_name = ?");
pstm.setString(1, _owner.getAccountName());
rs = pstm.executeQuery();
while (rs.next()) {
L1ItemInstance item = new L1ItemInstance();
int objectId = rs.getInt("id");
item.setId(objectId);
L1Item itemTemplate = ItemTable.getInstance().getTemplate(
rs.getInt("item_id"));
item.setItem(itemTemplate);
item.setCount(rs.getInt("count"));
item.setEquipped(false);
item.setEnchantLevel(rs.getInt("enchantlvl"));
item.setIdentified(rs.getInt("is_id") != 0 ? true : false);
item.set_durability(rs.getInt("durability"));
item.setChargeCount(rs.getInt("charge_count"));
item.setRemainingTime(rs.getInt("remaining_time"));
item.setLastUsed(rs.getTimestamp("last_used"));
//屬性強化捲軸
item.setAttribute(rs.getInt("attr"));
item.setAttributeLevel(rs.getInt("attrlvl"));
//~屬性強化捲軸
//飾品強化卷軸
item.setFireMr(rs.getInt("firemr"));
item.setWaterMr(rs.getInt("watermr"));
item.setEarthMr(rs.getInt("earthmr"));
item.setWindMr(rs.getInt("windmr"));
item.setaddSp(rs.getInt("addsp"));
item.setaddHp(rs.getInt("addhp"));
item.setaddMp(rs.getInt("addmp"));
item.setHpr(rs.getInt("hpr"));
item.setMpr(rs.getInt("mpr"));
//飾品強化卷軸
_items.add(item);
L1World.getInstance().storeObject(item);
}
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
// DBのcharacter_warehouseへ登録
@Override
public void insertItem(L1ItemInstance item) {
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
//屬性強化捲軸
pstm = con
.prepareStatement("INSERT INTO character_warehouse SET id = ?, account_name = ?, item_id = ?, item_name = ?, count = ?, is_equipped=0, enchantlvl = ?, is_id = ?, durability = ?, charge_count = ?, remaining_time = ?, last_used = ?, attr = ?, attrlvl = ?, firemr = ?, watermr = ?, earthmr = ?, windmr = ?, addsp = ?, addhp = ?, addmp = ?, hpr = ?, mpr = ?");
pstm.setInt(1, item.getId());
pstm.setString(2, _owner.getAccountName());
pstm.setInt(3, item.getItemId());
pstm.setString(4, item.getName());
pstm.setInt(5, item.getCount());
pstm.setInt(6, item.getEnchantLevel());
pstm.setInt(7, item.isIdentified() ? 1 : 0);
pstm.setInt(8, item.get_durability());
pstm.setInt(9, item.getChargeCount());
pstm.setInt(10, item.getRemainingTime());
pstm.setTimestamp(11, item.getLastUsed());
pstm.setInt(12, item.getAttribute());
pstm.setInt(13, item.getAttributeLevel());
//~屬性強化捲軸
//飾品強化卷軸
pstm.setInt(14, item.getFireMr());
pstm.setInt(15, item.getWaterMr());
pstm.setInt(16, item.getEarthMr());
pstm.setInt(17, item.getWindMr());
pstm.setInt(18, item.getaddSp());
pstm.setInt(19, item.getaddHp());
pstm.setInt(20, item.getaddMp());
pstm.setInt(21, item.getHpr());
pstm.setInt(22, item.getMpr());
//飾品強化卷軸
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
// DBのcharacter_warehouseを更新
@Override
public void updateItem(L1ItemInstance item) {
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("UPDATE character_warehouse SET count = ? WHERE id = ?");
pstm.setInt(1, item.getCount());
pstm.setInt(2, item.getId());
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
// DBのcharacter_warehouseから削除
@Override
public void deleteItem(L1ItemInstance item) {
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("DELETE FROM character_warehouse WHERE id = ?");
pstm.setInt(1, item.getId());
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
} finally {
SQLUtil.close(pstm);
SQLUtil.close(con);
}
_items.remove(_items.indexOf(item));
}
public static void present(String account, int itemid, int enchant,
int count) throws Exception {
L1Item temp = ItemTable.getInstance().getTemplate(itemid);
if (temp == null) {
return;
}
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
if (account.compareToIgnoreCase("*") == 0) {
pstm = con.prepareStatement("SELECT * FROM accounts");
} else {
pstm = con
.prepareStatement("SELECT * FROM accounts WHERE login=?");
pstm.setString(1, account);
}
rs = pstm.executeQuery();
ArrayList<String> accountList = new ArrayList<String>();
while (rs.next()) {
accountList.add(rs.getString("login"));
}
present(accountList, itemid, enchant, count);
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw e;
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
public static void present(int minlvl, int maxlvl, int itemid, int enchant,
int count) throws Exception {
L1Item temp = ItemTable.getInstance().getTemplate(itemid);
if (temp == null) {
return;
}
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("SELECT distinct(account_name) as account_name FROM characters WHERE level between ? and ?");
pstm.setInt(1, minlvl);
pstm.setInt(2, maxlvl);
rs = pstm.executeQuery();
ArrayList<String> accountList = new ArrayList<String>();
while (rs.next()) {
accountList.add(rs.getString("account_name"));
}
present(accountList, itemid, enchant, count);
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw e;
} finally {
SQLUtil.close(rs);
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
private static void present(ArrayList<String> accountList, int itemid,
int enchant, int count) throws Exception {
L1Item temp = ItemTable.getInstance().getTemplate(itemid);
if (temp == null) {
throw new Exception("存在しないアイテムID");
}
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
con.setAutoCommit(false);
for (String account : accountList) {
if (temp.isStackable()) {
L1ItemInstance item = ItemTable.getInstance().createItem(
itemid);
item.setEnchantLevel(enchant);
item.setCount(count);
//屬性強化捲軸
pstm = con
.prepareStatement("INSERT INTO character_warehouse SET id = ?, account_name = ?, item_id = ?, item_name = ?, count = ?, is_equipped=0, enchantlvl = ?, is_id = ?, durability = ?, charge_count = ?, remaining_time = ?, attr = ?, attrlvl = ?");
pstm.setInt(1, item.getId());
pstm.setString(2, account);
pstm.setInt(3, item.getItemId());
pstm.setString(4, item.getName());
pstm.setInt(5, item.getCount());
pstm.setInt(6, item.getEnchantLevel());
pstm.setInt(7, item.isIdentified() ? 1 : 0);
pstm.setInt(8, item.get_durability());
pstm.setInt(9, item.getChargeCount());
pstm.setInt(10, item.getRemainingTime());
pstm.setInt(11, 0);
pstm.setInt(12, 0);
//~屬性強化捲軸
pstm.execute();
} else {
L1ItemInstance item = null;
int createCount;
for (createCount = 0; createCount < count; createCount++) {
item = ItemTable.getInstance().createItem(itemid);
item.setEnchantLevel(enchant);
//屬性強化捲軸
pstm = con
.prepareStatement("INSERT INTO character_warehouse SET id = ?, account_name = ?, item_id = ?, item_name = ?, count = ?, is_equipped=0, enchantlvl = ?, is_id = ?, durability = ?, charge_count = ?, remaining_time = ?, attr = ?, attrlvl = ?");
pstm.setInt(1, item.getId());
pstm.setString(2, account);
pstm.setInt(3, item.getItemId());
pstm.setString(4, item.getName());
pstm.setInt(5, item.getCount());
pstm.setInt(6, item.getEnchantLevel());
pstm.setInt(7, item.isIdentified() ? 1 : 0);
pstm.setInt(8, item.get_durability());
pstm.setInt(9, item.getChargeCount());
pstm.setInt(10, item.getRemainingTime());
pstm.setInt(11, 0);
pstm.setInt(12, 0);
//~屬性強化捲軸
pstm.execute();
}
}
}
con.commit();
con.setAutoCommit(true);
} catch (SQLException e) {
try {
con.rollback();
} catch (SQLException ignore) {
// ignore
}
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new Exception(".present処理中にエラーが発生しました。");
} finally {
SQLUtil.close(pstm);
SQLUtil.close(con);
}
}
private static l1j.eric.EricLogger _log = l1j.eric.EricLogger.getLogger2(L1DwarfInventory.class
.getName());
private final L1PcInstance _owner;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -