Nicoxxxx 0 Опубликовано 6 апреля, 2016 Приветствую. Есть проблема со скоростью атаки выше 1500 на акисах (стоит ограничение), несколько ударов идут с анимацией а потом резкий скачок наверно на скороть 10к и удары идут как из пулемета, соски так же улетают. Тем таких куча но хоть бы одно решение... Флуд протектор, формулы и пакеты в порядке ... кто решил проблему прошу помочь. Заранее благодарю. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 Базовая скорость атаки в формулах 333? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 (изменено) Базовая скорость атаки в формулах 333? public static final int calcAtkSpd(L2Character attacker, L2Skill skill, double skillTime) { if (skill.isMagic()) { return (int) ((skillTime * 333) / attacker.getMAtkSpd()); } return (int) ((skillTime * 333) / attacker.getPAtkSpd()); } Изменено 6 апреля, 2016 пользователем Nicoxxxx Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 Это не то, это скорость скилов, но не скорость атаки. Смотри l2character.java Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 Это не то, это скорость скилов, но не скорость атаки. Смотри l2character.java int reuseDelay; if (skill.isStaticReuse()) reuseDelay = (skill.getReuseDelay()); else{ if (skill.isMagic()) reuseDelay = (int) (skill.getReuseDelay() * getStat().getMReuseRate(skill)); else reuseDelay = (int) (skill.getReuseDelay() * getStat().getPReuseRate(skill)); reuseDelay *= 333.0 / (skill.isMagic() ? getMAtkSpd() : getPAtkSpd()); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 Это формула перезарядки скилов) чем больше скорость атаки или каста тем меньше перезарядка. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 (изменено) Это формула перезарядки скилов) чем больше скорость атаки или каста тем меньше перезарядка. может doAttack? больше с 333 нету , ну вот еще на каждый тип атаки if (weaponItem == null) hitted = doAttackHitSimple(attack, target, timeToHit); else if (weaponItem.getItemType() == L2WeaponType.BOW) hitted = doAttackHitByBow(attack, target, timeAtk, reuse); else if (weaponItem.getItemType() == L2WeaponType.POLE) hitted = doAttackHitByPole(attack, target, timeToHit); else if (isUsingDualWeapon()) hitted = doAttackHitByDual(attack, target, timeToHit); else hitted = doAttackHitSimple(attack, target, timeToHit); но там стоит (timeAtk / GameTimeController.MILLIS_IN_TICK) Изменено 6 апреля, 2016 пользователем Nicoxxxx Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 (изменено) Смотри метод calculateReuseTime Изменено 6 апреля, 2016 пользователем Benny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 Смотри метод calculateReuseTime public int calculateReuseTime(L2Character target, L2Weapon weapon){ if (weapon == null) return 0; // only bows should continue for now int reuse = weapon.getReuseDelay(); if (reuse == 0) return 0; reuse *= getStat().getWeaponReuseModifier(target); double atkSpd = getStat().getPAtkSpd(); switch (weapon.getItemType()) { case BOW: return (int) (reuse * 345 / atkSpd); default: return (int) (reuse * 312 / atkSpd); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 (изменено) Да это он Пробуй ставить больше чем 333, если меньше будет еще быстрее Изменено 6 апреля, 2016 пользователем Benny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 Да это он Пробуй ставить больше чем 333, если меньше будет еще быстрее 344 400 ставил эффекта 0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 (изменено) так ты поставь 1000 для теста. Причем на лук и на default. На 400 можно разницу и не увидеть. Изменено 6 апреля, 2016 пользователем Benny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 (изменено) Да и какая то у тебя не полная формула public int calculateReuseTime(final L2Weapon weapon) { if (isTransformed()) { switch (getAttackType()) { case BOW: return (int) ((1500 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); case default: return (int) ((1200 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); } } if ((weapon == null) || (weapon.getReuseDelay() == 0)) { return 0; } return (int) ((weapon.getReuseDelay() * 333) / getPAtkSpd()); } такая должна быть Изменено 6 апреля, 2016 пользователем Benny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 Да и какая то у тебя не полная формула public int calculateReuseTime(final L2Weapon weapon) { if (isTransformed()) { switch (getAttackType()) { case BOW: return (int) ((1500 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); case default: return (int) ((1200 * 333 * getStat().getWeaponReuseModifier(null)) / getStat().getPAtkSpd()); } } if ((weapon == null) || (weapon.getReuseDelay() == 0)) { return 0; } return (int) ((weapon.getReuseDelay() * 333) / getPAtkSpd()); } такая должна быть public int calculateReuseTime(final L2Character target, final L2Weapon weapon) { if (weapon == null) { return 0; } int reuse = weapon.getAttackReuseDelay(); if (reuse == 0) { return 0; } reuse *= (int)this.getStat().getReuseModifier(target); final double atkSpd = this.getStat().getPAtkSpd(); switch (weapon.getItemType()) { case BOW: { return (int)(reuse * 345 / atkSpd); } default: { return (int)(reuse * 312 / atkSpd); } } } это на сборке l2jx у них нет такой проблемы как я у себя обнаружил Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 на 1000 "пулемт" стал включаться быстрей... а лук на 1000 , стал не соответствовать скорости атаки у перса Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mantra 28 Опубликовано 6 апреля, 2016 (изменено) это на сборке l2jx у них нет такой проблемы как я у себя обнаружил Дополни формулу, чего не хватает я подсказал. Изменено 6 апреля, 2016 пользователем Benny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 Дополни формулу, чего не хватает я подсказал. ок попробую... просто грешил что гдето стоит проверка на скорость или пакеты какие то перекрываются... и получается такая ерунда , тк формула сдернута с сборки где такой проблемы нет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 6 апреля, 2016 тебе крупно повезло что когда Смоки_Мо фиксил данный баг сделал комент if (_actor instanceof L2PcInstance && ((L2PcInstance) _actor).isAttackingNow()) return; нужно дописать в файл AbstractAI метод moveTo Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nicoxxxx 0 Опубликовано 6 апреля, 2016 (изменено) тебе крупно повезло что когда Смоки_Мо фиксил данный баг сделал комент if (_actor instanceof L2PcInstance && ((L2PcInstance) _actor).isAttackingNow()) return; нужно дописать в файл AbstractAI метод moveTo видно не дофиксил))) есть такая запись у меня и все равно "пулемет" работает Изменено 6 апреля, 2016 пользователем Nicoxxxx Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты