Перейти к содержанию
Авторизация  
GUSTAVO

Автоизучение сертификации с проверкой на соответствие скилов по классам L2JPS

Рекомендуемые сообщения

Всем привет! Прошу помощи, ни как не могу разобраться как сделать авто изучение сертификации.

В сборке есть папка SkillTrees. В ней лежат файлы со скиллами по классам. (classSkillTree.xml, forgottenSkillTree.xml, subClassSkillTree.xml и т. д.), в базе нет столбика SkillTrees.

 

Так же в сборку встроена защита на проверку соответствия скиллов по классам

(в Secure есть переключатели

# Проверять игроков на неразрешенные скиллы

# Default: False
SkillCheckEnable = True
 
# Если имеются не разрешенные скиллы, удалять их.
# Report only, if false.
# Default: False
SkillCheckRemove = True)
 
Я пробовал сделать так: я из файла subClassSkillTree.xml переписывал скиллы в forgottenSkillTree.xml. При этом авто изучение поставил.
Захожу в игру , скиллы вроде как бы учатся, но защита тут же их удаляет. Но если взять саб класс, то скиллы появляются нормально и так же потом если перейти обратно на основу, скиллы появляются и не удаляются. Как я понимаю защита проверяет только при входе в систему.
 
В ХМЛ скилла стоит:
<set name="excludedFromCheck" val="true" /> - Исключать из проверки.
 
Когда захожу в игру мне выдает с системном чате текст о том, что скиллы от саба не соответствующие классы были удалены. 
Подскажите люди добрые, как быть? Исходники имеются, но так как я новичок в java , ничего путного не нашел. Смотрел файлы SkillTreesData.java, там вроде бы как проверка идет на скилы, и смотрел L2PcInstance.java, там нашел только то где выводится системные сообщения о том что были удалены скилы.
HEEEELP!)
 
Основа сборка L2JServer)
Изменено пользователем akcent

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему просто не отключить защиту проверки скилов?

 

А пробовали вставить скилы в classSkillTree.xml?

<skill skillName="Warrior Ability - Haste" skillId="651" skillLvl="1" getLevel="75" autoGet="true" />

Если не поможет, можешь в исходниках добавить ограничение на проверку скилов (чтоб не проверяла саб скилы)

Изменено пользователем zGosu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему просто не отключить защиту проверки скилов?

 

А пробовали вставить скилы в classSkillTree.xml?

<skill skillName="Warrior Ability - Haste" skillId="651" skillLvl="1" getLevel="75" autoGet="true" />

Если не поможет, можешь в исходниках добавить ограничение на проверку скилов (чтоб не проверяла саб скилы)

защита мне нужна) именно так я и делал, добавлял скиллы в classSkillTrees.xml. Они автоматом изучаются на входе и тут же удаляются защитой.

А где и что править для того чтоб эти скилы не проверялись, не подскажите???

Если нужно, скину исходный код нужных файлов.

Изменено пользователем akcent

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

защита мне нужна) именно так я и делал, добавлял скиллы в classSkillTrees.xml. Они автоматом изучаются на входе и тут же удаляются защитой.

А где и что править для того чтоб эти скилы не проверялись, не подскажите???

Если нужно, скину исходный код нужных файлов.

Ищи функцию Config.SKILL_CHECK_ENABLE

Находится в файлах: 

  • SubClassSkills
  • L2PcInstance
  • SkillTransfer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Ищи функцию Config.SKILL_CHECK_ENABLE

Находится в файлах: 

  • SubClassSkills
  • L2PcInstance
  • SkillTransfer

 

Нет таких файлов SubClassSkill и SkillTransfer, я так думаю содержимое этих файлов внесено в SkillTreesData.

Данную функцию нашел только в L2PcInstance

// Add the L2Skill object to the L2Character _skills and its Func objects to the calculator set of the L2Character

addSkill(skill);

 

if (Config.SKILL_CHECK_ENABLE && (!canOverrideCond(PcCondOverride.SKILL_CONDITIONS) || Config.SKILL_CHECK_GM))

{

if (!SkillTreesData.getInstance().isSkillAllowed(this, skill))

{

Util.handleIllegalPlayerAction(this, "Player " + getName() + " has invalid skill " + skill.getName() + " (" + skill.getId() + "/" + skill.getLevel() + "), class:" + ClassListData.getInstance().getClass(getClassId()).getClassName(), 1);

if (Config.SKILL_CHECK_REMOVE)

{

removeSkill(skill);

}

}

}

}

rset.close();

}

catch (Exception e)

{

_log.log(Level.WARNING, "Could not restore character " + this + " skills: " + e.getMessage(), e);

}

}

 

 

 

Что мне с ней сделать то?) Повторюсь, в java не силен)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решено! Помог  zGosu, за что ему большое спасибо!

В скриптах SubClassKills нужно было поменять:

if (!Config.SKILL_CHECK_ENABLE)


{
return null;
}

if (player.canOverrideCond(PcCondOverride.SKILL_CONDITIONS) && !Config.SKILL_CHECK_GM)
{
return null;
}

final L2Skill[] certSkills = getCertSkills(player);
if (player.isSubClassActive())
{
if (certSkills != null)
{
for (L2Skill s : certSkills)
{
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " has cert skill on subclass :" + s.getName() + "(" + s.getId() + "/" + s.getLevel() + "), class:" + ClassListData.getInstance().getClass(player.getClassId()).getClassName(), 0);

if (Config.SKILL_CHECK_REMOVE)
{
player.removeSkill(s);
}
}
}
return null;
}

 

 

На это:

if (!Config.SKILL_CHECK_ENABLE)
{
return null;
}

if (player.canOverrideCond(PcCondOverride.SKILL_CONDITIONS) && !Config.SKILL_CHECK_GM)
{
return null;
}

List ID = new ArrayList<>();
// чтоб красиво было :)
for (L2SkillLearn sk : SkillTreesData.getInstance().getSubClassSkillTree().values())
{
ID.add(sk.getSkillId());
}

final L2Skill[] certSkills = getCertSkills(player);
if (player.isSubClassActive())
{
if (certSkills != null)
{
for (L2Skill s : certSkills)
{
boolean subSkill = false;
for (int i = 0; i < SkillTreesData.getInstance().getSubClassSkillTree().size(); i++)
{
if (skill.getId() == ID.get(i))
{
subSkill = true;
break;
}
}

if (!subSkill)
{
Util.handleIllegalPlayerAction(player, "Player " + player.getName() + " has cert skill on subclass :" + s.getName() + "(" + s.getId() + "/" + s.getLevel() + "), class:" + ClassListData.getInstance().getClass(player.getClassId()).getClassName(), 0);

if (Config.SKILL_CHECK_REMOVE)
{
player.removeSkill(s);
}
}
}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...