Sa, 2017-11-25, 03:12
Diablo: The Hell
Приветствую Вас Новичок | RSS
Главная | Калькулятор - Diablo: The Hell - forums | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Mordor 
Diablo: The Hell - forums » Форум The Hell » Адская Кузница » Калькулятор (для подсчёта урона с учётом всех модификаторов)
Калькулятор
Makantal Date: Su, 2009-06-14, 19:48 | Message # 1
Splint Mail
Группа: Череп
Посты: 497
Репутация: 11
Замечания: 0%
Статус: Offline
Ну вот. То что я когда-то обещал сделать наконец-то готово. Выкладываю свой, надеюсь хоть какой-то вклад, в развитие мода. Может быть даже поможет модить игру (ну чем чёрт не шутит). Возможно также пригодится для игроков.

Сделано в Mathcad'е v14.020 (поскольку в Excel'е особенно не работал и соответственно не знаю, как там такое воплотить). По поводу обратной совместимости - тоже не знаю. С более поздними версиями должно по идее работать. Единственно что не исключено - могут поехать надписи (у самого так было при переходе с 13 на 14 Mathcad).
Последняя версия мода на момент выхода калькулятора - 1.83.

По применению (в том числе и кое-что для тех, кто мало знаком с Mathcad'ом):
1. Если в начале прога выкинет предупреждение о наличие заскриптованных объектов (что там вирусы дескать могут быть) и спросит отключить ли их, нажмите "Нет": используемые скрипты - это часть калькулятора, а не вирусы. Если надоедает каждый раз получать это сообщение, то можно отключить опцию запроса подтверждения о неотключении скриптов (Tools -> Preferences -> вкладка Script Security, выбрать Low Security).
2. Проверьте флажок "0/0=0" (Tools -> Worksheet Options -> вкладка Calculation). Если отключено, то включите. Если кто вдруг решит покопаться в формулах, используемых для расчёта, то выражение типа x/x не ошибка, так сделано специально (с учётом флажка "0/0=0").
3. При каждом изменении в вводимых данных (даже если просто передвинуть местоположение их ввода) Mathcad пересчитывает заново все вычисления, в которых эти данные используются. Т.е. если надо изменить не одно, а несколько вводимых значений, а потом посмотреть, что же получится, то придётся ждать после каждого нового ввода, пока он там всё пересчитает, даже если эти промежуточные значения нас не интересуют. Если это всё выполняется быстро - то без проблем. Если же нет - то решить проблему можно сняв флажок "Automatic Calculation" (Tools -> Calculate). Вычисление тогда запускать по нажатии Ctrl+F9. Если не снимать флажок, то можно прерывать вычисления по нажатии Esc. После какого-то изменения в вводимых данных (равно как и после перемещения листа) вычисления начнутся заново.
4. При введении чисел в поля в качестве разделителя целой и дробной частей необходимо использовать запятую, а не точку.
5. Расширенные настройки находятся правее. Расчётные формулы - ещё правее.
6. По поводу настроек. На настоящий момент нет разницы между типами оружия: меч и меч+меч, булава и булава+булава, посох и без оружия. Включил в выбор оружия все эти типы на всякий случай (если кто-то не знает, что нет разницы или вдруг забудет, да и вдруг в будущем ситуация поменяется - в дополнительных настройках есть возможность кое-что изменить). Также тип монстра "другой" - сейчас не существует (но выбрать можно - будет означать, что он не принадлежит ни к нежити, ни к демонам, ни к животным). Боковой тип атаки решил пока оставить возможным для выбора при любом типе оружия (в том числе и луков) – тоже всякий случай, вдруг чего изменится. Но на настоящий момент он работает не на всех комбинациях, так что с этим надо быть внимательнее.
7. Касательно дополнительных настроек - там тоже много чего разбито на частные случаи. Тоже на всякий пожарный, может в будующем пригодится.
8. В таблицах, где написано "да" или "нет" за положительный ответ принимается "да" (не зависимо от того, какие буквы были использованы - сторчные или заглавные) или 1. Всё остальное - значит "нет".
9. В дополнительных настройках изначально выставлены те значения, которые используются в последней на момент выхода калькулятора версии. Учтены также и косяки (вроде того, что +50% урона против демов/нежити не действует на меч+булава, топор и посох). Единственный момент, который я выставил приблизительно (на глаз) - это настройки эффекта 0 - z% случайного урона, т.к. используемых на данный момент параметров не знаю (это у Mordor'а надо спрашивать).
10. Если выставить "класс" монстра – босс, то в программе это не повлияет на получаемый им урон (оно влияет на действие различных эффектов). Правее надо ввести соответствующее сопротивление.
11. В поле DFE отрицательное значение соответствует уменьшению получаемого монстра урона, положительное – наоборот.
12. Два имеющихся графика отображают одно и то же. Просто тот, что ниже - в большем масштабе и с подписями данных.
13. Справа от большого графика - таблица данных урона и соответствующих им вероятностей выпадения в %. Там же и контрольная сумма вероятностей. То что она не равна строго 100 - нормально, но если вдруг кто-то обнаружит очень сильное отклонение (ну где-то большее, чем 0,000001) - то просьба написать об этом. Я конечно проверял там всё не раз, но всё-таки тоже человек и мог в принципе где-то что-то упустить.

Теперь по поводу алгоритма подсчёта урона.
1. Крит. удар.
2. Модификация от оружия против какого-то типа монстра (например меч против нежити - множитель 0,5).
3. Эффекты +50% урона демонам/нежити.
4. Множитель от эффекта 10% нанести тройной урон.
5. Случайный урон.
6. Боковые атаки.
7. Сопротивления монстров.
8. DFE.
9. Ограничение урона в зависимости от уровня.
Кое-что сам потестил и выяснил, что округления до меньшего целого есть в п.1,3,7. В п.2 в меньшую сторону округляется если множитель > 1 и в большую, если он <1. В п.6 вообще нет округления (по крайней мере до целого). По поводу остального не знаю. Так что пришлось кое-что принимать самому. В итоге в расчётах принималось, что округления в меньшую сторону - в п.1, 3, 4, 5, 7. В п.2 – в зависимости от множителя, в п.6 – нет округления. DFE по JG не уменьшает урон ниже 1, и поэтому, принимая отсутствие DFE за DFE=0, считал, что мин. возможный урон вообще равен 1, даже если на 0-300% урона выпало 0. Если есть какие-то ошибки в алгоритме – пишите, переделаю.

Attachments: DamageCalculato.rar(234Kb)


Edited by Makantal - Tu, 2009-09-15, 19:24
 
Schwarzenegger Date: Mn, 2009-06-15, 12:25 | Message # 2
Breast Plate
Группа: Опытный
Посты: 617
Репутация: 7
Замечания: 0%
Статус: Offline
Размер проги впечатляет) оставь плиз ссылку где скачать а то вдруг в торенте битое всё)в каждой теме 10 человек пишет "у меня ошибка!!11"

 
Faragor Date: Mn, 2009-06-15, 15:13 | Message # 3
Chain Mail
Группа: Модератор
Посты: 221
Репутация: 3
Замечания: 0%
Статус: Offline
С помощью чего этот калькулятор открывается ?
 
Schwarzenegger Date: Mn, 2009-06-15, 15:39 | Message # 4
Breast Plate
Группа: Опытный
Посты: 617
Репутация: 7
Замечания: 0%
Статус: Offline
Quote (Makantal)
Сделано в Mathcad'е v14.020 (поскольку в Excel'е особенно не работал и соответственно не знаю, как там такое воплотить).


 
Earalorthin Date: Mn, 2009-06-15, 17:46 | Message # 5
Breast Plate
Группа: Модератор
Посты: 918
Репутация: 10
Замечания: 0%
Статус: Offline
ога... ещё и маткад 100мегабайтовый качать с медленного ресурса... ради одного паракилобайтового файла..)

SysTeam. Hails. You.
You. Have. Ten. Seconds. To. Selfdestruction. Or. Sara. Will. Fuck. You.
 
Makantal Date: Sa, 2009-09-05, 19:29 | Message # 6
Splint Mail
Группа: Череп
Посты: 497
Репутация: 11
Замечания: 0%
Статус: Offline
Вот ещё пара калькуляторов всё в том же Mathcad'е. Один считает шансы на оглушение при ударе, а второй строит график зависимости вероятности быть оглушённым от величины DFE. Если кто с Mathcad'ом не знаком, то см. п.1-4 в первом сообщении. В данных калькуляторах использовалась действительная для версии 1.82g RC23 формула порога оглушения (мин. необходимый на оглушение урон = Rnd[CLVL]+(baseVIT/8)+(CLVL/2)-2), и верные результаты соответственно будут только для неё. Также в калькуляторе - построителе графиков чем больше задаётся диапазон DFE, тем естественно дольше строятся график.

И ещё. В первом калькуляторе в поясняющем определении (только в нём, считалось же всё правильно) коэффициента вариации была допущена ошибочка. Это не мат. ожидание / СКО, а наоборот. Файл перезалил. Ну это так, для проформы, т.к. понимаю, что этот коэффициент и его определение нафиг никому не нужен и вряд ли кто вообще обратил на него внимание.

Добавлено (2009-09-05, 19:29)
---------------------------------------------
В связи с изменением формулы оглушения монстров калькулятор урона обновлён.

Attachments: StunCalculators.rar(89Kb)


Edited by Makantal - Tu, 2009-09-15, 19:25
 
Mordor Date: Su, 2009-09-06, 11:40 | Message # 7
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
а тут кстати слолжно...

для многих монстров свои особенные формулы оглушения
в основном конечно (mAC*4)/2 - mAC*4

но есть монстры с коэффициентами mAC*5, mAC*8, (mAC-20)*8, mAC*3

ворперы например вообще станятся если дамаг НИЖЕ чем (mAC-20)*5

 
Makantal Date: Su, 2009-09-06, 16:04 | Message # 8
Splint Mail
Группа: Череп
Посты: 497
Репутация: 11
Замечания: 0%
Статус: Offline
Mordor, да, я знал про то, что там для разных монстров порог оглушения по-разному завязан на mAC, поэтому в калькуляторе задаётся именно сам порог (stun value из формулы ниже), а не mAC (ну помножить его на нужное число "вручную" - думаю не проблема). Помимо этого добавил настройку мин. и макс. значений правее в соответствии с нынешней (v1.83b) формулой на оглушение (Rnd((stun value/2)+1)+((stun value/2)+1)): int(stun value/2)+1 и 2*int(stun value/2)+1 соответственно. Их конечно поменять, если охота посмотреть, что же будет если... Интересная деталь кстати выявилась: свойство 0-300% из-за используемого игрухой алгоритма модификации урона может ощутимо снизить вероятность оглушения, хотя общий урон повышается в 1,29 раза.

Edited by Makantal - Su, 2009-09-06, 16:05
 
Mordor Date: Su, 2009-09-06, 21:47 | Message # 9
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
Quote (Makantal)
Интересная деталь кстати выявилась: свойство 0-300% из-за используемого игрухой алгоритма модификации урона может ощутимо снизить вероятность оглушения, хотя общий урон повышается в 1,29 раза.

завтра вернусь домой и детально распишу действие этого эффекта, прямо из кода pvm melee
напомни если забууду

 
Mordor Date: Su, 2009-09-06, 23:22 | Message # 10
Full Plate
Группа: Alpha Dog
Посты: 4692
Репутация: 84
Статус: Offline
разобрался с этим эффектом

вот даже код с комментариями:

:0045BB6F F684308855000008 test byte ptr [eax+esi+00005588], 08 jester (rnd 0-300% damage)
:0045BB77 7422 je 0045BB9B
:0045BB79 BAC9000000 mov edx, 000000C9
:0045BB7E B106 mov cl, 06
:0045BB80 E8D5E3FBFF call 00419F5A eax=rnd[201]
:0045BB85 83F864 cmp eax, 00000064 compare eax to 100
:0045BB88 7C06 jl 0045BB90 if lower, jump to 45bb90
:0045BB8A 83C0B0 add eax, FFFFFFB0 eax (100-200 here) minus 80, 20-120 left
:0045BB8D 8D0440 lea eax, dword ptr [eax+2*eax] [20-120]*3, 60-360 (originally 5x)

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0045BB88©
|
:0045BB90 0FAFC7 imul eax, edi eax*damage
:0045BB93 6A64 push 00000064
:0045BB95 99 cdq
:0045BB96 59 pop ecx
:0045BB97 F7F9 idiv ecx eax/ecx (ecx=100)
:0045BB99 8BF8 mov edi, eax copy eax to edi (damage)

то есть, получается такая формула:
с вероятностью 50 на 50 сработает один из видов просчета урона
1) (damage*[60-360])/100
2) (damage*[1-99])/100

в первом случае средний урон равен 210%
во втором - 50%
в общем, средний урон = 130%, т.е. на 30% выше

 
Makantal Date: Mn, 2009-09-07, 00:37 | Message # 11
Splint Mail
Группа: Череп
Посты: 497
Репутация: 11
Замечания: 0%
Статус: Offline
Значит ошибся я там с одной цифрой на 1 ед. Мелочь правда, роли особо не играющая. Но поправил и перезалил.
 
Diablo: The Hell - forums » Форум The Hell » Адская Кузница » Калькулятор (для подсчёта урона с учётом всех модификаторов)
Страница 1 из 11
Поиск:

Copyright MyCorp © 2017 Хостинг от uCoz