Обработка атаки

Reboot

Знаменитый
Пользователь
Сообщения
51
Розыгрыши
0
Репутация
1
Реакции
1
Баллы
1 250
Хроники
  1. Grand Cursade
Исходники
Присутствуют
Сборка
Мобиус
Где в Мобиусе идет обработка массовых аттак, к примеру, юзаю массовый скилл, если человек с флагом, проходит, не могу метод найти, подскажите, поиском getPvPFlag пользовался, результаты непонятны.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Где в Мобиусе идет обработка массовых аттак, к примеру, юзаю массовый скилл, если человек с флагом, проходит, не могу метод найти, подскажите, поиском getPvPFlag пользовался, результаты непонятны.
Попробуйте запустить режим debug.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
1619379309635.png
А далее? Кнопку дебага я видел, а тут что делать?
 
находим метод getPvpFlag в классе PlayerInstance, наводим на него курсор, жмем правую кнопку мыши и выбираем "Find Usages"
выдаст список где данный метод используется. можно с этого начать

1619380787714.png
 
Последнее редактирование:
  • Мне нравится
Реакции: Rolo

    Reboot

    Баллов: 5
    спасибо
находим метод getPvpFlag в классе PlayerInstance, наводим на него курсор, жмем правую кнопку мыши и выбираем "Find Usages"
выдаст список где данный метод используется. можно с этого начать

Посмотреть вложение 33853
Спасибо, о таком способе не знал, но не нашел...
 
Reboot, пересмотрите класс /java/org/l2jmobius/gameserver/model/skills/SkillCaster.java, в частности метод callSkill
не в нем ли собака зарыта
 
// Self casting should not increase PvP time.
else if (obj != player)
{
// Supporting monsters or players results in pvpflag.
if (((skill.getEffectPoint() > 0) && obj.isMonster()) //
|| (obj.isPlayable() && ((obj.getActingPlayer().getPvpFlag() > 0) //
|| (((Creature) obj).getReputation() < 0) //
)))
{
// Consider fake player PvP status.
if (!obj.isFakePlayer() //
|| (obj.isFakePlayer() && (!((Npc) obj).isScriptValue(0) || (((Npc) obj).getReputation() < 0))))
{
player.updatePvPStatus();
}
Если вы имели ввиду это, то тут только обновление флага да и само по себе метод callSkill это всего лишь вызов скила, а нужен метод, где он обрабатывает таргет (цели)

То есть, грубо говоря, почему на мертвого не проходит массуха, мне это надо найти
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Скажите какой вам скилл нужно ?
 
Да без разницы какой скилл, любой массовый скилл, любой скилл с не TARGET_ONE
 
Почему тогда он нигде больше не используется?)
ищите в хандлерах. Сложно уследить весь путь когда часть кода в гребанных скриптах отдельно. Но всем масс атаки должны обрабатываться одинм классом. Я думаю этим (мб не прав но копайте в данном направлении)
 
  • Мне нравится
Реакции: KATE

    Reboot

    Баллов: 5
    ++++++++++

    KATE

    Баллов: 9
    За помощь людям!
ищите в хандлерах. Сложно уследить весь путь когда часть кода в гребанных скриптах отдельно. Но всем масс атаки должны обрабатываться одинм классом. Я думаю этим (мб не прав но копайте в данном направлении)
Да, верно мыслите, всем масс скилам добавлена опция по таргету, ему присвоено affectObject = NOT_FRIEND
Только где найти обработку этого NOT_FRIEND хз... поиск результатов не дал.

Огромное спасибо LodWinter, нашел в итоге обработку NOT FRIEND, спрятано это все у нас в ДП в скриптах...
Три дня мучался, думал ядро
 
Да, верно мыслите, всем масс скилам добавлена опция по таргету, ему присвоено affectObject = NOT_FRIEND
Только где найти обработку этого NOT_FRIEND хз... поиск результатов не дал.

Огромное спасибо LodWinter, нашел в итоге обработку NOT FRIEND, спрятано это все у нас в ДП в скриптах...
Три дня мучался, думал ядро
Какой-то инвалид додумался все подряд пихать в скрипты, а потом за ним остальные инвалиды начали повторять. При чем так неграмотно, что если захочется добавить новый обработчик таргета, нужно будет все равно в ядре менять энамку.
А всего-то для этого стоило стандартные хэндлеры хранить в ядре, а в энамке добавить CUSTOM + его обработка в парсерах. И вуаля - расширяемость без гемора.
 
Какой-то инвалид додумался все подряд пихать в скрипты, а потом за ним остальные инвалиды начали повторять. При чем так неграмотно, что если захочется добавить новый обработчик таргета, нужно будет все равно в ядре менять энамку.
А всего-то для этого стоило стандартные хэндлеры хранить в ядре, а в энамке добавить CUSTOM + его обработка в парсерах. И вуаля - расширяемость без гемора.
Согласен, сделано максимально кончено.
 

Похожие темы

Назад
Сверху Снизу