Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Невидимость
#1
Доброго дня
Может кто-нибудь сталкивался с подобной проблемой...
В общем когда устанавливаю игроку невидимость, а потом делаю опять видимым - он становится каким-то хе*** неуязвимым Sad

Пробовал устанавливать также и setInvul(false)
Ничего не помогает...
Сборка L2jFrozen

Делаю невидимым так:
Код:
        player.getAppearance().setInvisible();
        player.broadcastUserInfo();
        player.decayMe();
        player.broadcastUserInfo();
        player.spawnMe();
        player.broadcastUserInfo();

видимым так:

Код:
        player.getAppearance().setVisible();
        player.broadcastUserInfo();
player.setIsInvul(false);

И пожалуйста подскажите назначение метода broadcastUserInfo
Ответ
#2
broadcastUserInfo отправляет самому игроку UserInfo, а окружающим CharInfo
Ответ
#3
AndruliKxD Написал:Доброго дня
Может кто-нибудь сталкивался с подобной проблемой...
В общем когда устанавливаю игроку невидимость, а потом делаю опять видимым - он становится каким-то хе*** неуязвимым Sad

Пробовал устанавливать также и setInvul(false)
Ничего не помогает...
Сборка L2jFrozen

Делаю невидимым так:
Код:
        player.getAppearance().setInvisible();
        player.broadcastUserInfo();
        player.decayMe();
        player.broadcastUserInfo();
        player.spawnMe();
        player.broadcastUserInfo();

видимым так:

Код:
        player.getAppearance().setVisible();
        player.broadcastUserInfo();
player.setIsInvul(false);

И пожалуйста подскажите назначение метода broadcastUserInfo

Алый крестоносец! Чёрт бы меня побрал! Причём здесь инвул? ;D

Покажу пример на эффектах в методе onStart():
//проверяем будущего инвизера на состояние инвиза, если цель уже находится в таком состоянии то незачем ей его давать.
Код:
if(!getTarget().isVisible())
            return false;

//потрясный эффект стелса на инвизера
Код:
targetPlayer.stopAbnormalEffect(AbnormalEffect.STEALTH);
//присваиваем переменной invisible = true
Код:
targetPlayer.getAppearance().setInvisible();
//отсылаем пакет на делит инвизера
Код:
L2GameServerPacket del = new DeleteObject(targetPlayer);

//сбрасываем таргеты и абортим атаку у всех тех мудил, кто нас избивал и калечил
Код:
            for (L2Character target : targetPlayer.getKnownList().getKnownTypeInRadius(L2Character.class, 1000))
            {
                try
                {
                    if (target.getTarget() == targetPlayer)
                    {
                        target.breakAttack();
                        target.abortCast();
                        target.setTarget(null);
                        target.getAI().setIntention(CtrlIntention.IDLE);
                    }
                    
                    if (target instanceof Player)
                        target.sendPacket(del);
                }
                catch (NullPointerException e)
                {
                    log.warn("Exception found in {} {}",getClass().getSimpleName(),e);
                }
            }

Тадаааааам. Не факт что я предусмотрел всё, например поулчение урона в АОЕ зоне и или Intention порядок, который по логике - тоже должен проверяться. Или ту же атаку (сброс инвиза в момент атаки цели инвизером). Но это уже явно не моё дело.

На будущее: invulnerable (корот. invul) переводится как неуязвимый. Прежде чем задействовать переменные, которые вы явно не знаете, надо посмотреть, где они хотя бы используются, ибо есть вероятность, что там где они используются - будет написан какой-нибудь комментарий, который поможет вам понять что это за переменная.
Ответ
#4
AndruliKxD Написал:Ничего не помогает...
AndruliKxD Написал:Сборка L2jFrozen
Вам уже точно ничего не поможет впринципе.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#5
Zubastic Написал:Вам уже точно ничего не поможет впринципе.

почему-же, поможет. посмотреть как реализована команда //invis, должно как минимум натолкнуть на путь истинный. или на путь копи-паста.
Ответ
#6
Цитата:broadcastUserInfo отправляет самому игроку UserInfo, а окружающим CharInfo
А можно пожалуйста чуточку подробнее о broadcastUsetinfo / CharInfo?

KID Написал:почему-же, поможет. посмотреть как реализована команда //invis, должно как минимум натолкнуть на путь истинный. или на путь копи-паста.

В том то и проблема, что в сборке //invis реализован именно так как я написал в первом посте.


Спасибо finfan.
Ответ
#7
Попробовал по вашим советам сделать!

У меня сейчас игрок полностью исчезает.. и даже хоть он и в игре, после setVisible() ничего не происходит, он невидимый в прямом смысле этого слова)

А вот как быть с возвращением назад, в видимое состояние - по сути дела в этом и была проблема ранее.. игрок становился уязвимым после того как его опять делал видимым (способом из первого поста).
Ответ
#8
slayer48 Написал:С тем как сделать невидимым разобрался по вашим советам!

А вот как быть с возвращением назад, в видимое состояние - по сути дела в этом и была проблема ранее.. игрок становился уязвимым после того как его опять делал видимым (способом из первого поста).

Код:
targetPlayer.getAppearance().setVisible();
targetPlayer.stopAbnormalEffect(AbnormalEffect.STEALTH);
Ответ
#9
finfan Написал:
Код:
targetPlayer.getAppearance().setVisible();
targetPlayer.stopAbnormalEffect(AbnormalEffect.STEALTH);

Не работает... Sad

Я подозреваю что после DeleteObject, должна быть какая-нибудь обратная процедура...
Если сделать тп к игроку который якобы уже вышел из инвиза - его физически просто нет. Он вроде бы должен стоять в этой точке но его нет.

По идее не хватает каких-то вещательных пакетов, которые делают игрока видимым для всех...
Ответ
#10
slayer48 Написал:Не работает... Sad

Я подозреваю что после DeleteObject, должна быть какая-нибудь обратная процедура...
Если сделать тп к игроку который якобы уже вышел из инвиза - его физически просто нет. Он вроде бы должен стоять в этой точке но его нет.

По идее не хватает каких-то вещательных пакетов, которые делают игрока видимым для всех...

broadcastCharInfo после того как уберете флаг невидимости.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)