pvpgate 11 Опубликовано 21 июня, 2018 Всем привет, разбираюсь с кастом и прерыванием скиллов Сборка lostworld, в классе skill есть метод public SystemMsg checkTarget(Creature activeChar, Creature target, Creature aimingTarget, boolean forceUse, boolean first) в нем идет целая куча обработок для разного типа скиллов, итог которых сработает ли данный скилл на данный таргет Проблема в том, что данный метод вызывается в самом конце каста, хотя по идеи должен вызываться ~ после половины каста Собственно вопрос, где именно он вызывается при касте скилла? В каком классе? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Khrome 276 Опубликовано 21 июня, 2018 find usage в идее уже удалили чтоли? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 21 июня, 2018 43 минуты назад, Khrome сказал: find usage в идее уже удалили чтоли? я пока не пробовал юзать никаких ИДЕ для л2... да и вообще не юзал их раньше, даже не представляю как открыть исходники одним проектом так сказать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lovely 307 Опубликовано 21 июня, 2018 В Notepad ++ Комбинация Ctrl+F Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 22 июня, 2018 11 часов назад, Lovely сказал: В Notepad ++ Комбинация Ctrl+F 1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget 2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет. Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 22 июня, 2018 43 минуты назад, pvpgate сказал: 1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget 2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет. Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла. Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lvlkoo 190 Опубликовано 22 июня, 2018 7 часов назад, pvpgate сказал: мне нужно понимать в каком именно месте идет обращение к этому методу 2018 год на дворе. Скачали IDE, открыли проект, подвязали все зависимости и вперед! Там даже и возможность оталки есть, а это вообще ууух 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 22 июня, 2018 10 часов назад, zGosu сказал: Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. Сейчас: есть метод checkTarget в классе skill, в нем куча обработок для разных типов скиллов. Он вызывается судя по всему в самом конце каста, из за него небыло докаста. Я хочу поставить эту обработку в нужное мне время, но не могу понять где он вызывается, даже IDEA не помогло, либо я туплю, что более вероятно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 22 июня, 2018 (изменено) 31 минуту назад, pvpgate сказал: Сейчас: есть метод checkTarget в классе skill, в нем куча обработок для разных типов скиллов. Он вызывается судя по всему в самом конце каста, из за него небыло докаста. Я хочу поставить эту обработку в нужное мне время, но не могу понять где он вызывается, даже IDEA не помогло, либо я туплю, что более вероятно. Одна единственная комбинация - Ctrl+B, и сразу пропадает необходимость в этой теме. Изменено 22 июня, 2018 пользователем Falkland Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lovely 307 Опубликовано 23 июня, 2018 (изменено) // Изменено 23 июня, 2018 пользователем Lovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lovely 307 Опубликовано 23 июня, 2018 15 часов назад, pvpgate сказал: 1 - этот метод может вызываться в другом классе (и вызывается, и не раз) - это можно решить обычным поиском по содержанию по skill.checkTarget 2 - этот метод может вызываться через на следующий класс skill класс, тут уже поиск не поможет. Вобщем, мне нужно понимать в каком именно месте идет обращение к этому методу в конце каста, дабы попробовать удалить его, и добавить это же обращение в shedule в нужное по рассчету докаста время для каждого скилла. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 23 июня, 2018 18 часов назад, zGosu сказал: Можете подробно расписать как есть сейчас и как должно работать по Вашему. Просто суть вопроса уловить не могу. переформулирую вопрос: в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 23 июня, 2018 (изменено) 1 час назад, pvpgate сказал: переформулирую вопрос: в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет? Это L2JavaLike. Так на всех явах изначально сделано) Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. Изменено 23 июня, 2018 пользователем zGosu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Defler 44 Опубликовано 23 июня, 2018 2 часа назад, zGosu сказал: Это L2JavaLike. Так на всех явах изначально сделано) Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. куда более можно сделать 630 тогда более под ПТС но опять же можно сделать и другой вариант ! а вот за факт подсказки тем кто не понял лайк Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 23 июня, 2018 (изменено) 6 часов назад, pvpgate сказал: переформулирую вопрос: в каком месте в лосте идет проверка на видимость цели в конце каста, которая не должна быть в конце на самом деле, иначе докаста не будет? параметр first в checkTarget - true при проверке в момент начала каста и false при проверке в момент окончания каста просто в методе, в проверке на видимость цели учитывай и этот параметр Изменено 23 июня, 2018 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 23 июня, 2018 5 часов назад, Gaikotsu сказал: параметр first в checkTarget - true при проверке в момент начала каста и false при проверке в момент окончания каста просто в методе, в проверке на видимость цели учитывай и этот параметр Спасибо, а я все думал что он означает) 10 часов назад, zGosu сказал: Это L2JavaLike. Так на всех явах изначально сделано) Просто по коду пройдись, и там перед самим наложении эффектов или дпса есть эта проверка. Хотя у себя я правил иначе) У меня был по дефолту докаст 400 мсек (как на всех явах), сделал 500 и теперь как на L2OffLike работает. на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
PrizraKZN2000 21 Опубликовано 23 июня, 2018 1 час назад, pvpgate сказал: Спасибо, а я все думал что он означает) на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста на сколько я поняль ты имееш веду докаст при припяти то и есть стана,камень,деревья и т.д крыво прирывание докаст за при пристием или чтото другое Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 24 июня, 2018 11 часов назад, pvpgate сказал: на самом деле offlike докаст рассчитывается в зависимости от skillHitTime и skillHitCancelTime, у меня игрок недавно сделал ряд подробных тестов по докасту и прерыванию анимации на птс. Прерывание идет через 10% от времени каста после проверки на видимость для докаста в PTS скриптах он по дефолту 0.5 сек (Если до окончания каста осталось больше 0.5 сек, то скил прерывается, иначе докастовывается.). Несмотря на то, что на лостах этот параметр есть в скилах, он по факту там не пашет) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 24 июня, 2018 В 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 и для не нонтаргет аое скиллов работает. А если эту проверку убрать, то нонтаргет аое скиллы будут бить через препятствия. Я не могу понять где именно вызывается этот метод для нон таргет аое, чтобы убрать эту проверку в конце, а добавить в нужный момент Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 24 июня, 2018 (изменено) тут добавить что только при условии first == true а для доп проверок в нужный момент, не в начале и не в конце, надо будет завести отдельный таск, запускаемый в момент начала каста и срабатываемый через нужное время и именно в нем проверять эту самую видимость и т.д. ну и прерывать каст там же по необходимости Изменено 24 июня, 2018 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 25 июня, 2018 6 часов назад, Gaikotsu сказал: тут добавить что только при условии first == true а для доп проверок в нужный момент, не в начале и не в конце, надо будет завести отдельный таск, запускаемый в момент начала каста и срабатываемый через нужное время и именно в нем проверять эту самую видимость и т.д. ну и прерывать каст там же по необходимости пока просто добавил first==true , видимо с таким параметром для аое скиллов этот метод не вызывается, потому что все равно нон таргет аое бьют через препятствия, т.е. проверка идет в конце, а т.к. я поставил в проверке first==true то она не срабатывает. Не вкурсе, где этот метод вызывается для нон таргет аое в конце? И еще вопрос, как мне прервать дмг в нон таргет аое скилле по целе, на которую проверка на видимость не сработала, но не прерывать для остальных целей? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 25 июня, 2018 ну тут разве что извращаться с удалением таких целей из списка целей скилла или составлять доп. список таких целей и с ним сверяться, когда уже наносишь урон/накладываешь эффекты Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 26 июня, 2018 В 25.06.2018 в 12:24, Gaikotsu сказал: ну тут разве что извращаться с удалением таких целей из списка целей скилла или составлять доп. список таких целей и с ним сверяться, когда уже наносишь урон/накладываешь эффекты Понимаю что вопрос тупой, но сам разобраться не могу, слишком запутанно все. Судя по всему никаких прерываний для нон таргет аое скиллов быть не может, при касте таких скиллов в определенный момент мы обращаемся, я так понял, к Skill.getTargets(), который в свою очередь обращается к Skill.AddTargetToList(), который в свою очередь обращается к Skill.checkTarget(), и если тот не отдает null, то наполняет лист таргетов персонажами вокруг. Проверка на видимость идет как раз в Skill.checkTarget() который не позволит записать в лист таргетов невидимый таргет. И вся эта конструкция вызывается (по крайней мере для нонтаргет АОЕ) в самом конце каста. Соответственно список таргетов тоже наполняется в самом конце, и проверка checkTarget() происходит тогда же. Это подтверждается тем, что когда я удалил эту проверку для нонтаргет АОЕ, они начали бить цели, не видимые даже в начале каста. Это то что я понял, если не прав поправьте плз. Теперь что я не понял: В каком именно месте для нон таргет аое вызывается вся эта конструкция? (понятно что в конце каста, но в каком методе какого класса?). Пробовал копать Creature, запутался( И второй вопрос, почему для не нонтаргет АОЕ скиллов цель выбирается в начале каста? (или там проверка видимости каким-то другим образом реализована?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 27 июня, 2018 (изменено) Как я уже выше сказал - как вариант можно в нужный момент дополнительно проверять составленный в начале каста список целей на видимость и изымать из него те цели что уже не видны если конкретно в этот момент невозможно изъять по каким либо причинам, то составить отдельный список таких целей и произвести по этому списку удаление из основного списка в момент окончания каста, когда список целей передается в скилл на выполнение действий над целями. Изменено 27 июня, 2018 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pvpgate 11 Опубликовано 27 июня, 2018 6 часов назад, Gaikotsu сказал: Как я уже выше сказал - как вариант можно в нужный момент дополнительно проверять составленный в начале каста список целей на видимость и изымать из него те цели что уже не видны если конкретно в этот момент невозможно изъять по каким либо причинам, то составить отдельный список таких целей и произвести по этому списку удаление из основного списка в момент окончания каста, когда список целей передается в скилл на выполнение действий над целями. Я понимаю что нужно сделать. Вопрос в том где. Во-первых, в каком методе для аое скиллов собирается список целей в начале? (вызывается getTargets как я понимаю, но где именно это происходит в начале каста?) Во-вторых, в каком методе идет проверка в конце и удаление ненужных целей? Разве для нонтаргет аое вообще есть набор целей в начале каста? Разве они не набираются тупо в конце? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты