Hide skill

Статус
В этой теме нельзя размещать новые ответы.

Horyon

Пляшущий с бубном
Участник
Сообщения
187
Розыгрыши
0
Решения
4
Репутация
53
Реакции
68
Баллы
273
Хроники
  1. Shadow of the Kamael
Исходники
Присутствуют
Сборка
L2jMobius Master class ch2
Hi guys... there is a way to hide a learned skill?

I need to give a status to players but dont want that the skill show in passives.

Ty in advance!!
 
Решение
Hi guys... there is a way to hide a learned skill?

I need to give a status to players but dont want that the skill show in passives.

Ty in advance!!
Example:
Java:
package org.l2jmobius.gameserver.network.serverpackets;

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

import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.network.OutgoingPackets;

public class SkillList implements IClientOutgoingPacket
{
    // list ids skills to hide
    private static final int[] HIDE_IDS = {1040,1204};

    private final List<Skill> _skills = new ArrayList<>();
    private int _lastLearnedSkillId = 0;
    
    static class Skill...
dont add it to skillgrp
 
try set in SkillGrp.dat IconType = 50 and test
по идее можно глянуть те скиллы, которые клиент прячет в окне скиллов, хотя они у игрока есть и аналогично по параметрам сделать.
это скиллы системы способностей к примеру.

правда в клиенте вполне может быть тупо хардкод на определенные диапазоны для скрытия.
 
Объективности ради, тут действительно идёт упоминание 50-го типа, как исключающего.

Но стоит уточнить что именно пассивных умений, активные вообще не имеют никаких спец-кейзов в uc. Так что либо допил в интерфейсе, либо просто удалять скилл с skillgrp и терять его навсегда и везде.
 
В целом можно конечно и на стороне сервера еще скрывать некоторые скиллы при отправке списка скиллов в SkillList, заведя для этого отдельный параметр и фильтруя по нему в пакете.
Ну типа так формируя список для отправки
Java:
_skills = player.getAllSkills().stream().filter(skill -> !skill.isHideInSkillList()).collect(Collectors.toList());
 
Посмотри что проверяет isActiveSkill, я не смотрел что под капотом, но сомневаюсь что 50 тип иконки входит в список активных умений
 
I try lf this lines... "Info.IconType" dont exist in mobius source... what is the file u find it? maybe have write diff cause its not PTS but java.
 
My friend i mean this one default_npc,



I know the file... its open for 2 days in my pc... i want to know about this piece of code.

I think dont exist this 50 icon type variable for get it invisible in Alt K in mobius source... i try lf it and get 0 returns
 
Код:
skill_begin skill_id=1 skill_level=1 skill_sublevel=0 operate_type=0 resist_cast=0 MagicType=default mp_consume=42 cast_range=40 cast_style=9 hit_time=1.733 cool_time=0.5 reuse_delay=3.0 effect_point=-213 is_magic=0 origin_skill=0 is_double=0 animation={[Mix05]} skill_visual_effect={[1]} icon=[icon.skill0001] icon_panel=[None] debuff=0 icon_type=0 enchant_skill_level=0 enchant_icon=[None] hp_consume= 0 rumble_self=9 rumble_target=11 level_hide=0 dp_consume=0 energy_consume=0 trait_type=0 abnormal_time=0 target_type=0 affect_scope=1 dbdelete=1 skill_end

This is a line in skillgrp...

Java:
if(Info.IconType != 50)
{
m_Item_p[getItemTypeIndex(Info.IconType)]. AddItem(
}

And this lines in code...

I dont understand where i write so wrong to u dont understand

But... in the end i will not use this anymore... but i appreciate the help!!
 
Hi guys... there is a way to hide a learned skill?

I need to give a status to players but dont want that the skill show in passives.

Ty in advance!!
Example:
Java:
package org.l2jmobius.gameserver.network.serverpackets;

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

import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.network.OutgoingPackets;

public class SkillList implements IClientOutgoingPacket
{
    // list ids skills to hide
    private static final int[] HIDE_IDS = {1040,1204};

    private final List<Skill> _skills = new ArrayList<>();
    private int _lastLearnedSkillId = 0;
    
    static class Skill
    {
        public int id;
        public int reuseDelayGroup;
        public int level;
        public int subLevel;
        public boolean passive;
        public boolean disabled;
        public boolean enchanted;
        
        Skill(int pId, int pReuseDelayGroup, int pLevel, int pSubLevel, boolean pPassive, boolean pDisabled, boolean pEnchanted)
        {
            id = pId;
            reuseDelayGroup = pReuseDelayGroup;
            level = pLevel;
            subLevel = pSubLevel;
            passive = pPassive;
            disabled = pDisabled;
            enchanted = pEnchanted;
        }
    }
    
    public void addSkill(int id, int reuseDelayGroup, int level, int subLevel, boolean passive, boolean disabled, boolean enchanted)
    {
        for(int i : HIDE_IDS)
            if(i == id)
                return;
        _skills.add(new Skill(id, reuseDelayGroup, level, subLevel, passive, disabled, enchanted));
    }
    
    public void setLastLearnedSkillId(int lastLearnedSkillId)
    {
        _lastLearnedSkillId = lastLearnedSkillId;
    }
    
    @Override
    public boolean write(PacketWriter packet)
    {
        OutgoingPackets.SKILL_LIST.writeId(packet);
        _skills.sort(Comparator.comparing(s -> SkillData.getInstance().getSkill(s.id, s.level, s.subLevel).isToggle() ? 1 : 0));
        packet.writeD(_skills.size());
        for (Skill temp : _skills)
        {
            packet.writeD(temp.passive ? 1 : 0);
            packet.writeH(temp.level);
            packet.writeH(temp.subLevel);
            packet.writeD(temp.id);
            packet.writeD(temp.reuseDelayGroup); // GOD ReuseDelayShareGroupID
            packet.writeC(temp.disabled ? 1 : 0); // iSkillDisabled
            packet.writeC(temp.enchanted ? 1 : 0); // CanEnchant
        }
        packet.writeD(_lastLearnedSkillId);
        return true;
    }
}
 
Реакции: Rolo
Решение
Will test it ty Tatao


Work 100%... skill do not show in Alt+K.

But in the other window show normaly.

Ty Tatao
 
Статус
В этой теме нельзя размещать новые ответы.