- Хроники
- 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()));
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);
}
}
@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);
}
public enum EffectSuccessType
{
FATAL_BLOW,
DELETE_HATE,
RANDOMIZE_HATE,
CONFUSE,
RUN_AWAY,
SPOIL,
BACKSTAB,
DISTRUST,
DELETE_HATE_OF_ME,
DELETE_TOPAGRO,
KNOCK_DOWN;
}