Баг с крит-локом
-
мне тоже кажется что, вполне могли иметь место случайные несостыковки наших "исправлений" с оригиналным японским кодом, например когда монстрам стопрейт отключили или еще в какой-то момент...
и еще, помните такой глюк когда нажимаешь куда-то идти и тут получаешь удар. чар как бы замирает на месте где его ударили, а потом резко добегает (почти телепортируется) на место назначения. может тут какой-то подводный камень?
-
@antena_nashi:
Azriel, по идее должно держать 2-3 сина теперь -_- конечно это не так как на офе, но лучше чем ничего...В том то и суть, что это если подумать, ничего не изменится. Какой должен быть деф, чтобы удержать хотя бы средненькую атаку? о_О В пару раз больше ее численностью? о_О Бред получается.
Давно уже стало ясно, что каждый из класов вносит в деф как систему чтото свое, только присущее ему. Сины выполняли роль передвигающихся многоразовых трапов. =))) Какой в них смысл, если теперь их нужно две-три штуки на одного? Тем более на иРО пишут, что одного наткритсина с приличным аспд должно хватать. Получается поменяем шило на мыло. Псевдонеправильный стопрей до фикса, на вообще непонятно каким боком соответствующий механике Гравити умножающийся стопрейт. +_+
-
@unnamed01:
и еще, помните такой глюк когда нажимаешь куда-то идти и тут получаешь удар. чар как бы замирает на месте где его ударили, а потом резко добегает (почти телепортируется) на место назначения. может тут какой-то подводный камень?До поза-позавчера вроде движение не останавливалось при ударе. Теперь останавливается.
-
Все расчёты выполнены при помощи исходного кода jAthena 1540
И на основе формул взятых с <!-- m --><a class="postlink" href="http://rodatazone.simgaming.net/mechanics/substats.php">http://rodatazone.simgaming.net/mechanics/substats.php</a><!-- m -->Часть 1: Разбор Исходного кода.
Файл: src\map\status.cint status_get_dmotion(struct block_list *bl)
{
int ret;
struct status_change *sc_data;nullpo_retr(0, bl); sc_data = status_get_sc_data(bl); if(bl->type==BL_MOB && (struct mob_data *)bl){ ret=mob_db[((struct mob_data *)bl)->class].dmotion; if(battle_config.monster_damage_delay_rate != 100) ret = ret*battle_config.monster_damage_delay_rate/100; } *else if(bl->type==BL_PC && (struct map_session_data *)bl){*
-
ret=((struct map_session_data *)bl)->dmotion;*
-
if(battle_config.pc_damage_delay_rate != 100)*
-
ret = ret*battle_config.pc_damage_delay_rate/100;*
-
}*
else if(bl->type==BL_PET && (struct pet_data *)bl)
ret=mob_db[((struct pet_data *)bl)->class].dmotion; else
return 2000;if((sc_data && sc_data[SC_ENDURE].timer!=-1 &&
(bl->type == BL_PC && !map[((struct map_session_data *)bl)->bl.m].flag.gvg)) ||
(bl->type == BL_PC && ((struct map_session_data *)bl)->special_state.infinite_endure))
ret=0;return ret;
}
Выделеная часть функции проверяет файл battle_athena.conf и параметр
player_damage_delay_rate. Этот параметр является процентом от основной переменной, отвечаюшей за стоп рэйт dmotion.
Другими словами при значении 100 используется
не изменённое значение dmotion, при параметре ниже или выше значение dmotion меняется.sd->dmotion = 800-sd->paramc[1]*4;
Данная строка просчитывает базовое значение переменной dmotion для расчёта
Используется переменная paramc[1] значение которой Agi + Бонусы + Карты.
Эту строку можно упростить: dmotion=800-(Agi+бонусы+карты)*4
Исходя из этого на стоп рэйт на прямую влияет стат Agility персонажа.Значение переменной dmotion является милисекундами, исходя из файла timer.c,
в котором используется API функция Windows gettickcount()
<!-- m --><a class="postlink" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/gettickcount.asp">http://msdn.microsoft.com/library/defau ... kcount.asp</a><!-- m -->Часть вторая: Разбор формул
Сокращения
HPM = Количество Ударов в минуту
TBH = Время в милисекундах между ударами
SR = Стоп Рэйт (Время в милисекундах)Формулы
SR=800-Agi4
HPM= 60/ (Delay / 50)
ASpd = (200 - delay)
delay = WeaponDelay - ([WeaponDelayAgi/25] + [WeaponDelay*Dex/100])/10
В этой формуле присутствует параметр SpeedMods, про помощи которого расчитывается увеличение ASPD от Карт и Расходников.
Для этого расчёта он не представляет важности по сему я его упускаю.
TBH= 60000/HPMЧасть Третья: Расчёт в соответствии с базовой конфигурацией сервера.
Подопытным для расчётов я выбрал Катар Ассасина, который часто
используется как «Крит Локер». Удар ассасина не много отличается от ударов
других персонажей, так как существует Off Hand удар который наносится
сразу после основного и тоже является параметром влияющим на SR.Для полного обездвиживания перонажа TBH должен быть равен или меньше SR
Начиная с версии 1479 jAthana параметр player_damage_delay_rate установлен на 10,
что является уменьшением значения dmotion до 10% от базового.
Возьмём к примеру персонажа с 50 аги.
SR=800-50*4=600 милисекунд.
10% от 600 = 60 милисекунд.
Это значит что после нанесения удара персонаж будет обездвижен на 60 милисекунд.Далее в соотвествии с формулой вычесления ASPD нужно выяснить, какой должна
Быть минимальная скорость атаки для полного обездвиживания этого персонажа.
Для этого в формулу я подставлял различные значения Agi и Dex. Так как я не использую
в расчётах расходники и карты, повышающие скорость атаки, значения Agi и Dex
завышены намерено, что бы достичь нужного ASPD.
(Здесь описан окончательный результат расчётов).
Agi = 180; Dex = 160; Оружие: Катар WeaponDelay = 50.
delay = (50 - ([50180/25] + [50160/100])/10) = 50 - (360 + 80) / 10 = 50 - 440 / 10 = 6
HPM= 60/ (6 / 50) = 500
TBH= 60000/500 = 120 так как катар наносит 2 удара TBH делится на 2
Окончательный Результат: TBH = 60
ASPD=200-6=194
Как мы видим что бы полностью обездвижить персонажа с 50 аги ASPD должен
превышать максимально возможное значение 190.*Часть Четвёртая: Расчёт параметра player_damage_delay_rate *
в соответствии с данными с форума ragnainfo.com
<!-- m --><a class="postlink" href="http://www.ragnainfo.net/forums/viewtopic.php?t=25728">http://www.ragnainfo.net/forums/viewtopic.php?t=25728</a><!-- m -->
В этом топике описан так называемый крит лок и возможность его достичь
при ASPD ~175 Для расчёта я не стал брать минимальный ASPD указаный в топике,
а взял аспд 177.
Для достижения 177 аспд мне понадобилось 100 Agi и100 DexDelay = 50 - ([50110/25] + [50100/100])/10 = 50-(220+50)/10 = 50-270/10 = 23
Aspd = 200-23=177Расчёт TBH
HPM=60/(delay/50)=130
TBH=60000/130/2
TBH = 230Расчёт player_damage_delay_rate.
Время между ударами при ASPD 177 = 230
Соответсвенно нужно подогнать значение SR у персонажа которого нужно
обездвижить. Делается это простым делением
230/60= 3,83333 Округляем до 4***Итак, исходя из всех расчётов значение player_damage_delay_rate превышает то, ***
что мы имеем на нашем сервере в 4 раза и должно быть увеличено. -
-
Но если оно превышает, то зачем же еще увеличивать?
Точную цифру для параметра player_damage_delay_rate я что-то не вижу. -
Zeno, я так понимаю ты даже не читал пост. Если бы читал то то не задал бы подобного вопроса.
Ну так уж и быть для тех кто не читал.
Точная цифра player_damage_delay_rate = 40. -
Эм... Но если должно быть 40 по расчетам, то о чем все ныли пока стояло 50?
-
Zeno,
Моё личное мнение это проблема с эмулятором, так как изменений в исходниках, насколько мне известно сделано не мало.
И вполне возможно существует не стыковка фиксов,
которая и вызывает проблемы. Единственный способ это проверить, запустить
тестовый сервер с ЧИСТЫМ эмулятором, без каких либо изменений и проверять,
с разными рэйтами(как уже предлогалось несколько раз). И ещё возможно в ветке 15** были сделаны какието изменения в расчёте стоп рэйта (14** я не проверял). В любом случае, то значение которое установлено сейчас в корне не верно, и мне кажется что и значение 100 тоже не верно,т.е. нужно проверять.ЗЫ Если получится попробую сегодня вечером запустить 15** у себя и проверить что из этого выйдет.
-
Не согласен с Azriel.
Первое:
Я уже приводил упрощенный расчет значения стопрейта необходимого для наступления станлока при АСПД атакующего равном 175. Это 500мс. Для АСПД 177 соответственно 460мс.
Если основывать расчет на формуле SR=(800-Agi4)(player_damage_delay_rate/100), то для персонажа с 1 AGI (гипотетического визарда, которого пытаются остановить) получим:
player_damage_delay_rate:100 - SR=(800-4) = 796мс (ASPD ~ 160)
player_damage_delay_rate:50 - SR=(800-4)(50/100)=398мс (ASPD ~ 180)
player_damage_delay_rate:10 - SR=(800-4)(10/100)=79,6мс (ASPD ~ 196)
Сравните с приведенными выше значениями 460-500мс.Теперь от обратного:
SR= 500мс = (800-4)(x/100), где х - искомая величина параметра player_damage_delay_rate. В результате несложного расчета получаем player_damage_delay_rate ~ 63.
SR= 460мс = (800-4)(x/100), player_damage_delay_rate ~ 58.То есть значение это локализуется в районе 60-и, что несколько больше испытанного нами в настройках сервера. Это объясняет почему мы не наблюдали эффективного станлока при 177 АСПД, когда в настройках сервера было выставлено player_damage_delay_rate:50.
Для персонажа с 50 AGI данный параметр оказался бы близок к 80-85, но вообще-то такой расчет некорректен.
Второе:
@Azriel:
Удар ассасина не много отличается от ударовдругих персонажей, так как существует Off Hand удар который наносится
сразу после основного и тоже является параметром влияющим на SR.@Azriel:
TBH= 60000/500 = 120 так как катар наносит 2 удара TBH делится на 2
Окончательный Результат: TBH = 60Откуда взята информация, что удары с двух рук считаются как два разнесенных по времени удара??? Да еще разнесенных ровно на ASPD_delay/2. Куда логичнее предположить, что разделен только расчет попаданий и урона, но оба удара считаются одновременно.
В этом случае значение, вычисленное Azriel оказывается вдвое меньше, чем необходимо в действительности. То есть опять приходим к величине player_damage_delay_rate:80. Но как уже было сказано, эти расчеты сделаны для персонажа с 50 AGI, а это некорректно.
-
удар с джура считаеться как 1 удар, урон наноситься сразу, оффхенд удар попадает если попал простой. Только анимация дополнительная, имхо.
Кстати раньше не замечал разницы между стопами виза (1-10 аги) и сина (80-90 аги) стопались оба по ощущениям одинаково.
На этом ГВ 1 раз удалось застопить найта на 1-2 секунды, но еще раз повторить сей трюк не получилось) (хотя мождет он просто тормознул в лаге...)
З.Ы. на рагнаинфо писали что крит-лок с 174-175 аспд начинаеться, зачем считать с 177? -
Если с 174-175, то выйдет что player_damage_delay_rate должен быть около 65, только и всего. ИМХО, это не принципиально, а вот то, что число получилось ощутимо больше 50-и важно.
-
Нельзя так просто отбрасывать оффхэнд дамаг у сина. Если бы это ничего не решало, то с 175 аспд станлочили бы не только сины. 175+ аспд имеют отнюдь не только сины, но почему то про другие профы станлок упоминается только при очень большом аспд. Плюс такая инфа: соник блоу, считается как один удар, но имеет анимацию 8, причем эмуляция «боли» идет на каждый из этих 8 ударов. На рагнаинфо както встречал инфу, где говорилось, что соник должен станлочить на время действия анимации. Попробую поискать, но точно не уверен, что найду, ибо воспринял тогда это как интерестную инфу. Не более. +_+
Задержка от ударов сина должна быть в сумме 500 мс. Таким образом деление на 2 имхо оправдано. Тоже думаю, и уже высказывал както, что похоже на конфликты с прошлыми фиксами. Если формула менялась, но фиксы делались на старую формулу, то думаю это не могло не отразится.
-
Угу, у моего рога было 178 аспд под берсом и кастом, с дексой за 100 попадал по всем ( ну кроме суперагильных синов и хантов может быть)...лока не наблюдалось - крузы отрывались потихоньку.
(я говорю про наш старый стопрейт) -
Тайлен, еще раз спрашиваю - откуда информация, что оффхэнд дамаг идет по времени отдельно от основного?
З.Ы. станлочат не только сины... просто для эффективного станлока надо иметь и АСПД и очень высокий процент попаданий, а это себе могут позволить лишь крит-билды. Аги-крит найты редки, хантеры у нас другим заняты, остаются сины да роуги. У синов с катарами х2 критрейт, вот и становятся они главными по станлоку.
-
Keincross, тесты.
-
Keincross, Применять ввс еще никто не запрещал. Эффект будет даже лучше чем от критов, ибо ввс всегда попадает, в отличии от критов, на которые может влиять лакидодж. Почему же в качестве локеров используют в основном синов? А не все чары с ввс в руке, с аспд>=175? Может всетаки дело, что 175 аспд не для всех чаров, а только для синов? А Основное их отличие в оффхенд дамаге.
Плюс я написал. Соник считается как один хит, но анимация попадания идет как от 8. Причем пока идет анимация, отойти от сина очень трудно. Фактически наблюдается станлок. Назови принципиальное отличие от оффхэнда?
-
Тайлен, ввс тоже мажет по лаки доджу О_о
-
Да? х_Х Хм, наверно приглючилось. Тогда ошибся.
Хотя ничего принципиально не поменялось, ввс можно спокойно имитировать крит. Тоесть он всегда будет попадать, за исключением лакидоджа. Вот.)))
-
@Тайлен:
Плюс я написал. Соник считается как один хит, но анимация попадания идет как от 8. Причем пока идет анимация, отойти от сина очень трудно. Фактически наблюдается станлок. Назови принципиальное отличие от оффхэнда?Не трудно отойти.. и небыло трудно при 100 стоп рейте. Задержка от крита такая же, как и от юпитера, файр болта и т.д. -
Dissector, на сколько я помню, при анимации юпа персонаж ходит рывками, т.е. на расчет делея может влиять и анимация, тогда оффхенд даёт преимущество.
В этом топике говорили, что делей у критов и у простых ударов один и тот же, но я не помню чтоб как стоперов использовали дексовых катар синов, ни разу такого не видел. Имхо, у крита стоп рейт немного другой (хотя формулы вроде говорят о другом). По ощущениям - простой удар задерживал на анимацию и некоторые время, но во время прохождения простого удара можно было двигаться - крит же просто прибивал к месту на некоторое время, т.е. как будто был запрет движения (кликания двигаться не помогали) на время прохождения задержки от крита. Т.к. как только вместо крита проходил простой удар, даже не мисс, жертва могла сдвинуться на шаг. Мне это было хорошо заметно, т.к. использую не 3 СС, а 2 СС и гидру, и без глории иногда проходят простые удары.