voland3 1 Опубликовано 7 декабря, 2016 Здравствуйте, дорогие форумчане. Есть одна проблема! При касте скилла в противника и при его заходе за колону ил за какой-нибудь объект, каст не прерывается. Что далать ? И где копать ? Заранее огромное спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 7 декабря, 2016 (изменено) Здравствуйте, дорогие форумчане. Есть одна проблема! При касте скилла в противника и при его заходе за колону ил за какой-нибудь объект, каст не прерывается. Что далать ? И где копать ? Заранее огромное спасибо. L2Character \ L2PcInstance. [spoiler=Метод onMagicLaunchedTimer] if ((targets.length > 0) && (escapeRange > 0)) { int skipRange = 0; int skipLOS = 0; int skipPeaceZone = 0; final List<L2Object> targetList = new ArrayList<>(); for (L2Object trg : targets) { if (trg instanceof L2Character) { if (!isInsideRadius(trg.getX(), trg.getY(), trg.getZ(), escapeRange + getTemplate().getCollisionRadius(), true, false)) { skipRange++; continue; } // Healing party members should ignore LOS. if (((skill.getTargetType() != L2TargetType.PARTY) || !skill.hasEffectType(L2EffectType.HEAL)) // && !GeoData.getInstance().canSeeTarget(this, trg)) { skipLOS++; continue; } if (skill.isBad()) { if (isPlayer()) { if (((L2Character) trg).isInsidePeaceZone(getActingPlayer())) { skipPeaceZone++; continue; } } else { if (((L2Character) trg).isInsidePeaceZone(this, trg)) { skipPeaceZone++; continue; } } } targetList.add(trg); } } if (targetList.isEmpty()) { if (isPlayer()) { if (skipRange > 0) { sendPacket(SystemMessageId.DIST_TOO_FAR_CASTING_STOPPED); } else if (skipLOS > 0) { sendPacket(SystemMessageId.CANT_SEE_TARGET); } else if (skipPeaceZone > 0) { sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_PEACE_ZONE); } } switch (skill.getTargetType()) { // only AURA-type skills can be cast without target case AURA: case FRONT_AURA: case BEHIND_AURA: case AURA_CORPSE_MOB: case SELF: break; default: abortCast(); ThreadPoolManager.getInstance().scheduleAi(new Rotation(this, targets[0], skill), 0); return; } } mut.setTargets(targetList.toArray(new L2Object[targetList.size()])); } Изменено 7 декабря, 2016 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 7 декабря, 2016 L2Character \ L2PcInstance. [spoiler=Метод onMagicLaunchedTimer] if ((targets.length > 0) && (escapeRange > 0)) { int skipRange = 0; int skipLOS = 0; int skipPeaceZone = 0; final List<L2Object> targetList = new ArrayList<>(); for (L2Object trg : targets) { if (trg instanceof L2Character) { if (!isInsideRadius(trg.getX(), trg.getY(), trg.getZ(), escapeRange + getTemplate().getCollisionRadius(), true, false)) { skipRange++; continue; } // Healing party members should ignore LOS. if (((skill.getTargetType() != L2TargetType.PARTY) || !skill.hasEffectType(L2EffectType.HEAL)) // && !GeoData.getInstance().canSeeTarget(this, trg)) { skipLOS++; continue; } if (skill.isBad()) { if (isPlayer()) { if (((L2Character) trg).isInsidePeaceZone(getActingPlayer())) { skipPeaceZone++; continue; } } else { if (((L2Character) trg).isInsidePeaceZone(this, trg)) { skipPeaceZone++; continue; } } } targetList.add(trg); } } if (targetList.isEmpty()) { if (isPlayer()) { if (skipRange > 0) { sendPacket(SystemMessageId.DIST_TOO_FAR_CASTING_STOPPED); } else if (skipLOS > 0) { sendPacket(SystemMessageId.CANT_SEE_TARGET); } else if (skipPeaceZone > 0) { sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_PEACE_ZONE); } } switch (skill.getTargetType()) { // only AURA-type skills can be cast without target case AURA: case FRONT_AURA: case BEHIND_AURA: case AURA_CORPSE_MOB: case SELF: break; default: abortCast(); ThreadPoolManager.getInstance().scheduleAi(new Rotation(this, targets[0], skill), 0); return; } } mut.setTargets(targetList.toArray(new L2Object[targetList.size()])); } Не видел ни 1 сборку где был нормально реализован докаст. Время обрыва 0.5 сек. У себя реализовал, на остальных говноявах сборках это 0.4 сек, из-за чего анимация докаста есть, а дпса нету, хотя по офу и анимация должна обрываться. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 7 декабря, 2016 дело в том что я включил докаст, но мне нужно чтоб если враг резко забегал за колонну и каст прерывался, а если немного затупил и скилл уже дакастовался, а он забежал и тут домаг должен проходить. Можно ли это реализовать ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 7 декабря, 2016 Хроники хф ермут с исходниками. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 7 декабря, 2016 (изменено) дело в том что я включил докаст, но мне нужно чтоб если враг резко забегал за колонну и каст прерывался, а если немного затупил и скилл уже дакастовался, а он забежал и тут домаг должен проходить. Можно ли это реализовать ? // Create a task MagicUseTask to launch the MagicSkill at the end of the casting time (skillTime) // For client animation reasons (party buffs especially) 500 ms before! _skillCast = ThreadPoolManager.getInstance().scheduleEffect(mut, skillTime - 500); 500 - ОФФ значение. Этим значением и манипулируешь. Изменено 7 декабря, 2016 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 7 декабря, 2016 Спасибо. И еще один вопрос. Посоветуйте пожалуйста, нормальную среду для работы с исходниками ява. Если можно на подобии dev c++ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 7 декабря, 2016 Спасибо. И еще один вопрос. Посоветуйте пожалуйста, нормальную среду для работы с исходниками ява. Если можно на подобии dev c++ Использую Eclipce и не хочу ни на что менять. Всё в нем устраивает) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 7 декабря, 2016 Да эклипс хорош )) Но он как ВисуалСтудио, уж больно увесистый ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 7 декабря, 2016 огромное спасибо за помощь)) Даже не думал что так хорошо помогут ))) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
L2JEnterprise 113 Опубликовано 7 декабря, 2016 Да эклипс хорош )) Но он как ВисуалСтудио, уж больно увесистый ))) Ну, эклипс в раз 20 менее увесистый, чем вижуал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
voland3 1 Опубликовано 8 декабря, 2016 Проблеме не решена, все еще нужна помощь (( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты