Перейти к содержанию
Авторизация  
pvpgate

Каст скиллов (lostworld)

Рекомендуемые сообщения

Всем привет, разбираюсь с кастом и прерыванием скиллов

Сборка lostworld, в классе skill есть метод 

public SystemMsg checkTarget(Creature activeChar, Creature target, Creature aimingTarget, boolean forceUse, boolean first)

в нем идет целая куча обработок для разного типа скиллов, итог которых сработает ли данный скилл на данный таргет
Проблема в том, что данный метод вызывается в самом конце каста, хотя по идеи должен вызываться ~ после половины каста

Собственно вопрос, где именно он вызывается при касте скилла? В каком классе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

find usage в идее уже удалили чтоли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
43 минуты назад, Khrome сказал:

find usage в идее уже удалили чтоли?

я пока не пробовал юзать никаких ИДЕ для л2... да и вообще не юзал их раньше, даже не представляю как открыть исходники одним проектом так сказать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, Lovely сказал:

В Notepad ++ Комбинация Ctrl+F

1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget

2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет.

Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
43 минуты назад, pvpgate сказал:

1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget

2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет.

Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла.

Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, pvpgate сказал:

мне нужно понимать в каком именно месте идет обращение к этому методу

2018 год на дворе. Скачали IDE, открыли проект, подвязали все зависимости и вперед!

Там даже и возможность оталки есть, а это вообще ууух

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, zGosu сказал:

Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. 

Сейчас: есть метод checkTarget в классе skill, в нем куча обработок для разных типов скиллов. Он вызывается судя по всему в самом конце каста, из за него небыло докаста. Я хочу поставить эту обработку в нужное мне время, но не могу понять где он вызывается, даже IDEA не помогло, либо я туплю, что более вероятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, pvpgate сказал:

Сейчас: есть метод checkTarget в классе skill, в нем куча обработок для разных типов скиллов. Он вызывается судя по всему в самом конце каста, из за него небыло докаста. Я хочу поставить эту обработку в нужное мне время, но не могу понять где он вызывается, даже IDEA не помогло, либо я туплю, что более вероятно.

Одна единственная комбинация - Ctrl+B, и сразу пропадает необходимость в этой теме.

Изменено пользователем Falkland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

//

Изменено пользователем Lovely

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, pvpgate сказал:

1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget

2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет.

Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла.

:huh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, zGosu сказал:

Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. 

переформулирую вопрос:
в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, pvpgate сказал:

переформулирую вопрос:
в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет?

Это L2JavaLike. Так на всех явах изначально сделано)

Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. 

Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. 

Изменено пользователем zGosu
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, zGosu сказал:

Это L2JavaLike. Так на всех явах изначально сделано)

Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. 

Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. 

куда более можно сделать 630 тогда более под ПТС но опять же можно сделать и другой вариант ! а вот за факт подсказки тем кто не понял лайк

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, pvpgate сказал:

переформулирую вопрос:
в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет?

параметр first в checkTarget - true при проверке в момент начала каста и false при проверке в момент окончания каста

просто в методе, в проверке на видимость цели учитывай и этот параметр

Изменено пользователем Gaikotsu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Gaikotsu сказал:

параметр first в checkTarget - true при проверке в момент начала каста и false при проверке в момент окончания каста

просто в методе, в проверке на видимость цели учитывай и этот параметр

Спасибо, а я все думал что он означает)

10 часов назад, zGosu сказал:

Это L2JavaLike. Так на всех явах изначально сделано)

Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. 

Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. 

на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, pvpgate сказал:

Спасибо, а я все думал что он означает)

на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста

на сколько я поняль ты имееш веду докаст при припяти то и есть стана,камень,деревья и т.д крыво прирывание докаст за при пристием или чтото другое 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, pvpgate сказал:

на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста

в PTS скриптах он по дефолту 0.5 сек (Если до окончания каста осталось больше 0.5 сек, то скил прерывается, иначе докастовывается.). 

Несмотря на то, что на лостах этот параметр есть в скилах, он по факту там не пашет) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 23.06.2018 в 14:52, Gaikotsu сказал:

параметр first в checkTarget - true при проверке в момент начала каста и false при проверке в момент окончания каста

просто в методе, в проверке на видимость цели учитывай и этот параметр

у меня в методе checkTarget есть такая проверка:
 

if(isNotTargetAoE() && getCastRange() < Integer.MAX_VALUE && !GeoEngine.canSeeTarget(activeChar, target, activeChar.isFlying()))
{
	return SystemMsg.CANNOT_SEE_TARGET;
}

Из за нее для нонтаргет аое скиллов нет докаста, хотя он у меня реализован в doCast в Creature и для не нонтаргет аое скиллов работает.
А если эту проверку убрать, то нонтаргет аое скиллы будут бить через препятствия. Я не могу понять где именно вызывается этот метод для нон таргет аое, чтобы убрать эту проверку в конце, а добавить в нужный момент

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тут добавить что только при условии first == true

а для доп проверок в нужный момент, не в начале и не в конце, надо будет завести отдельный таск, запускаемый в момент начала каста и срабатываемый через нужное время

и именно в нем проверять эту самую видимость и т.д.

ну и прерывать каст там же по необходимости

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Gaikotsu сказал:

тут добавить что только при условии first == true

а для доп проверок в нужный момент, не в начале и не в конце, надо будет завести отдельный таск, запускаемый в момент начала каста и срабатываемый через нужное время

и именно в нем проверять эту самую видимость и т.д.

ну и прерывать каст там же по необходимости

пока просто добавил first==true , видимо с таким параметром для аое скиллов этот метод не вызывается, потому что все равно нон таргет аое бьют через препятствия, т.е. проверка идет в конце, а т.к. я поставил в проверке first==true то она не срабатывает. Не вкурсе, где этот метод вызывается для нон таргет аое в конце?
И еще вопрос, как мне прервать дмг в нон таргет аое скилле по целе, на которую проверка на видимость не сработала, но не прерывать для остальных целей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну тут разве что извращаться с удалением таких целей из списка целей скилла

или составлять доп. список таких целей и с ним сверяться, когда уже наносишь урон/накладываешь эффекты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 25.06.2018 в 12:24, Gaikotsu сказал:

ну тут разве что извращаться с удалением таких целей из списка целей скилла

или составлять доп. список таких целей и с ним сверяться, когда уже наносишь урон/накладываешь эффекты

Понимаю что вопрос тупой, но сам разобраться не могу, слишком запутанно все.
Судя по всему никаких прерываний для нон таргет аое  скиллов быть не может, при касте таких скиллов в определенный момент мы обращаемся, я так понял, к Skill.getTargets(), который в свою очередь обращается к Skill.AddTargetToList(), который в свою очередь обращается к Skill.checkTarget(), и если тот не отдает null, то наполняет лист таргетов персонажами вокруг. Проверка на видимость идет как раз в Skill.checkTarget() который не позволит записать в лист таргетов невидимый таргет. И вся эта конструкция вызывается (по крайней мере для нонтаргет АОЕ) в самом конце каста. Соответственно список таргетов тоже наполняется в самом конце, и проверка checkTarget() происходит тогда же. Это подтверждается тем, что когда я удалил эту проверку для нонтаргет АОЕ, они начали бить цели, не видимые даже в начале каста. Это то что я понял, если не прав поправьте плз.
Теперь что я не понял:
В каком именно месте для нон таргет аое вызывается вся эта конструкция? (понятно что в конце каста, но в каком методе какого класса?). Пробовал копать Creature, запутался(
И второй вопрос, почему для не нонтаргет АОЕ скиллов цель выбирается в начале каста? (или там проверка видимости каким-то другим образом реализована?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я уже выше сказал - как вариант можно в нужный момент дополнительно проверять составленный в начале каста список целей на видимость и изымать из него те цели что уже не видны

если конкретно в этот момент невозможно изъять по каким либо причинам, то составить отдельный список таких целей и произвести по этому списку удаление из основного списка в момент окончания каста, когда список целей передается в скилл на выполнение действий над целями.

Изменено пользователем Gaikotsu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Gaikotsu сказал:

Как я уже выше сказал - как вариант можно в нужный момент дополнительно проверять составленный в начале каста список целей на видимость и изымать из него те цели что уже не видны

если конкретно в этот момент невозможно изъять по каким либо причинам, то составить отдельный список таких целей и произвести по этому списку удаление из основного списка в момент окончания каста, когда список целей передается в скилл на выполнение действий над целями.

Я понимаю что нужно сделать. Вопрос в том где.

Во-первых, в каком методе для аое скиллов собирается список целей в начале? (вызывается getTargets как я понимаю, но где именно это происходит в начале каста?)
Во-вторых, в каком методе идет проверка в конце и удаление ненужных целей?
Разве для нонтаргет аое вообще есть набор целей в начале каста? Разве они не набираются тупо в конце?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...