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

Скорость атаки

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

Приветствую.

Есть проблема со скоростью атаки  выше 1500 на акисах (стоит ограничение), несколько ударов идут с анимацией а потом резкий скачок наверно на скороть 10к и удары идут как из пулемета, соски так же улетают.

Тем таких куча но хоть бы одно решение...

Флуд протектор, формулы и пакеты в порядке ... кто решил проблему прошу помочь.

Заранее благодарю.

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


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

Базовая скорость атаки в формулах 333?

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


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

Базовая скорость атаки в формулах 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());

    }

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

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


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

Это не то, это скорость скилов, но не скорость атаки. Смотри l2character.java

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


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

Это не то, это скорость скилов, но не скорость атаки. Смотри 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());

        }

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


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

Это формула перезарядки скилов) чем больше скорость атаки или каста тем меньше перезарядка.

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


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

Это формула перезарядки скилов) чем больше скорость атаки или каста тем меньше перезарядка.

может 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)

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

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


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

Смотри метод calculateReuseTime

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

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


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

Смотри метод 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);

        }

    }

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


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

Да это он

 

Пробуй ставить больше чем 333, если меньше будет еще быстрее

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

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


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

Да это он

 

Пробуй ставить больше чем 333, если меньше будет еще быстрее

344 400 ставил эффекта 0

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


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

так ты поставь 1000 для теста. 

 

Причем  на лук и на default. На 400 можно разницу и не увидеть.

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

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


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

Да и какая то у тебя не полная формула

 

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());
}
 
такая должна быть
Изменено пользователем Benny
  • Upvote 1

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


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

 

Да и какая то у тебя не полная формула

 

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 у них нет такой проблемы как я у себя обнаружил

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


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

на 1000 "пулемт" стал включаться быстрей...

а лук на 1000 , стал не соответствовать скорости атаки у перса

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


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

 

 

это на сборке l2jx у них нет такой проблемы как я у себя обнаружил

Дополни формулу, чего не хватает я подсказал.

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

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


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

Дополни формулу, чего не хватает я подсказал.

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

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


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

тебе крупно повезло что когда Смоки_Мо фиксил данный баг

сделал комент

if (_actor instanceof L2PcInstance && ((L2PcInstance) _actor).isAttackingNow())
return;
 
нужно дописать в файл 
AbstractAI
 
метод 
moveTo

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


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

 

тебе крупно повезло что когда Смоки_Мо фиксил данный баг

сделал комент

if (_actor instanceof L2PcInstance && ((L2PcInstance) _actor).isAttackingNow())
return;
 
нужно дописать в файл 
AbstractAI
 
метод 
moveTo

 

видно не дофиксил))) есть такая запись у меня

 

и все равно "пулемет" работает

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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