Store player henna potential at character_potens table.

This commit is contained in:
MobiusDevelopment 2022-05-29 12:37:24 +00:00
parent c08bd07361
commit e285e8b2f0
4 changed files with 110 additions and 54 deletions

View File

@ -1,8 +1,8 @@
DROP TABLE IF EXISTS `character_potens`;
CREATE TABLE IF NOT EXISTS `character_potens` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`enchant_level` INT,
`enchant_exp` INT,
`poten_id` INT,
PRIMARY KEY (`charId`)
`enchant_level` INT NOT NULL DEFAULT 0,
`enchant_exp` INT NOT NULL DEFAULT 0,
`poten_id` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`charId`,`poten_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

View File

@ -440,8 +440,7 @@ public class Player extends Playable
private static final String ADD_CHAR_HENNA = "INSERT INTO character_hennas (charId,symbol_id,slot,class_index) VALUES (?,?,?,?)";
private static final String DELETE_CHAR_HENNA = "DELETE FROM character_hennas WHERE charId=? AND slot=? AND class_index=?";
private static final String ADD_CHAR_HENNA_POTENS = "REPLACE INTO character_potens (charId,enchant_level,enchant_exp,poten_id) VALUES (?,?,?,?)";
// private static final String RESTORE_CHAR_HENNAS_POTENS = "SELECT poten_id,enchant_level,enchant_exp FROM character_potens WHERE charId=?";
// private static final String UPDATE_CHAR_HENNAS_POTENS = "UPDATE character_potens SET enchant_level=?,enchant_exp=?,poten_id=?,class_id=?,dual_class=? WHERE charId=?";
private static final String RESTORE_CHAR_HENNA_POTENS = "SELECT poten_id,enchant_level,enchant_exp FROM character_potens WHERE charId=?";
// Character Shortcut SQL String Definitions:
private static final String DELETE_CHAR_SHORTCUTS = "DELETE FROM character_shortcuts WHERE charId=? AND class_index=?";
@ -7940,10 +7939,7 @@ public class Player extends Playable
*/
private void restoreHenna()
{
for (int i = 1; i < 5; i++)
{
_hennaPoten[i - 1] = new HennaPoten();
}
restoreDyePoten();
// Cancel and remove existing running tasks.
for (Entry<Integer, ScheduledFuture<?>> entry : _hennaRemoveSchedules.entrySet())
@ -8225,26 +8221,62 @@ public class Player extends Playable
}
}
private void storeDyePoten()
private void restoreDyePoten()
{
if (_hennaPoten[0] == null)
{
return;
}
final HennaPoten hennaPoten = new HennaPoten();
int pos = 0;
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(ADD_CHAR_HENNA_POTENS))
PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNA_POTENS))
{
statement.setInt(1, getObjectId());
statement.setInt(2, hennaPoten.getEnchantLevel());
statement.setInt(3, hennaPoten.getEnchantExp());
statement.setInt(4, hennaPoten.getPotenId());
statement.execute();
try (ResultSet rset = statement.executeQuery())
{
while (rset.next())
{
final int potenId = rset.getInt("poten_id");
if (potenId > 0)
{
_hennaPoten[pos] = new HennaPoten();
_hennaPoten[pos].setEnchantLevel(rset.getInt("enchant_level"));
_hennaPoten[pos].setEnchantExp(rset.getInt("enchant_exp"));
_hennaPoten[pos].setPotenId(potenId);
pos++;
}
}
}
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Failed saving character henna Potential.", e);
LOGGER.log(Level.SEVERE, "Failed restoring character " + this + " henna potential.", e);
}
for (int i = pos; i < 4; i++)
{
_hennaPoten[i] = new HennaPoten();
}
applyDyePotenSkills();
}
private void storeDyePoten()
{
for (int i = 0; i < 4; i++)
{
if ((_hennaPoten[i] != null) && (_hennaPoten[i].getPotenId() > 0))
{
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(ADD_CHAR_HENNA_POTENS))
{
statement.setInt(1, getObjectId());
statement.setInt(2, _hennaPoten[i].getEnchantLevel());
statement.setInt(3, _hennaPoten[i].getEnchantExp());
statement.setInt(4, _hennaPoten[i].getPotenId());
statement.execute();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Failed saving character " + this + " henna potential.", e);
}
}
}
}
@ -10215,10 +10247,6 @@ public class Player extends Playable
restoreEffects();
sendPacket(new EtcStatusUpdate(this));
for (int i = 0; i < 3; i++)
{
_hennaPoten[i] = null;
}
restoreHenna();
sendPacket(new HennaInfo(this));

View File

@ -1,8 +1,8 @@
DROP TABLE IF EXISTS `character_potens`;
CREATE TABLE IF NOT EXISTS `character_potens` (
`charId` INT UNSIGNED NOT NULL DEFAULT 0,
`enchant_level` INT,
`enchant_exp` INT,
`poten_id` INT,
PRIMARY KEY (`charId`)
`enchant_level` INT NOT NULL DEFAULT 0,
`enchant_exp` INT NOT NULL DEFAULT 0,
`poten_id` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`charId`,`poten_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

View File

@ -440,8 +440,7 @@ public class Player extends Playable
private static final String ADD_CHAR_HENNA = "INSERT INTO character_hennas (charId,symbol_id,slot,class_index) VALUES (?,?,?,?)";
private static final String DELETE_CHAR_HENNA = "DELETE FROM character_hennas WHERE charId=? AND slot=? AND class_index=?";
private static final String ADD_CHAR_HENNA_POTENS = "REPLACE INTO character_potens (charId,enchant_level,enchant_exp,poten_id) VALUES (?,?,?,?)";
// private static final String RESTORE_CHAR_HENNAS_POTENS = "SELECT poten_id,enchant_level,enchant_exp FROM character_potens WHERE charId=?";
// private static final String UPDATE_CHAR_HENNAS_POTENS = "UPDATE character_potens SET enchant_level=?,enchant_exp=?,poten_id=?,class_id=?,dual_class=? WHERE charId=?";
private static final String RESTORE_CHAR_HENNA_POTENS = "SELECT poten_id,enchant_level,enchant_exp FROM character_potens WHERE charId=?";
// Character Shortcut SQL String Definitions:
private static final String DELETE_CHAR_SHORTCUTS = "DELETE FROM character_shortcuts WHERE charId=? AND class_index=?";
@ -7977,10 +7976,7 @@ public class Player extends Playable
*/
private void restoreHenna()
{
for (int i = 1; i < 5; i++)
{
_hennaPoten[i - 1] = new HennaPoten();
}
restoreDyePoten();
// Cancel and remove existing running tasks.
for (Entry<Integer, ScheduledFuture<?>> entry : _hennaRemoveSchedules.entrySet())
@ -8262,26 +8258,62 @@ public class Player extends Playable
}
}
private void storeDyePoten()
private void restoreDyePoten()
{
if (_hennaPoten[0] == null)
{
return;
}
final HennaPoten hennaPoten = new HennaPoten();
int pos = 0;
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(ADD_CHAR_HENNA_POTENS))
PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNA_POTENS))
{
statement.setInt(1, getObjectId());
statement.setInt(2, hennaPoten.getEnchantLevel());
statement.setInt(3, hennaPoten.getEnchantExp());
statement.setInt(4, hennaPoten.getPotenId());
statement.execute();
try (ResultSet rset = statement.executeQuery())
{
while (rset.next())
{
final int potenId = rset.getInt("poten_id");
if (potenId > 0)
{
_hennaPoten[pos] = new HennaPoten();
_hennaPoten[pos].setEnchantLevel(rset.getInt("enchant_level"));
_hennaPoten[pos].setEnchantExp(rset.getInt("enchant_exp"));
_hennaPoten[pos].setPotenId(potenId);
pos++;
}
}
}
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Failed saving character henna Potential.", e);
LOGGER.log(Level.SEVERE, "Failed restoring character " + this + " henna potential.", e);
}
for (int i = pos; i < 4; i++)
{
_hennaPoten[i] = new HennaPoten();
}
applyDyePotenSkills();
}
private void storeDyePoten()
{
for (int i = 0; i < 4; i++)
{
if ((_hennaPoten[i] != null) && (_hennaPoten[i].getPotenId() > 0))
{
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(ADD_CHAR_HENNA_POTENS))
{
statement.setInt(1, getObjectId());
statement.setInt(2, _hennaPoten[i].getEnchantLevel());
statement.setInt(3, _hennaPoten[i].getEnchantExp());
statement.setInt(4, _hennaPoten[i].getPotenId());
statement.execute();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Failed saving character " + this + " henna potential.", e);
}
}
}
}
@ -10265,10 +10297,6 @@ public class Player extends Playable
restoreEffects();
sendPacket(new EtcStatusUpdate(this));
for (int i = 0; i < 3; i++)
{
_hennaPoten[i] = null;
}
restoreHenna();
sendPacket(new HennaInfo(this));