Перейти к содержанию
Asterios

Механика атрибутов


SadMercury

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

Хотелось бы поинтересоваться у товарищей админов как настроено действие атрибутов на сервере? Ну хотя бы до 150 атрибута пока что.

Множество статей основанных на оффе указывают на такой график усиления post-47533-126817811355_thumb.jpg

Проведенные мной пару месяцев назад тесты на Хантере показали такую зависимость post-47533-126817812101_thumb.jpg

В графиках по горизонтали указана разница в атрибутах атаки нападающего и защиты цели, а по вертикале соответствующий множитель урона.

Подозреваю механика атрибутов на Хантере с того времени не изменилась и на Прайме она тоже абсолютно такая же.

Это так??

PS график взят из статьи http://quest.forumcl...f9/tema-t60.htm

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

Проведенные пару месяцев тесты на Хантере показали такую зависимость

С этого поподробнее.. где тесты?

Ну и чтобы я и остальные знали, что разговаривают со знающим человеком. Прибавка к урону идет только если разница в аттрибуте достигает определенного числа. Это показано на твоей 1й картинке с оффа. Вполне возможно, что ты тестил на зааттрибученых целях, следовательно не достигал нужной разницы аттрибута и прибавки урона, отсюда и возникают вопросы.

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

зааттрибученых целях? в смысле имеешь ввиду их защиту от этого атрибута?

конечно я считал разницу атрибутов, а не чистый атрибут атаки.

Тесты проводил в 2 окна, на простых физ ударах пухой с атрибутом. При различных вариантах бафов и прочих условий достагалась указанная разница атрибутов атакующего и цели. Вычислял средний дмг из 10-15 ударов, смотрел его изменение.

PS криты не учитывал ;P xD

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

Ну а терь скрины или фрапс от лица атакующего и цели.. Админов трудно убедить в том, что чтото работает не так как должно)

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

Вопрос выделен жирным.

PS что админы менять ничего не будут и так весь сервер знает, фрапсом можно не утруждать себя xD

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

График сделанный якобы для нашего сервера - бред. У нас для физ. атак идут фиксированные значения как и на официальном:

	/**
* Возвращает множитель для атаки из значений атакующего и защитного элемента. Только для простых атак и немагических скиллов.
* <br /><br />
* Для простых атак диапазон от 1.0 до 1.7
* <br /><br />
* Для скиллов от 1.0 до 2.0
* <br /><br />
* @param defense значение защиты
* @param attack значение атаки
* @param skill флаг использования скилла
* @return множитель
*/
private static double getElementMod(double defense, double attack, boolean skill)
{
double diff = attack - defense;
if(diff <= 0)
return 1.0;
else if(!skill)
return 1.0 + 0.007 * Math.min(Math.max(diff, -20), 100);
else if(diff < 75)
return 1.0 + diff * 0.0052;
else if(diff < 150)
return 1.4;
else if(diff < 290)
return 1.7;
else if(diff < 300)
return 1.8;
else
return 2.0;
}[/code]

Объяснять код не буду, кому надо сам поймет.

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

График сделанный якобы для нашего сервера - бред. У нас для физ. атак идут фиксированные значения как и на официальном:

    /**

     * Возвращает множитель для атаки из значений атакующего и защитного элемента. Только для простых атак и немагических скиллов.

     * <br /><br />

     * Для простых атак диапазон от 1.0 до 1.7

     * <br /><br />

     * Для скиллов от 1.0 до 2.0

     * <br /><br />

     * @param defense значение защиты

     * @param attack значение атаки

     * @param skill флаг использования скилла

     * @return множитель

     */

    private static double getElementMod(double defense, double attack, boolean skill)

    {

        double diff = attack - defense;

        if(diff <= 0)

            return 1.0;

        else if(!skill)

            return 1.0 + 0.007 * Math.min(Math.max(diff, -20), 100);

        else if(diff < 75)

            return 1.0 + diff * 0.0052;

        else if(diff < 150)

            return 1.4;

        else if(diff < 290)

            return 1.7;

        else if(diff < 300)

            return 1.8;

        else

            return 2.0;

    }

Объяснять код не буду, кому надо сам поймет.

это дано только избранным видимо    :o

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

Эмм всетаки не все сильны в програмировании,думаю для 99% людей серва это китайская грамота.Можете хоть в 2-х словах разъяснить че ето значит?

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

Эмм всетаки не все сильны в програмировании,думаю для 99% людей серва это китайская грамота.Можете хоть в 2-х словах разъяснить че ето значит?

я умею читать между строк и могу тебе сказать что Ди имел ввиду что то типо того "У НАС ВСЁ ПРАВИЛЬНО!!11" 

можешь даже не вникать в таблицы  :D

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

Оффтоп: а сервер на J# написан чтоль?или в чистой яве такой же синтаксис?

по теме:

для не понимающих:

расчет урона идет таким образом:

1. если разница между атакующим и защитным атрибутам равна нулю, то урон не повышается.

2. если используется не скилл (простые удары оружием), то урон рассчитывается как "базовый + 0.007 * [минимум между [максимумом из разницы и -20] и 100]"

3. если разница между атакующим и защитным атрибутом меньше 75, то урон рассчитывается как "базовый + разница * 0.0052"

4. если разница между атакующим и защитным меньше 150, то урон равен базовому * 1.4

5. если разница между атакующим и защитным меньше 290, то урон равен базовому * 1.7

6. если разница между атакующим и защитным меньше 300, то урон равен базовому * 1.8

7. в иных ситуациях (хз каких честно даж) урон равен двум базовым.

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

На вскидку - в коде написано, что в зависимости от разницы attack - defense, возвращается коэффициент (множитель), на который умножается нанесенный дамаг. :)

Это для простых атак.

При использовании скиллов - чуть сложнее, т.к, по идее, ещё должна учитываться заточка скила на атрибут. :)

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

Оффтоп: а сервер на J# написан чтоль?

Просьба при мне такими ругательными словами не выражаться...

Синтаксис Java. Просто мы немного отошли от стандартов и пишем в своем стиле, ближе к С++.

При использовании скиллов - чуть сложнее, т.к, по идее, ещё должна учитываться заточка скила на атрибут. :)

Нет, со скиллами там наоборот проще, пропущена одна ступенька. В метод передается уже конечное значение аттрибута, с учетом всех заточек и прочей гадости.

[минимум между [максимумом из разницы и -20] и 100]

Типа, понятнее чем там написал? :D

7. в иных ситуациях (хз каких честно даж) урон равен двум базовым.

300 и выше.

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

Нет, со скиллами там наоборот проще, пропущена одна ступенька. В метод передается уже конечное значение аттрибута, с учетом всех заточек и прочей гадости.

Ну там просто больше написано "+" ещё какой-то математический минимум/максимум, короче - на вид - сложнее простой разницы значений attack - defense. :)

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

Обычный условный оператор

if условие then

оператор1

else

оператор2

diff - обозначение в коде для разницы аттрибута

if... else... - если (условие) условие diff выполняется, то возвращается одно значение множителя урона, а если не выполняется, то возвращается другое значение (значение разницы аттрибута и множителей смотрите в коде )

P.S. Кто там сказал что тут 99% программирование не понимает? Уже как минимум трое отписалось по расшифровке кода ;D

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

Ну там просто больше написано "+" ещё какой-то математический минимум/максимум, короче - на вид - сложнее простой разницы значений attack - defense. :)

Это наоборот, только для простых ударов. Разве не видно приставочку "!" (отрицание) ?

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

Нет, со скиллами там наоборот проще, пропущена одна ступенька. В метод передается уже конечное значение аттрибута, с учетом всех заточек и прочей гадости.

можна код пожалуйста, лучше 1 раз увидеть чем 100 раз услышать)

Изменено пользователем ))d(•-•)b((
Ссылка на комментарий
Поделиться на другие сайты

Одни программисты собрались блин. :) Не увидел в коде ничего нестандартного для явы. Или Вы имеете ввиду, что открывающую скобочку на новую строку переносите? Ну так все сишники, перешедшие на яву так делают!  :tongue:

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

можна код пожалуйста, лучше 1 раз увидеть чем 100 раз услышать)

Боюсь, ты его не поймешь :)

Там сложный калькулятор, состоящий из функций, которые как конструктор собираются из множества разных мест в сервере. Все это обсчитывается и получается результат, который уже передается в указанную выше функцию.

Причем функция может быть описана как напрямую в коде, так и подгружаться из xml описаний скиллов, либо из sql базы.

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

Одни программисты собрались блин. :) Не увидел в коде ничего нестандартного для явы. Или Вы имеете ввиду, что открывающую скобочку на новую строку переносите? Ну так все сишники, перешедшие на яву так делают!  :tongue:

Ну, мы довольно много подобных отступлений от стандартов сделали :)

На самом деле "родные" java кодеры пишут совсем по-другому, и это вроде даже где-то описано.

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

На самом деле "родные" java кодеры пишут совсем по-другому, и это вроде даже где-то описано.

Не знаю,  стандартов тоже не читал. Но смотрел код sun-овцев - без поллитра не разберешься. структурные отступы у них не в почете... :)

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

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

для примера: большАя часть разработчиков IBM IDS 10.xx+ индусы

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

И такое бывает? :D

бывает, если, к примеру, в бижу попался аугмент на защиту от стихии (лично у меня, он помимо защиты 20 атрибута, давал ещё и к атаке 20 атрибута)

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

Причем тут защита? Oo Аугмент в биже не может дать + к атрибут атаке или это тупо баг или такая вот фича местная.

к тому, что 300 атрибута - не предел.

добавлю: в статах было написано, тип атаки: вода 20.

при том, что была одета тока аугмент бижа и всё. т.е. ни пушка, ни бафа, ни шмота - ничего не было.

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

И такое бывает?  :D

некр...  + 300 атрибута в палке, курко баф на дарк атрибут (+20-30) заточка вампирика на дарк (+20-30)  заточка кости на дарк  (+20-30) = 360-390 атрибута (не считая талисманы и аргументацию)

вот собстевнно интересует для магичечких скилов росчет атрибута

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

 пример атрибута выше трёхсот (святость): 300 в пухе +20 холи випон+30 данс оф лайт= 350. 

А если ещё у моба отрицательный резист к святости, как например на ХБ -95, там вообще мы имеем 445, но толку от этого уже нет, т.к. после разницы в 300 бонус не идёт. 

 Заточкой скиллов на атрибут святости этот показатель ещё выше поднять можно

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

Боюсь, ты его не поймешь

Там сложный калькулятор, состоящий из функций, которые как конструктор собираются из множества разных мест в сервере. Все это обсчитывается и получается результат, который уже передается в указанную выше функцию.

Причем функция может быть описана как напрямую в коде, так и подгружаться из xml описаний скиллов, либо из sql базы.

Механизм универсальный, и его сложно понять в целом, но это и не требуется, главное понимать отдельные составляющие

Даешь open source! Программисты хотят видеть изнанку сервера =)

З.Ы. Уже давненько просил исходники по атрибутам =)

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

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

для примера: большАя часть разработчиков IBM IDS 10.xx+ индусы

Не поверишь, но я сейчас как раз и работаю c распределенной системой, полностью написанной индусами и знаком с их кодом не по наслышке. А тот код писал Scott Violet, автор части классов библиотеки swing. вроде не индус, хотя хз..  ;D

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

Math.min(Math.max(diff, -20), 100)

Обьясните плз, че за функции? Не вкурил  :mellow:

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

Math.min(Math.max(diff, -20), 100)

Обьясните плз, че за функции? Не вкурил  :mellow:

Из двух чисел выбирают максимум и минимум соответственно.

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

diff это атака - дэф

Функция берет максимальное из чисел diff и -20, а затем минимальное из чисел 100 и результата предыдущего вычисления

Пример:

150 атаки, 60 дэфа: diff = 90

макс(90,-20) = 90; мин(90,100) = 90

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

после разницы в 300 бонус не идёт. 

оно то так, но

diff = attack - defense;
Интересует дейсвие атрибута для маг скилов, т.к было изложено
  Только для простых атак и немагических скиллов. 

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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