Ищу исполнителя [вывод информации в доп. окно]

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

gpz

Путник
Участник
Сообщения
18
Розыгрыши
0
Репутация
0
Реакции
2
Баллы
75
Все изображения и файлы загружайте только на наш сервер!
Добрый вечер!
Ищу человека, который реализует следующую деталь : дополнительное окно, в котором указано описание скила (из skillName.dat), предметы для его изучения (из skillTree) и удаляемые умения (из skillTree).
Пример :

Клиент - Salvation.
Нужна работа по клиент-стороне, по серверной части человек есть.

Связь через форум или скайп p1pkader19
 

А пробовали через обычное окно изучения скила? Оно же там в годе как раз удаляло скилы и давало взамен. Судя по полям - оно и итемы забирать умеет и все, что нужно есть,
Единственное, что в сервер сайде - добавлять игроку как неизученный скилл
1711748080606.png

Java:
public class ExAcquireSkillInfo extends ServerPacket
{
    private final int _id;
    private final int _level;
    private final int _dualClassLevel;
    private final long _spCost;
    private final int _minLevel;
    private final Set<ItemHolder> _itemReq;
    private final List<Skill> _skillRem = new LinkedList<>();
    
    /**
     * Special constructor for Alternate Skill Learning system.<br>
     * Sets a custom amount of SP.
     * @param player
     * @param skillLearn the skill learn.
     */
    public ExAcquireSkillInfo(Player player, SkillLearn skillLearn)
    {
        _id = skillLearn.getSkillId();
        _level = skillLearn.getSkillLevel();
        _dualClassLevel = skillLearn.getDualClassLevel();
        _spCost = skillLearn.getLevelUpSp();
        _minLevel = skillLearn.getGetLevel();
        _itemReq = skillLearn.getRequiredItems();
        for (int id : skillLearn.getRemoveSkills())
        {
            final Skill removeSkill = player.getKnownSkill(id);
            if (removeSkill != null)
            {
                _skillRem.add(removeSkill);
            }
        }
    }
    
    @Override
    public void write()
    {
        ServerPackets.EX_ACQUIRE_SKILL_INFO.writeId(this);
        writeInt(_id);
        writeInt(_level);
        writeLong(_spCost);
        writeShort(_minLevel);
        writeShort(_dualClassLevel);
        writeInt(_itemReq.size());
        for (ItemHolder holder : _itemReq)
        {
            writeInt(holder.getId());
            writeLong(holder.getCount());
        }
        writeInt(_skillRem.size());
        for (Skill skill : _skillRem)
        {
            writeInt(skill.getId());
            writeInt(skill.getLevel());
        }
    }
}
 
Последнее редактирование:
Ну ему вроде все равно придется как-то вызывать для начала это окно в интрефейсе - пакет с сервера, если я не ошибаюсь, просто его заполняет, но не вызывает.
 
Ну ему вроде все равно придется как-то вызывать для начала это окно в интрефейсе - пакет с сервера, если я не ошибаюсь, просто его заполняет, но не вызывает.
Ну если его устраивает случай - сначала добавить скил в изучаемые для чара, а потом игроку просто прилетит апдейт, что надо скил выучить и он откроет умения и увидит, что в learning есть то что ему нужно и кликнет. А там уже пакет с инфой придёт.
В таком сценарии, ему клиент правки не нужны вообще
 
Не совсем подходит вариант через SkillList, потому что умения не из классовых SkillTree, а изучаются отдельно от них(.

А можно вывести эту же информацию (из skillname.dat) в community board? Прямо из клиента?
 
Не совсем подходит вариант через SkillList, потому что умения не из классовых SkillTree, а изучаются отдельно от них(.

А можно вывести эту же информацию (из skillname.dat) в community board? Прямо из клиента?
С dat вроде нет, там только какие-то id итемов можно вставлять, чтобы подтягивалось имя и мб что-то еще.
Если у вас есть разраб, как вы пишите - то пусть добавит поле описания для скилов(в xml). И где вам нужно будет, то в КБ подтягивать все из датапака. Чтобы показать в кб никакие правки в клиенте не нужны.
Ну а по хорошему - это все делается как отдельный мод c xml конфигом, где можно вписывать что угодно и как нужно. Полагаю, если вы так хотите "продавать" скилл, то у вас уже что-то подобное есть, думаю не проблема туда добавить что нужно
Конечно же отдельным окном все это можно сделать как вы и хотели, но стоит ли игра свеч - хз.

пакет с сервера, если я не ошибаюсь, просто его заполняет, но не вызывает.
Ну и если это окно не используется(типа хф на клиенте сальвы), то в интерфейсе можно отвязать его от проверок, на открытое окно скилов и вызывать сразу ппакетом. Если внешне окно подходит, то это самый малокровный путь через интерфейс
 
Последнее редактирование:
С dat вроде нет, там только какие-то id итемов можно вставлять, чтобы подтягивалось имя и мб что-то еще.
Если у вас есть разраб, как вы пишите - то пусть добавит поле описания для скилов(в xml). И где вам нужно будет, то в КБ подтягивать все из датапака. Чтобы показать в кб никакие правки в клиенте не нужны.
Ну а по хорошему - это все делается как отдельный мод c xml конфигом, где можно вписывать что угодно и как нужно. Полагаю, если вы так хотите "продавать" скилл, то у вас уже что-то подобное есть, думаю не проблема туда добавить что нужно
Конечно же отдельным окном все это можно сделать как вы и хотели, но стоит ли игра свеч - хз.


Ну и если это окно не используется(типа хф на клиенте сальвы), то в интерфейсе можно отвязать его от проверок, на открытое окно скилов и вызывать сразу ппакетом. Если внешне окно подходит, то это самый малокровный путь через интерфейс

Да, это хф на клиенте сальвы, Етернити.

Если вы имеете в виду окно чата (обыкновенное) - да, оно подходит.
 
В SkillLearnWnd.uc в interface.u убрать/закомментить/обработать_для_особых случаев след код:

Код:
if (!GetWindowHandle("MagicSkillWnd").IsShowWindow() || !MagicSkillWndScript.isSkillLearnTab())
    {
        Me.HideWindow();
    }

И будет чисто по пакету открываться. Но кажется окно по умолчанию - не показывает фул список требуемых итемов, а ток последний. Можно сказать - только один

1711794586264.png

Список предметов там тоже пробрасывается насквозь. Ток в UI по дефолту - 1 итем. Чтобы все показать, нужно что-то типа:
Код:
if (RequiredItemTotalCnt > 0)
{
ParseInt(param, "requiredItemID1", requiredItemID);
ParseInt(param, "requiredItemCnt1", requiredItemCnt);
strIconName = class'UIDATA_ITEM'.static.GetItemName(GetItemID(requiredItemID)) $ "x" $string(requiredItemCnt);
for (i = 2; i <= RequiredItemTotalCnt; ++i)
    {
ParseInt(param, "requiredItemID"$i, requiredItemID);
ParseInt(param, "requiredItemCnt"$i, requiredItemCnt);
strIconName = strIconName $ ", " $ class'UIDATA_ITEM'.static.GetItemName(GetItemID(requiredItemID)) $ "x" $string(requiredItemCnt);
    }
    txtNeedItemName.SetText(strIconName);
}

1711796002559.png

А дальше уже все обработки в ядре, на то можно чару учить, нельзя учить и т.д. Ну и так чтобы дыр не наделать для изучения скиллов. А то есть любители адриком побаловаться.
Дальше наши полномочия все) Если максимально - дешего по клиенту делать, то примерно так
 
Последнее редактирование:
Спасибо всем за ответы, путём разных идей нашли подходящее решение без клиент модификации, тему можно закрыть.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу