Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Level and SP of Subclass (https://forum.zone-game.info/showthread.php?t=37748)

L2J 05.02.2015 22:17

Level and SP of Subclass
 
Помогите пожалуйста! Хотел сделать чтобы при взятии сабкласса не сбрасывалось СП и Лвл, то есть на каком взял, такой и останется при взятии.
Пробовал сделать так:
	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;
	}
Code: Java
Но почему-то не удачно :confused:

Добавлено через 12 часов 50 минут
Понял что это делается в Subclass.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;
Code: Java
Только не понимаю как вычислять текущий лвл и сп, и как вставить это сюда, помогите пожалуйста.

Virt 07.02.2015 12:11

Re: Level and SP of Subclass
 
В классе SubClass есть поля:
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 код:

function void setActiveSubClass(classIdstoreOldexpsplevel){
this._sp sp;
this._level level;
this._exp exp;
 
//..................


Суть в том, что мы даем сабб классу персонажу с определенными параметрами.

Gaikotsu 07.02.2015 15:16

Re: Level and SP of Subclass
 
ну так ты сначала даешь сабе новый класс, а потом уже от нее сохраняешь в бд уровень и экспу, т.е. уже сброшенные.
перед установкой новго класса сохраняй текущие уровень и экспу в переменные и с ними уже работай.
ну и не забудь кроме сохранения в бд значений еще и в самом классе выставить сохраненные ранее значения.


Текущее время: 20:15. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot