Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Skill.java
#1
в CheckTarget добавил:
[SRC="java"] if(isOffensive())
{
if(player.getFactionId() == target.getPet().getFactionId())
{
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
}
if(player.getPet().getFactionId() == target.getFactionId())
{
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
}
}[/SRC]
Но вылетает нпе, скилами пета вообще нельзя бить никого.
А мне надо чтобы только свою фракцию нельзя было бить, как исправить?
Сборка овер.
Ответ
#2
Код:
if(isOffensive())
            {
                _log.warn("player.getFactionId():" + player.getFactionId());
                _log.warn("target.getPet().getFactionId():" + target.getPet().getFactionId());
                if(player.getFactionId() == target.getPet().getFactionId())
                {
                    return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
                }

                _log.warn("player.getPet().getFactionId():" + player.getPet().getFactionId());
                _log.warn("target.getFactionId():" + target.getFactionId());
                if(player.getPet().getFactionId() == target.getFactionId())
                {
                    return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
                }
            }

Добавь логгеры для отладки и сам поймешь в чем ошибка, посмотри какие Id будут выводиться.
Студия L2dev.su. Сборки Lindvior, Epilogue. ICQ 1817070. Skype wowan.sm
Ответ
#3
[SRC="java"]
if(isOffensive() && target.isPet())
{
Summon pet = target.getPlayer().getPet();
if(pet != null)
{
if(player.getFactionId() == pet.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
else if(pet.getFactionId() == target.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
}
}
[/SRC]

Проверяйте таргет на соответствия и на нулл, а также питомец необходимо получать через класс Player, а не Creature.
Ответ
#4
Может быть я не туда проверку добавляю? Бьет почему то только одним скилом.
Ответ
#5
L2J Написал:Может быть я не туда проверку добавляю? Бьет почему то только одним скилом.
Ну так вы делаете проверку на то что скилл isOffensive.

Какой скилл Вы используете?
Ответ
#6
Странно, все работает, но скилл кнут у магнуса может бить свою фракцию... Sad

Добавлено через 4 минуты
[SRC="java"] if(isOffensive() && target.isPet() && forceUse)
{
Summon pet = target.getPlayer().getPet();
if(pet != null)
{
if(player.getFactionId() == pet.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
else if(pet.getFactionId() == target.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
}
}[/SRC]
Вот код, бьет только при зажатом CTRL, без него не бьет.
Скилл кнут у магнуса.
Не могу сказать какой ID.

Добавлено через 12 минут
И с этим кодом гвардов бить нельзя, нпе.
[Изображение: 10:04:50_85afda57.png]
Ответ
#7
L2J Написал:Странно, все работает, но скилл кнут у магнуса может бить свою фракцию... Sad

Добавлено через 4 минуты
[SRC="java"] if(isOffensive() && target.isPet() && forceUse)
{
Summon pet = target.getPlayer().getPet();
if(pet != null)
{
if(player.getFactionId() == pet.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
else if(pet.getFactionId() == target.getFactionId())
return SystemMsg.THAT_IS_AN_INCORRECT_TARGET;
}
}[/SRC]
Вот код, бьет только при зажатом CTRL, без него не бьет.
Скилл кнут у магнуса.
Не могу сказать какой ID.

Добавлено через 12 минут
И с этим кодом гвардов бить нельзя, нпе.
[Изображение: 10:04:50_85afda57.png]


В какой среде программирования вы работаете с java?
Вы знаете что можно легко запустить сервер под полной отладкой и тогда можно поставить бреакпоинт на строку вашей проверки и пошагово пронаблюдать за выполнением программы. Так же вы увидите и какой скил на входе, и его название и его ид, и является ли он isOffensive и все остальное.
И самое главное - код в пределах функции можно изменять без перезапуска сервера, прямо на ходу.
Так будет гораздо быстрее чем гадание на коде с последующей перекомпиляцией.

Если есть вопросы пишите в личку помогу настроить, ясное дело бесплатно.
Ответ
#8
ап, подскажите пожалуйста.

Добавлено через 36 минут
Проверка верная, но почему вылетает нпе?

Добавлено через 1 час 9 минут
[SRC="xml"] <skill id="5138" levels="1" name="Whiplash">
<set name="levelModifier" val="1" />
<set name="icon" val="icon.skill0100" />
<set name="coolTime" val="720" />
<set name="reuseDelay" val="8000" />
<set name="power" val="6047" />
<set name="magicLevel" val="80" />
<set name="hitTime" val="1080" />
<set name="hitCancelTime" val="500" />
<set name="mpConsume2" val="214" />
<set name="activateRate" val="80" />
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="PDAM" />
<set name="operateType" val="OP_ACTIVE" />
<set name="nextAction" val="attack" />
<set name="trait" val="SHOCK" />
<set name="saveVs" val="CON" />
<for>
<effect count="1" name="Stun" stackOrder="-1" stackType="Stun" time="9" val="0" />
</for>
</skill>[/SRC]
Вот этот скилл.

Добавлено через 20 часов 25 минут
ап10101010
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  java прогер Light87 0 1,911 01-18-2021, 12:15 AM
Последний пост: Light87
  Помогите переписать скрипт с Python на Java Virrilis3 0 1,464 03-29-2018, 10:55 PM
Последний пост: Virrilis3
  Серьга Орфена Classic skill id="3560" virusoflove 8 3,256 02-26-2017, 12:19 PM
Последний пост: PilotMGN
  Ищу исполнителя [Java] Abstragetic 3 2,123 02-05-2017, 03:01 AM
Последний пост: Deazer
  альт+G java HiredKiller 10 3,402 12-15-2015, 09:40 AM
Последний пост: HiredKiller
  Servise Manager Lucera 2 Java 8. DiName 8 2,673 12-07-2015, 07:43 AM
Последний пост: Deazer
  Дюп через Kamaloka.java dantest 7 2,300 09-14-2015, 09:01 PM
Последний пост: dantest
  GameServer.java dantest 10 3,083 09-11-2015, 07:23 PM
Последний пост: Zeratyl
  Mass effect skill animation pindossia 2 1,725 08-16-2015, 05:00 PM
Последний пост: pindossia
  время для java Valent 7 2,185 08-15-2015, 10:13 PM
Последний пост: Bacek

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


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