Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Level and SP of Subclass
#1
Помогите пожалуйста! Хотел сделать чтобы при взятии сабкласса не сбрасывалось СП и Лвл, то есть на каком взял, такой и останется при взятии.
Пробовал сделать так:
[SRC="java"] public boolean addSubClass(final int classId, boolean storeOld, int certification) {
if (_classlist.size() >= 15)
return false;

final ClassId newId = ClassId.VALUES[classId];

final SubClass newClass = new SubClass();
newClass.setBase(false);
if (newId.getRace() == null)
return false;

newClass.setClassId(classId);
newClass.setCertification(certification);

_classlist.put(classId, newClass);

Connection con = null;
PreparedStatement statement = null;
try {
// Store the basic info about this new sub-class.
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("REPLACE INTO character_subclasses (char_obj_id, class_id, exp, sp, curHp, curMp, curCp, maxHp, maxMp, maxCp, level, active, isBase, death_penalty, certification) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
statement.setInt(1, getObjectId());
statement.setInt(2, newClass.getClassId());
statement.setLong(3, Experience.LEVEL[getActiveClass().getLevel()]);
statement.setLong(4, getActiveClass().getSp());
statement.setDouble(5, getCurrentHp());
statement.setDouble(6, getCurrentMp());
statement.setDouble(7, getCurrentCp());
statement.setDouble(8, getCurrentHp());
statement.setDouble(9, getCurrentMp());
statement.setDouble(10, getCurrentCp());
statement.setInt(11, getActiveClass().getLevel());
statement.setInt(12, 0);
statement.setInt(13, 0);
statement.setInt(14, 0);
statement.setInt(15, certification);
statement.execute();
} catch (final Exception e) {
_log.warn("Could not add character sub-class: " + e, e);
return false;
} finally {
DbUtils.closeQuietly(con, statement);
}


setActiveSubClass(classId, storeOld);

boolean countUnlearnable = true;
int unLearnable = 0;

sendPacket(new SkillList(this));
setCurrentHpMp(getMaxHp(), getMaxMp(), true);
setCurrentCp(getMaxCp());
return true;
}[/SRC]
Но почему-то не удачно :confused:

Добавлено через 12 часов 50 минут
Понял что это делается в Subclass.java
На этом отрезке кода:
[SRC="java"]public class SubClass
{
public static final int CERTIFICATION_65 = 1 << 0;
public static final int CERTIFICATION_70 = 1 << 1;
public static final int CERTIFICATION_75 = 1 << 2;
public static final int CERTIFICATION_80 = 1 << 3;

private int _class = 0;
private long _exp = Experience.LEVEL[Config.ALT_GAME_START_LEVEL_TO_SUBCLASS], minExp = Experience.LEVEL[Config.ALT_GAME_START_LEVEL_TO_SUBCLASS], maxExp = Experience.LEVEL[Experience.LEVEL.length - 1];
private int _sp = 0;
private int _level = Config.ALT_GAME_START_LEVEL_TO_SUBCLASS, _certification;
private double _Hp = 1, _Mp = 1, _Cp = 1;
private boolean _active = false, _isBase = false;
private DeathPenalty _dp;[/SRC]

Только не понимаю как вычислять текущий лвл и сп, и как вставить это сюда, помогите пожалуйста.
Ответ
#2
В классе SubClass есть поля:
PHP код:
<?php 
private long _exp = Experience.LEVEL[Config.ALT_GAME_START_LEVEL_TO_SUBCLASS], minExp = Experience.LEVEL[Config.ALT_GAME_START_LEVEL_TO_SUBCLASS], maxExp = Experience.LEVEL[Experience.LEVEL.length - 1];
private
int _sp = 0;
private
int _level = Config.ALT_GAME_START_LEVEL_TO_SUBCLASS, _certification;
Я к сожалению, не знаю, как именно устроена архитектура приложения.
В данном случае Вам стоит сделать примерное следующее
PHP код:
<?php 
function void setActiveSubClass(classId, storeOld, exp, sp, level){
this._sp = sp;
this._level = level;
this._exp = exp;
//..................
}
Суть в том, что мы даем сабб классу персонажу с определенными параметрами.
Ответ
#3
ну так ты сначала даешь сабе новый класс, а потом уже от нее сохраняешь в бд уровень и экспу, т.е. уже сброшенные.
перед установкой новго класса сохраняй текущие уровень и экспу в переменные и с ними уже работай.
ну и не забудь кроме сохранения в бд значений еще и в самом классе выставить сохраненные ранее значения.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)