[p 110] NpcInfo speed_multiplier not updating

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

ale

Единомышленник
Участник
Сообщения
57
Розыгрыши
0
Решения
1
Репутация
15
Реакции
9
Баллы
150
Хроники
  1. Grand Cursade
Исходники
Присутствуют
Сборка
L2j
Hello, I'm using client protocol 110 Grand Crusade
When a npc is slowed, it's supposed to send new NpcInfo packet with updated speed multipliers, but this doesn't update the visual properly.
If I teleport away and teleport back to the npc, it works, because it will be the first NpcInfo packet I receive.
Is there something I should do before sending the new NpcInfo with new speed multipliers?

[RU]
Здравствуйте, я использую клиентский протокол 110 Grand Crusade.
Когда npc замедляется, он должен отправлять пакет NpcInfo с обновлёнными множителями скорости, но визуально это корректно не отображается.
Если я телепортируюсь подальше и возвращаюсь обратно к npc, всё работает, потому что это будет первый пакет NpcInfo, который я получаю.
Есть ли что-то, что нужно сделать перед отправкой нового NpcInfo с новыми множителями скорости?
 
Решение
Отправлять пакет EX_NPC_INFO_SPEED
Java:
public enum NpcInfoSpeed implements IUpdateTypeComponent
{
    MOVE_SPEED_MUL,
    ATTACK_SPEED_MUL,
    UNK_3,
    UNK_4;

    @Override
    public int getMask()
    {
        return ordinal();
    }
}
Java:
    @Override
    protected void writeImpl()
    {
        // writeId(ServerPackets.EX_NPC_INFO_SPEED);
        writeD(_objectId);
        writeH(4); // NpcInfoSpeed.values().length
        writeB(_flags);

        if (containsMask(NpcInfoSpeed.MOVE_SPEED_MUL))
            writeCutF(_moveSpeedMul);

        if (containsMask(NpcInfoSpeed.ATTACK_SPEED_MUL))
            writeCutF(_attackSpeedMul);

        if (containsMask(NpcInfoSpeed.UNK_3)) // casting speed mod?
            writeH(0)...
Ну обновляй через ExNpcInfoSpeed
 
  • Мне нравится
Реакции: ale

    ale

    Баллов: 1
    help fixing packet
Отправлять пакет EX_NPC_INFO_SPEED
Java:
public enum NpcInfoSpeed implements IUpdateTypeComponent
{
    MOVE_SPEED_MUL,
    ATTACK_SPEED_MUL,
    UNK_3,
    UNK_4;

    @Override
    public int getMask()
    {
        return ordinal();
    }
}
Java:
    @Override
    protected void writeImpl()
    {
        // writeId(ServerPackets.EX_NPC_INFO_SPEED);
        writeD(_objectId);
        writeH(4); // NpcInfoSpeed.values().length
        writeB(_flags);

        if (containsMask(NpcInfoSpeed.MOVE_SPEED_MUL))
            writeCutF(_moveSpeedMul);

        if (containsMask(NpcInfoSpeed.ATTACK_SPEED_MUL))
            writeCutF(_attackSpeedMul);

        if (containsMask(NpcInfoSpeed.UNK_3)) // casting speed mod?
            writeH(0);

        if (containsMask(NpcInfoSpeed.UNK_4)) // attack speed mod?
            writeH(0);
    }
 
  • Мне нравится
Реакции: ale

    ale

    Баллов: 2
    help fixing packet
Решение
Thank you very much, I will try this! (for this packet what are the _flags ?)
Большое спасибо, я попробую это! (Какие _flags используются для этого пакета?)
 
  • Мне нравится
Реакции: ale
Отправлять пакет EX_NPC_INFO_SPEED
Java:
public enum NpcInfoSpeed implements IUpdateTypeComponent
{
    MOVE_SPEED_MUL,
    ATTACK_SPEED_MUL,
    UNK_3,
    UNK_4;

    @Override
    public int getMask()
    {
        return ordinal();
    }
}
Java:
    @Override
    protected void writeImpl()
    {
        // writeId(ServerPackets.EX_NPC_INFO_SPEED);
        writeD(_objectId);
        writeH(4); // NpcInfoSpeed.values().length
        writeB(_flags);

        if (containsMask(NpcInfoSpeed.MOVE_SPEED_MUL))
            writeCutF(_moveSpeedMul);

        if (containsMask(NpcInfoSpeed.ATTACK_SPEED_MUL))
            writeCutF(_attackSpeedMul);

        if (containsMask(NpcInfoSpeed.UNK_3)) // casting speed mod?
            writeH(0);

        if (containsMask(NpcInfoSpeed.UNK_4)) // attack speed mod?
            writeH(0);
    }
Ужас :eek:

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