Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Невидимость (https://forum.zone-game.info/showthread.php?t=38901)

AndruliKxD 31.07.2015 15:53

Невидимость
 
Доброго дня
Может кто-нибудь сталкивался с подобной проблемой...
В общем когда устанавливаю игроку невидимость, а потом делаю опять видимым - он становится каким-то хе*** неуязвимым :(

Пробовал устанавливать также и 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

Gaikotsu 01.08.2015 06:52

Re: Невидимость
 
broadcastUserInfo отправляет самому игроку UserInfo, а окружающим CharInfo

finfan 01.08.2015 17:27

Re: Невидимость
 
Цитата:

Сообщение от AndruliKxD (Сообщение 398073)
Доброго дня
Может кто-нибудь сталкивался с подобной проблемой...
В общем когда устанавливаю игроку невидимость, а потом делаю опять видимым - он становится каким-то хе*** неуязвимым :(

Пробовал устанавливать также и 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) переводится как неуязвимый. Прежде чем задействовать переменные, которые вы явно не знаете, надо посмотреть, где они хотя бы используются, ибо есть вероятность, что там где они используются - будет написан какой-нибудь комментарий, который поможет вам понять что это за переменная.

Zubastic 01.08.2015 17:40

Re: Невидимость
 
Цитата:

Сообщение от AndruliKxD (Сообщение 398073)
Ничего не помогает...

Цитата:

Сообщение от AndruliKxD (Сообщение 398073)
Сборка L2jFrozen

Вам уже точно ничего не поможет впринципе.

KID 01.08.2015 17:53

Re: Невидимость
 
Цитата:

Сообщение от Zubastic (Сообщение 398131)
Вам уже точно ничего не поможет впринципе.

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

AndruliKxD 02.08.2015 03:33

Re: Невидимость
 
Цитата:

broadcastUserInfo отправляет самому игроку UserInfo, а окружающим CharInfo
А можно пожалуйста чуточку подробнее о broadcastUsetinfo / CharInfo?

Цитата:

Сообщение от KID (Сообщение 398135)
почему-же, поможет. посмотреть как реализована команда //invis, должно как минимум натолкнуть на путь истинный. или на путь копи-паста.

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


Спасибо finfan.

slayer48 02.08.2015 04:49

Re: Невидимость
 
Попробовал по вашим советам сделать!

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

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

finfan 02.08.2015 05:16

Re: Невидимость
 
Цитата:

Сообщение от slayer48 (Сообщение 398159)
С тем как сделать невидимым разобрался по вашим советам!

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

Код:

targetPlayer.getAppearance().setVisible();
targetPlayer.stopAbnormalEffect(AbnormalEffect.STEALTH);


slayer48 02.08.2015 06:34

Re: Невидимость
 
Цитата:

Сообщение от finfan (Сообщение 398161)
Код:

targetPlayer.getAppearance().setVisible();
targetPlayer.stopAbnormalEffect(AbnormalEffect.STEALTH);


Не работает... :(

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

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

n3k0nation 02.08.2015 17:29

Re: Невидимость
 
Цитата:

Сообщение от slayer48 (Сообщение 398162)
Не работает... :(

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

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

broadcastCharInfo после того как уберете флаг невидимости.


Текущее время: 03:25. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot