Комбо скилы

Gigi

Выдающийся
Местный
Сообщения
248
Розыгрыши
0
Репутация
173
Реакции
72
Баллы
1 373
Добрый день всем пользователям форума, столкнулся с проблемой реализации комбо скилов на хрониках GC. Разговор в частности о зарядке генераторов у линдвиора.


Сам скилл и зарядка работает если сделать макрос на скил и использовать через макрос (сам скил от гвардов, возможность зарядки тоже накладывается на генератор) но сама иконка скила на экран не выводится. Исходя из этого в голову лезет только одна идея что это отдельный пакет.
Может кто сталкивался с этим чудом и может подсказать как решить данную проблему.

За ранее большое спасибо.
 
А оыбчные комбы от дебаффов профессий работают? ну т.е. кнопка показывается когда кладешь на цель дебафф активирующий комбо?
Хз как в ГК, но в той же Артее и ниже принцип показа комбо кнопки там такой же как и для кнопки заряда генератора.
 
Нет, вообще не выводит иконку, то есть сам дебаф на генереторе висит который кастуют гварды генераторов (скилл 15605), после чего по идее можно уже кастовать скилл 15606 и зарядить генератор.

я сделал так, создал енум для скилов, типа

public enum SkillComboType
{
NO_COMBO(0),
COMBO_FLY_UP(365),
COMBO_KNOCK_DOWN(367),
COMBO_TRASKEN(424),
CHARGED_COMBO(499);

private final int _id;

SkillComboType(int id)
{
_id = id;
}

public int getId()
{
return _id;
}
}

в древе скилов добавил всем 4 профам этот скилл (скил добовляется но он не видем, так и должно быть)
сделал определения эффекта в скилах и добавил в xml 15605 (<comboType>CHARGED_COMBO</comboType>) но результат ноль.
 
Последнее редактирование:
Не верно, такого параметра быть не должно, для этого существует оф параметр alter_skill_list
 
А пакет ExAbnormalStatusUpdateFromTarget полностью реализован?
 
Ну на этои этапе не главное как именно определить название эффекта по ПТС или как то иначе

а на счёт пакеткы, на пример у феников это выглядит так

@Override
protected final void writeImpl()
{
writeD(_objectId);
writeH(_effects.size());
for(Effect temp : _effects)
{
writeD(temp.skillId);
writeH(temp.dat);
writeH(temp.comboId); // combo type ???
writeH(temp.duration);
writeD(temp.effectorObjectId); // Buffer OID
}
}

у меня чуть подругому

public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_ABNORMAL_STATUS_UPDATE_FROM_TARGET.writeId(packet);

packet.writeD(_character.getObjectId());
packet.writeH(_effects.size());

for (Effect info : _effects)
{
packet.writeD(info._skillId);
packet.writeH(info._level);
packet.writeH(info._subLevel);
packet.writeH(info._abnormalType);
writeOptionalD(packet, info._duration);
packet.writeD(info._caster);
}
return true;
}

Главное сделать вывод иконки примерно так
Код:
public void addIcon(ExAbnormalStatusUpdateFromTargetPacket abnormalStatus)
   {
       if(!isActive() || isHidden())
           return;
       int duration = (_skill.isToggle() || _template.isHideTime()) ? AbnormalStatusUpdatePacket.INFINITIVE_EFFECT : getTimeLeft();
       abnormalStatus.addEffect(_effector.getObjectId(), getDisplayId(), getDisplayLevel(), duration, getSkill().getComboTypeFromCharStatus(getEffector(), getEffected()).getId());
   }