14.05.2014, 21:45
|
#345
|
Пользователь
Регистрация: 08.07.2013
Сообщений: 199
Отблагодарили 77 раз(а)
|
Re: Работа над Goddess of Destruction (part 6)
Цитата:
Сообщение от silvermain
вот пакет, уже 3 дня бьюсь головой о стенку, и не могу понять где косяк=( не могли бы Вы мне помочь?
|
Вам же отписал VenomRider, гляньте пакет атаки.
Цитата:
Сообщение от VenomRaider
смотри сервер пакет Attack
у меня сделано так
Свернуть ↑
PHP код:
public class Attack extends L2GameServerPacket {
private static final int FLAG = 0x00; // Обычный удар без надписей. private static final int FLAG_MISS = 0x01; // Увернулся от удара private static final int FLAG_CRIT = 0x04; // Крит. private static final int FLAG_SHIELD = 0x06; // Заблокировал Крит. private static final int FLAG_SOULSHOT = 0x08; // Удар с соской.
private class Hit { int _targetId, _damage, _flags;
Hit(GameObject target, int damage, boolean miss, boolean crit, boolean shld) { _targetId = target.getObjectId(); _damage = damage; _flags = FLAG; if (miss) { _flags = FLAG_MISS; } else if (shld) { _flags = FLAG_SHIELD; } else if (crit) { _flags = FLAG_CRIT; }
if (_soulshot) { _flags |= FLAG_SOULSHOT; } } }
public final int _attackerId; public final boolean _soulshot; private final int _grade; 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 = grade; _x = attacker.getX(); _y = attacker.getY(); _z = attacker.getZ(); _tx = target.getX(); _ty = target.getY(); _tz = target.getZ(); hits = new Hit[0]; }
/** * Add this hit (target, damage, miss, critical, shield) to the Server-Client packet Attack.<BR> * <BR> * * @param target * @param damage * @param miss * @param crit * @param shld */ public void addHit(GameObject target, int damage, boolean miss, boolean crit, boolean shld) { // Get the last position in the hits table int pos = hits.length;
// Create a new Hit object Hit[] tmp = new Hit[pos + 1];
// Add the new Hit object to hits table System.arraycopy(hits, 0, tmp, 0, hits.length); tmp[pos] = new Hit(target, damage, miss, crit, shld); hits = tmp; }
/** * Return True if the Server-Client packet Attack conatins at least 1 hit.<BR> * <BR> * * @return */ public boolean hasHits() { return hits.length > 0; }
@Override protected final void writeImpl() { writeC(0x33); //dddddddddh writeD(_attackerId); writeD(hits[0]._targetId); writeD(0x01); // GOD 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); } }
Свернуть ↑Развернуть ↓
|
|
|
|