Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Работа над Goddess of Destruction (part 7)
i have problem with new enchant system in IO

i use that patch from packet but in game no work
Bonux Написал:
Код:
package l2s.gameserver.network.l2.s2c;

import java.util.ArrayList;
import java.util.List;

import l2s.gameserver.data.xml.holder.SkillHolder;
import l2s.gameserver.model.Skill;
import l2s.gameserver.utils.SkillUtils;

public class ExEnchantSkillInfoPacket extends L2GameServerPacket
{
    private List<Integer> _routes;

    private int _id, _level, _canAdd, canDecrease;

    public ExEnchantSkillInfoPacket(int id, int level)
    {
        _routes = new ArrayList<Integer>();
        _id = id;
        _level = level;

        // skill already enchanted?
        if(SkillUtils.isEnchantedSkill(_level))
        {
            // get detail for next level
            int skillLevel = SkillUtils.getSkillLevelFromMask(_level);
            int subSkillLevel = SkillUtils.getSubSkillLevelFromMask(_level) + 1;
            int skillLevelMask = SkillUtils.getSkillLevelMask(skillLevel, subSkillLevel);
            Skill skill = SkillHolder.getInstance().getSkill(_id, skillLevelMask);
            // if it exists add it
            if(skill != null)
            {
                addEnchantSkillDetail(skill.getLevel());
                _canAdd = 1;
            }

            for(Skill temp : SkillUtils.getSkillsForChangeEnchant(_id, _level))
                addEnchantSkillDetail(temp.getLevel());
        }
        else
        {
            // not already enchanted
            for(Skill temp : SkillUtils.getSkillsForFirstEnchant(_id, _level))
            {
                addEnchantSkillDetail(temp.getLevel());
                _canAdd = 1;
            }
        }
    }

    public void addEnchantSkillDetail(int level)
    {
        _routes.add(level);
    }

    @Override
    protected void writeImpl()
    {
        writeD(_id);
        writeD(_level);
        writeD(_canAdd); // can add enchant
        writeD(canDecrease); // can decrease enchant

        writeD(_routes.size());
        for(Integer route : _routes)
            writeD(route);
    }
}

all have black icon and no see icons from routes

my code

ExEnchantSkillInfoDetail
Цитата:
Код:
package zgts.gameserver.network.l2.s2c;

import zgts.gameserver.data.xml.holder.SkillHolder;
import zgts.gameserver.model.Skill.EnchantType;

public class ExEnchantSkillInfoDetailPacket extends L2GameServerPacket
{
    private final int _unk = 0;
    private final EnchantType _type;
    private final int _skillId;
    private final int _skillLvl;
    private final int _maxlvl;
    private final int _sp;
    private final int _chance;
    private final int _bookId;
    private final int _bookCount;
    private final int _adenaCount;
    
    public ExEnchantSkillInfoDetailPacket(final EnchantType type, final int skillId, final int skillLvl, final int sp, final int chance, final int bookId, final int bookCount, final int adenaCount)
    {
        _type = type;
        _skillId = skillId;
        _skillLvl = skillLvl;
        _maxlvl = SkillHolder.getInstance().getMaxLevel(skillId);
        _sp = sp;
        _chance = chance;
        _bookId = bookId;
        _bookCount = bookCount;
        _adenaCount = adenaCount;
    }
    
    @Override
    protected void writeImpl()
    {
        writeD(_type.ordinal());
        writeD(_skillId);
        // writeH(_maxlvl);
        writeD(_skillLvl); // TODO TEST
        writeQ(_sp);
        writeD(_chance);
        writeD(0x02);
        writeD(57);
        writeD(_adenaCount);
        writeD(_bookId);
        writeD(_bookCount);
    }
}

ExEnchantSkillInfo
Цитата:
Код:
package zgts.gameserver.network.l2.s2c;

import java.util.ArrayList;
import java.util.List;

import zgts.gameserver.data.xml.holder.SkillHolder;
import zgts.gameserver.model.Skill;
import zgts.gameserver.utils.SkillUtils;

public class ExEnchantSkillInfoPacket extends L2GameServerPacket
{
    private final List<Integer> _routes = new ArrayList<>();
    private final int _id;
    private final int _level;
    private final int _maxlvl;
    private int _canAdd;
    private int canDecrease;
    
    public ExEnchantSkillInfoPacket(final int id, final int level)
    {
        _id = id;
        _level = level;
        _maxlvl = SkillHolder.getInstance().getMaxLevel(_id);
        
        if (SkillUtils.isEnchantedSkill(_level))
        {
            // canDecrease = 1;
            // Get detail for next level
            int skillLevel = SkillUtils.getSkillLevelFromMask(_level);
            int subSkillLevel = SkillUtils.getSubSkillLevelFromMask(_level) + 1;
            int skillLevelMask = SkillUtils.getSkillLevelMask(skillLevel, subSkillLevel);
            final Skill skill = SkillHolder.getInstance().getSkill(_id, skillLevelMask);
            if (skill != null)
            {
                addEnchantSkillDetail(skill.getLevel());
                _canAdd = 1;
            }
            for (final Skill temp : SkillUtils.getSkillsForChangeEnchant(_id, _level))
            {
                addEnchantSkillDetail(temp.getLevel());
            }
        }
        else
        {
            for (final Skill temp2 : SkillUtils.getSkillsForFirstEnchant(_id))
            {
                addEnchantSkillDetail(temp2.getLevel());
                _canAdd = 1;
            }
        }
    }
    
    public void addEnchantSkillDetail(final int level)
    {
        _routes.add(level);
    }
    
    @Override
    protected void writeImpl()
    {
        writeD(_id);
        writeD(_level);
        writeD(_canAdd);
        writeD(canDecrease);
        writeD(_routes.size());
        for (Integer route : _routes)
        {
            writeH(route);
        }
    }
}

that Vars in SkillUtils
int skillLevel = SkillUtils.getSkillLevelFromMask(_level);
int subSkillLevel = SkillUtils.getSubSkillLevelFromMask(_level) + 1;
int skillLevelMask = SkillUtils.getSkillLevelMask(skillLevel, subSkillLevel);

Цитата:
Код:
    public static int getSkillLevelFromMask(final int level)
    {
        return level;
        
    }
    
    public static int getSkillLevelMask(int level, final int level2)
    {
        if (level < 100)
        {
            return level;
        }
        else
        {
            level = level2 >> 16;
            return level;
        }
    }
    
    public static int getSubSkillLevelFromMask(final int level)
    {
        return level;
        
    }

please help me T.T

sorry for my Bad Enghlis
Ответ
12345
Ответ
smeli Написал:непомогло, расса ертхеа, класс 185 последоиватель сайхи - кнопки нету

класс 189 - громовержец сайхи тоже непомог

ExAlchemySkillList отправить не пробовал?
и чтобы в скиллах изученных и отправленных этим пакетом был скилл 17943
[SRC="java"]
package l2p.gameserver.network.serverpackets.alchemy;

import java.util.ArrayList;
import java.util.List;

import l2p.gameserver.data.holder.SkillAcquireHolder;
import l2p.gameserver.enums.AcquireType;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.skills.SkillLearn;
import l2p.gameserver.network.serverpackets.L2GameServerPacket;
import l2p.gameserver.network.serverpackets.components.Opcode;

public class ExAlchemySkillList extends L2GameServerPacket
{
private final List<SkillLearn> _skills = new ArrayList<>();

public ExAlchemySkillList(Player player)
{
for (SkillLearn skill : SkillAcquireHolder.getInstance().getAllSkillLearns(AcquireType.ALCHEMY, 0))
if (player.getSkillLevel(skill.getId()) == skill.getLevel())
_skills.add(skill);
}

@Override
protected void writeImpl()
{
writeEx(Opcode.ExAlchemySkillList);
writeD(_skills.size());

for (SkillLearn skill : _skills)
{
writeD(skill.getId());
writeD(skill.getLevel());
writeQ(0x00); // ?
writeC(skill.getId() != 17943 ? 1 : 0);
}
}
}[/SRC]
Ответ
спасибо, попробую
--

непомогло, отправил такой пакет после отправки скиллист
fe 74 01 17 46 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
Ответ
smeli Написал:спасибо, попробую
--

непомогло, отправил такой пакет после отправки скиллист
fe 74 01 17 46 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00

Отсылай при открытии инвентаря
Ответ
да, и на основном классе ли проверяешь?
ибо кнопку показывает только на основе и все
Ответ
в ц1 только основы и есть, сабы ето ц3+
Ответ
Ув. пользователи, подскажите, какой ивент триггер(огонь в пещере) отсылается при входе в инсту Антараса(Рыцари Балтуса)?
Ответ
Есть ли у кого-нибудь оригинальный патчик 558 протокола(ласт апдейт Lindvior)?
Ответ
GenCloud Написал:Есть ли у кого-нибудь оригинальный патчик 558 протокола(ласт апдейт Lindvior)?

А чем плох тот, что в хранилище лежит?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,844 10-01-2021, 02:40 PM
Последний пост: tenor
  Работа с камерой и Энтер чат FriendlyGhost 0 1,483 04-29-2018, 06:07 AM
Последний пост: FriendlyGhost
  Goddess of Destruction ( новая ветка от NcSoft ) Bacek 180 63,649 08-22-2017, 12:32 PM
Последний пост: BadStealth
  EmuRT Gracia part 2 ? knaif 3 1,876 02-08-2016, 01:19 PM
Последний пост: knaif
  Gracia Part 1 от l2emu исходы TFH 6 2,306 10-05-2015, 07:53 PM
Последний пост: G1ta0
  Ищу исходы L2-Dream gracia part 2 knaif 1 1,667 10-05-2015, 07:51 PM
Последний пост: G1ta0
  Оплачиваемая работа Grek1993 1 1,538 08-01-2015, 11:29 AM
Последний пост: ztaecz
  Работа над Goddess of Destruction (part 6) Ashe 1,274 500,681 07-11-2015, 08:00 PM
Последний пост: n3k0nation
  Работа с мультиселлом Evencelance 11 2,958 09-19-2014, 12:43 PM
Последний пост: Evencelance
  Работа над Goddess of Destruction (part 5) Ozzy 980 359,156 10-09-2013, 09:13 AM
Последний пост: Ashe

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


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