Непонятное EX_SEND_UIEVENT

Bankir

Знающий
Участник
Сообщения
348
Розыгрыши
0
Решения
3
Репутация
6
Реакции
89
Баллы
443
Хроники
  1. Master Class
Исходники
Присутствуют
Сборка
L2 J
Такое дело, EX_SEND_UIEVENT-
текст _npcstringId - всегда под таймером.

Сейчас же в Ессенсе он _npcstringId - должен быть над таймром - и всорее всего во всех остальных ветках ГОД.
Окно/раполажение в самом интерфейсе, позволяеть установить как над, так и под.

Кто может сказть, если разбирался в этом вопросе, что изменилось/изменить для устновки текста над таймером.
Патч - без изменений, чистый офф патч.

EX_SEND_UIEVENT(0xFE, 0x8F), - посмотрел по интрефейс пакету, такой и остался.

Java:
package org.l2jmobius.gameserver.network.serverpackets;

import java.util.Arrays;
import java.util.List;

import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.OutgoingPackets;

public class ExSendUIEvent implements IClientOutgoingPacket
{
// UI Types
    public static final int TYPE_COUNT_DOWN = 0;
    public static final int TYPE_REMOVE = 1;
    public static final int TYPE_ISTINA = 2;
    public static final int TYPE_COUNTER = 3;
    public static final int TYPE_GP_TIMER = 4;
    public static final int TYPE_NORNIL = 5;
    public static final int TYPE_DRACO_INCUBATION_1 = 6;
    public static final int TYPE_DRACO_INCUBATION_2 = 7;
    public static final int TYPE_CLAN_PROGRESS_BAR = 8;
    
    private final int _objectId;
    private final int _type;
    private final int _countUp;
    private final int _startTime;
    private final int _startTime2;
    private final int _endTime;
    private final int _endTime2;
    private final int _npcstringId;
    private List<String> _params = null;
    
    /**
     * Remove UI
     * @param player
     */
    public ExSendUIEvent(Player player)
    {
this(player, TYPE_REMOVE, 0, 0, 0, 0, 0, -1);
    }
    
/**
     * @param player
     * @param uiType
     * @param currentPoints
     * @param maxPoints
     * @param npcString
     * @param params
     */
    public ExSendUIEvent(Player player, int uiType, int currentPoints, int maxPoints, NpcStringId npcString, String... params)
    {
this(player, uiType, -1, currentPoints, maxPoints, -1, -1, npcString.getId(), params);
    }

public ExSendUIEvent(Player player, int uiType, int countType, int time, int initialPoints, int currentPoints, int maxPoints, NpcStringId npcString, String... params)
    {
this(player, uiType, countType, time, initialPoints, maxPoints, currentPoints, npcString.getId(), params);
    }
    
/**
     * @param player
     * @param hide
     * @param countUp
     * @param startTime
     * @param endTime
     * @param text
     */
    public ExSendUIEvent(Player player, boolean hide, boolean countUp, int startTime, int endTime, String text)
    {
this(player, hide ? 1 : 0, countUp ? 1 : 0, startTime / 60, startTime % 60, endTime / 60, endTime % 60, -1, text);
    }
    
/**
     * @param player
     * @param hide
     * @param countUp
     * @param startTime
     * @param endTime
     * @param npcString
     * @param params
     */
    public ExSendUIEvent(Player player, boolean hide, boolean countUp, int startTime, int endTime, NpcStringId npcString, String... params)
    {
this(player, hide ? 1 : 0, countUp ? 1 : 0, startTime / 60, startTime % 60, endTime / 60, endTime % 60, npcString.getId(), params);
    }
    
/**
     * @param player
     * @param type
     * @param countUp
     * @param startTime
     * @param startTime2
     * @param endTime
     * @param endTime2
     * @param npcstringId
     * @param params
     */
    public ExSendUIEvent(Player player, int type, int countUp, int startTime, int startTime2, int endTime, int endTime2, int npcstringId, String... params)
    {
_objectId = player.getObjectId();
       _type = type;
       _countUp = countUp;
       _startTime = startTime;
       _startTime2 = startTime2;
       _endTime = endTime;
       _endTime2 = endTime2;
       _npcstringId = npcstringId;
       _params = Arrays.asList(params);
    }
    
@Override
    public boolean write(PacketWriter packet)
    {
OutgoingPackets.EX_SEND_UIEVENT.writeId(packet);
       packet.writeD(_objectId);
       packet.writeD(_type); // 0 = show, 1 = hide (there is 2 = pause and 3 = resume also but they don't work well you can only pause count down and you cannot resume it because resume hides the counter).
       packet.writeD(0); // unknown
       packet.writeD(0); // unknown
       packet.writeS(String.valueOf(_countUp)); // 0 = count down, 1 = count up timer always disappears 10 seconds before end
       packet.writeS(String.valueOf(_startTime));
       packet.writeS(String.valueOf(_startTime2));
       packet.writeS(String.valueOf(_endTime));
       packet.writeS(String.valueOf(_endTime2));
       packet.writeD(_npcstringId);
       if (_params != null)
       {
for (String param : _params)
          {
packet.writeS(param);
          }
       }
return true;
    }
}
 
Хз как в новых хрониках, но вот ХФ версия пакета, чтобы дополнить тебе чутка unknow.
Он в основном инициируется от NPC сервера, из скриптов.
Хз, поможет тебе это чем-то или нет)

Java:
package ru.nts.core.network.outgoing;

import ru.nts.core.network.GameClientExOutgoingPackets;
import ru.nts.core.network.IClientOutgoingPacket;
import ru.nts.core.network.PacketWriter;
import ru.nts.core.network.GameClient;

public class S_EX_SEND_UI_EVENT implements IClientOutgoingPacket {

    private final int object_id;
    private final int event_id;
    private final int ask;
    private final int reply;
    private final int fString;
    private final String strAIParam1;
    private final String strAIParam2;
    private final String strAIParam3;
    private final String strAIParam4;
    private final String strAIParam5;
    private final String[] params;

    public S_EX_SEND_UI_EVENT(int object_id, int event_id, int ask, int reply, String strAIParam1, String strAIParam2, String strAIParam3, String strAIParam4, String strAIParam5, int fString, String... params) {
        this.object_id = object_id;
        this.event_id = event_id;
        this.ask = ask;
        this.reply = reply;
        this.strAIParam1 = strAIParam1;
        this.strAIParam2 = strAIParam2;
        this.strAIParam3 = strAIParam3;
        this.strAIParam4 = strAIParam4;
        this.strAIParam5 = strAIParam5;
        this.fString = fString;
        this.params = params;
    }

    @Override
    public void write(PacketWriter packet, GameClient client) {
        GameClientExOutgoingPackets.S_EX_SEND_UI_EVENT.writeId(packet);
        packet.writeD(object_id);
        packet.writeD(event_id);
        packet.writeD(ask);
        packet.writeD(reply);
        packet.writeS(strAIParam1);
        packet.writeS(strAIParam2);
        packet.writeS(strAIParam3);
        packet.writeS(strAIParam4);
        packet.writeS(strAIParam5);
        packet.writeD(fString);
        for (int i = 0; i < 5; i++) {
            packet.writeS(params.length > i ? params[i] : "");
        }
    }
}

1753205530626.webp
 
не имею проблем с выше указанным кодом Аристо хроники и ХФ и Эпилог все работает четко
 
Назад
Сверху