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