Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Изучение скилов
#1
Подскажите в каком файле поправить изучение скилов а то ситуация такая открываеш вкладку изучить скил выбираеш скил для учения изучаеш один раз а он какбы остается не изучиным повторно изучить до следующего уровня невозможно пока не закроеш полностью вкладку со скилами такое ощущение что оно не проверяет и не обновляет информацию об изучение сразу после изученияSad (сборка IDEASERV GOD 347 )
Ответ
#2
Нет посылки пакета на обновление списка скилов.
sendPacket(new SkillList(this));
Ответ
#3
iqman Написал:Нет посылки пакета на обновление списка скилов.
sendPacket(new SkillList(this));
в каком файле и где именно в ядре или дате я недавно начал с серверами разбиратся еще не весь скрипт разобрал что где к чему
Ответ
#4
Ядро, смотрите с пакета...RequestAquireSkill по окончанию обучение отсылайте тот пакет который я скинул ранее.
Не знаете как и что? Обратитесь к разработчикам.
Ответ
#5
ТС не понимает о чем идет речь видимо.
Подобнее - нужно посмотреть от входящего пакета на изучение скилов - и там найти и исправить.
А так конечно обратитесь к разработчикам сборки - чтобы дали обновление - возможно оно уже будет работать там, либо чтобы исправили.
Ответ
#6
Visor Написал:ТС не понимает о чем идет речь видимо.
Подобнее - нужно посмотреть от входящего пакета на изучение скилов - и там найти и исправить.
А так конечно обратитесь к разработчикам сборки - чтобы дали обновление - возможно оно уже будет работать там, либо чтобы исправили.

К сожелению разработчики остановили разработку ГодSad
Ответ
#7
Тогда берите другую сборку. Я так понимаю что вы самостоятельно не справитесь с разработкой - не говоря уже об этом вопросе - как протянуть изучение от пакета.
Ответ
#8
ммм... ладно тогда как и везде толком ни кто неможет обяснить Новичкам в этом деле буду разбирать проверю то что советывал iqman ,легче конешно Visor казать человеку (Тогда берите другую сборку. Я так понимаю что вы самостоятельно не справитесь ... ну тупо пофлудить в теме) вмето того чтобы чтото дельное посоветывать .ВСЕМ плюсик + хоть за маленький толчок в нужную сторону .
Ответ
#9
в если основа феня или овер то в классе Player ищи метод на изучение скилов и посылай сразу 2 пакете а не 1, прилизитльно можно так сделать:
Код:
public void sendSkillList() {
        sendPacket(new SkillList(this));
        sendPacket(new ExAcquirableSkillListByClass(this));
    }
а если лыжа, то вроде смотри класс L2PcInstance и дальше всё тоже самое
Ответ
#10
все исправил в файле Player между строкой 4340 и 4341 дописал
PHP код:
<?php 
sendPacket
(new SkillList(this));
sendPacket(new ExAcquirableSkillListByClass(this));
получилосю
PHP код:
<?php 
// Add or update a L2Player skill in the character_skills table of the database
if(store)
storeSkill(newSkill, oldSkill);
sendPacket(new SkillList(this));
sendPacket(new ExAcquirableSkillListByClass(this));
return
oldSkill;
}

Добавлено через 4 минуты
но обнаружил еще одну проблему админским чаром все скилы учатся норм а вот простым нажимаеш наскил чтобы изучить не появляется окно описание скила где надо нажать изучит а когда подойдеш к любому нпц и вступиш с ним в диалог то всеном можно изучать как убрать влияние НПС на изучение скилов ведь в ГОД изучаетсяя без НПС

Добавлено через 2 часа 46 минут
я так понял здесь надо править

PHP код:
<?php 
public class RequestAquireSkill extends L2GameClientPacket
{
private
AcquireType _type;
private
int _id, _level, _subUnit;

@
Override
protected void readImpl()
{
_id = readD();
_level = readD();
_type = ArrayUtils.valid(AcquireType.VALUES, readD());
if(
_type == AcquireType.SUB_UNIT)
_subUnit = readD();
}

@
Override
protected void runImpl()
{
Player player = getClient().getActiveChar();
if(
player == null || player.getTransformation() != 0 || _type == null)
return;

NpcInstance trainer = player.getLastNpc();
if((
trainer == null || player.getDistance(trainer.getX(), trainer.getY()) > Creature.INTERACTION_DISTANCE) && !player.isGM())
return;

Skill skill = SkillTable.getInstance().getInfo(_id, _level);
if(
skill == null)
return;

if(!
SkillAcquireHolder.getInstance().isSkillPossible(player, skill, _type))
return;

SkillLearn skillLearn = SkillAcquireHolder.getInstance().getSkillLearn(player, _id, _level, _type);

if(
skillLearn == null)
return;

if(!
checkSpellbook(player, skillLearn))
{
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_THE_NECESSARY_MATERIALS_OR_PREREQUISITES_TO_LEARN_THIS_SKILL);
return;
}

switch (
_type)
{
case
NORMAL:
learnSimpleNextLevel(player, skillLearn, skill);
if(
trainer != null)
trainer.showSkillList(player);
break;
case
TRANSFORMATION:
learnSimpleNextLevel(player, skillLearn, skill);
if(
trainer != null)
trainer.showTransformationSkillList(player, AcquireType.TRANSFORMATION);
break;
case
COLLECTION:
learnSimpleNextLevel(player, skillLearn, skill);
if(
trainer != null)
NpcInstance.showCollectionSkillList(player);
break;
case
TRANSFER_CARDINAL:
case
TRANSFER_EVA_SAINTS:
case
TRANSFER_SHILLIEN_SAINTS:
learnSimple(player, skillLearn, skill);
if(
trainer != null)
trainer.showTransferSkillList(player);
break;
case
FISHING:
learnSimpleNextLevel(player, skillLearn, skill);
if(
trainer != null)
NpcInstance.showFishingSkillList(player);
break;
case
CLAN:
learnClanSkill(player, skillLearn, trainer, skill);
break;
case
SUB_UNIT:
learnSubUnitSkill(player, skillLearn, trainer, skill, _subUnit);
break;
case
CERTIFICATION:
if(!
player.getActiveClass().isBase())
{
player.sendPacket(SystemMsg.THIS_SKILL_CANNOT_BE_LEARNED_WHILE_IN_THE_SUBCLASS_STATE);
return;
}
learnSimpleNextLevel(player, skillLearn, skill);
if(
trainer != null)
trainer.showTransformationSkillList(player, AcquireType.CERTIFICATION);
break;
}
}

/**
* Изучение следующего возможного уровня скилла
*/
private static void learnSimpleNextLevel(Player player, SkillLearn skillLearn, Skill skill)
{
final
int skillLevel = player.getSkillLevel(skillLearn.getId(), 0);
if(
skillLevel != skillLearn.getLevel() - 1)
return;

learnSimple(player, skillLearn, skill);
}

private static
void learnSimple(Player player, SkillLearn skillLearn, Skill skill)
{
if(
player.getSp() < skillLearn.getCost())
{
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_SP_TO_LEARN_THIS_SKILL);
return;
}

if(
skillLearn.getItemId() > 0)
if(!
player.consumeItem(skillLearn.getItemId(), skillLearn.getItemCount()))
return;

player.sendPacket(new SystemMessage2(SystemMsg.YOU_HAVE_EARNED_S1_SKILL).addSkillName(skill.getId(), skill.getLevel()));

player.setSp(player.getSp() - skillLearn.getCost());
player.addSkill(skill, true);
player.sendUserInfo();
player.updateStats();

player.sendPacket(new SkillList(player));

RequestExEnchantSkill.updateSkillShortcuts(player, skill.getId(), skill.getLevel());
}

private static
void learnClanSkill(Player player, SkillLearn skillLearn, NpcInstance trainer, Skill skill)
{
if(!(
trainer instanceof VillageMasterInstance))
return;

if(!
player.isClanLeader())
{
player.sendPacket(SystemMsg.ONLY_THE_CLAN_LEADER_IS_ENABLED);
return;
}

Clan clan = player.getClan();
final
int skillLevel = clan.getSkillLevel(skillLearn.getId(), 0);
if(
skillLevel != skillLearn.getLevel() - 1) // можно выучить только следующий уровень
return;
if(
clan.getReputationScore() < skillLearn.getCost())
{
player.sendPacket(SystemMsg.THE_CLAN_REPUTATION_SCORE_IS_TOO_LOW);
return;
}

if(
skillLearn.getItemId() > 0)
if(!
player.consumeItem(skillLearn.getItemId(), skillLearn.getItemCount()))
return;

clan.incReputation(-skillLearn.getCost(), false, "AquireSkill: " + skillLearn.getId() + ", lvl " + skillLearn.getLevel());
clan.addSkill(skill, true);
clan.broadcastToOnlineMembers(new SystemMessage2(SystemMsg.THE_CLAN_SKILL_S1_HAS_BEEN_ADDED).addSkillName(skill));

NpcInstance.showClanSkillList(player);
}

private static
void learnSubUnitSkill(Player player, SkillLearn skillLearn, NpcInstance trainer, Skill skill, int id)
{
Clan clan = player.getClan();
if(
clan == null)
return;
SubUnit sub = clan.getSubUnit(id);
if(
sub == null)
return;

if((
player.getClanPrivileges() & Clan.CP_CL_TROOPS_FAME) != Clan.CP_CL_TROOPS_FAME)
{
player.sendPacket(SystemMsg.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return;
}

int lvl = sub.getSkillLevel(skillLearn.getId(), 0);
if(
lvl >= skillLearn.getLevel())
{
player.sendPacket(SystemMsg.THIS_SQUAD_SKILL_HAS_ALREADY_BEEN_ACQUIRED);
return;
}

if(
lvl != (skillLearn.getLevel() - 1))
{
player.sendPacket(SystemMsg.THE_PREVIOUS_LEVEL_SKILL_HAS_NOT_BEEN_LEARNED);
return;
}

if(
clan.getReputationScore() < skillLearn.getCost())
{
player.sendPacket(SystemMsg.THE_CLAN_REPUTATION_SCORE_IS_TOO_LOW);
return;
}

if(
skillLearn.getItemId() > 0)
if(!
player.consumeItem(skillLearn.getItemId(), skillLearn.getItemCount()))
return;

clan.incReputation(-skillLearn.getCost(), false, "AquireSkill2: " + skillLearn.getId() + ", lvl " + skillLearn.getLevel());
sub.addSkill(skill, true);
player.sendPacket(new SystemMessage2(SystemMsg.THE_CLAN_SKILL_S1_HAS_BEEN_ADDED).addSkillName(skill));

if(
trainer != null)
NpcInstance.showSubUnitSkillList(player);
}

private static
boolean checkSpellbook(Player player, SkillLearn skillLearn)
{
if(
Config.ALT_DISABLE_SPELLBOOKS)
return
true;

if(
skillLearn.getItemId() == 0)
return
true;


if(
skillLearn.isClicked())
return
false;

return
player.getInventory().getCountOf(skillLearn.getItemId()) >= skillLearn.getItemCount();
}
}
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Заточка скилов, изменения цены MBD312 0 1,970 12-26-2020, 08:00 AM
Последний пост: MBD312
  Вампирик для магических скилов Froust 3 2,600 05-24-2017, 08:01 AM
Последний пост: Emperor
  Продажа скилов или проф swyatyk 1 2,602 08-11-2015, 04:36 AM
Последний пост: kolibri
  Затемнение скилов DeveloperS 2 1,423 03-01-2015, 10:49 PM
Последний пост: Map
  Массовое уменьшение отката скилов SunWar 3 1,845 08-25-2014, 10:15 PM
Последний пост: dorocki
  Откат скилов lin 4 1,703 03-26-2014, 01:01 PM
Последний пост: lin
  Оверлорд докаст скилов - помогите настроить Munhgauzen 15 3,874 01-11-2014, 08:04 AM
Последний пост: DiagoD
  Оверлорд где искать обработку отключения TOGGLE скилов? Munhgauzen 0 911 12-22-2013, 11:19 AM
Последний пост: Munhgauzen
  Заточка скилов +15 за 1 клик OneThunder 2 4,800 11-13-2013, 03:07 PM
Последний пост: d00fy
  ХФ работа скилов Touch of Death 342, Incane Crusher 762 Munhgauzen 0 993 11-05-2013, 10:52 PM
Последний пост: Munhgauzen

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


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