Как вызвать звук крита pdam в клиенте хф?

sergebaz

Прославленный
Проверенный
Девятый Триумф
Легенда Истоков
Сообщения
563
Розыгрыши
0
Решения
1
Репутация
236
Реакции
110
Баллы
1 478
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
Lostworld
Доброго времени! Подскажите как вызвать звуковой эффект пдемедж критической акати (крита в просто народье) на клиенте хф?
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
вот два варианта вызова звука крита:
Код:
broadcastPacket(new PlaySound(PlaySound.Type.SOUND, "SkillSound.critical_hit_02", 1, activeChar.getObjectId(), activeChar.getLoc()));

broadcastPacket(new PlaySound(PlaySound.Type.SOUND, "SkillSound.critical_hit", 1, activeChar.getObjectId(), activeChar.getLoc()));
 
Обычного крита? так оно вроде должно автоматом воспроизводиться если в флагах отправленных в пакете Attack выставлен нужный бит.
Java:
public class Attack extends L2GameServerPacket
{
    public static final int FLAG = 0x00; // Обычный удар без надписей.
    public static final int FLAG_MISS = 0x01; // Увернулся от удара
    public static final int FLAG_BLOCK = 0x02; // Блокировал удар.
    public static final int FLAG_CRIT = 0x04; // Крит.
    public static final int FLAG_SOULSHOT = 0x08; // Удар с соской.

    private class Hit
    {
        int _targetId, _damage, _flags;

        public Hit(GameObject target, AttackInfo info)
        {
            _targetId = target.getObjectId();
            _damage = (int) info.damage;
            _flags = FLAG;

            if (info.miss)
                _flags |= FLAG_MISS;

            if (info.block)
                _flags |= FLAG_BLOCK;

            if (info.crit)
                _flags |= FLAG_CRIT;

            if (_soulShot)
                _flags |= FLAG_SOULSHOT;
        }
    }

    public final int _attackerId;
    public final boolean _soulShot;
    private final int _grade;
    private final int _shotEffectItemId;
    private final int _x, _y, _z, _tx, _ty, _tz;
    private Hit[] hits;

    public Attack(Creature attacker, Creature target, boolean ss, int grade)
    {
        _attackerId = attacker.getObjectId();
        _soulShot = ss;
        _grade = _soulShot ? grade : 0;
        _shotEffectItemId = _soulShot ? attacker.getShotEffectItemId(0) : 0;
        _x = attacker.getX();
        _y = attacker.getY();
        _z = attacker.getZ();
        _tx = target.getX();
        _ty = target.getY();
        _tz = target.getZ();
        hits = new Hit[0];
    }

    public void addHit(GameObject target, AttackInfo info)
    {
        int pos = hits.length;
        Hit[] tmp = new Hit[pos + 1];
        System.arraycopy(hits, 0, tmp, 0, hits.length);
        tmp[pos] = new Hit(target, info);
        hits = tmp;
    }

    public boolean hasHits()
    {
        return hits.length > 0;
    }

    @Override
    protected final void writeImpl()
    {
        writeId(ServerPackets.ATTACK);
        writeD(_attackerId);
        writeD(hits[0]._targetId);
        writeD(_shotEffectItemId);
        writeD(hits[0]._damage);
        writeD(hits[0]._flags);
        writeD(_grade);
        writeD(_x);
        writeD(_y);
        writeD(_z);
        writeH(hits.length - 1);

        for (int i = 1; i < hits.length; i++)
        {
            writeD(hits[i]._targetId);
            writeD(hits[i]._damage);
            writeD(hits[i]._flags);
            writeD(_grade);
        }

        writeD(_tx);
        writeD(_ty);
        writeD(_tz);
    }
}
А если речь про удачное прохождение сечки даггера (что есть по сути тоже крит) или еще чего из других эффектов, то это шлется в в MagicSkillUse.
Или это после хф уже появилось - не помню точно...
Java:
    @Override
    protected final void writeImpl()
    {
        writeId(ServerPackets.MAGIC_SKILL_USE);
        writeD(_castType); // GOD - Дабл каст или (Casting bar type: 0 - default, 1 - default up, 2 - blue, 3 - green, 4 - red. )
        writeD(_casterId);
        writeD(_targetId);
        writeD(_skillId);
        writeD(_skillLevel);
        writeD(_hitTime);
        writeD(_reuseGroupId);
        writeD(_reuseDelay);
        writeD(_casterX);
        writeD(_casterY);
        writeD(_casterZ);
        // вот тут шлется тип звука при успехе
        writeH(_successType.size());
        _successType.forEach(type -> writeH(type.ordinal()));
        writeH(_groundLoc.size());
        _groundLoc.forEach(loc -> writeLoc(loc, false));
        writeD(_targetX);
        writeD(_targetY);
        writeD(_targetZ);
        writeD(_actionId > 0);
        writeD(_actionId);
    }
Java:
public enum EffectSuccessType
{
    FATAL_BLOW,
    DELETE_HATE,
    RANDOMIZE_HATE,
    CONFUSE,
    RUN_AWAY,
    SPOIL,
    BACKSTAB,
    DISTRUST,
    DELETE_HATE_OF_ME,
    DELETE_TOPAGRO,
    KNOCK_DOWN;
}
 
Назад
Сверху