Тема: Расчёт вероятности попадания. Страниц: 1 | Прочитано 10366 раз |
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Расчёт вероятности попадания. « от 11.04.2006 в 09:55:58 » |
|
В качестве справочных данных и любопытной информации привожу расчёт вероятности попадания в JA2 в переводе с С на человеческий язык. Данная тема создана не для обсуждения чего-либо, поэтому желательно задавать здесь вопросы касающиеся только непонятных моментов в формуле. ШАНСп - шанс попадания, %, вычисляется как: ШАНСп = МЕТКср + Бразн - ШТразн + ВЛдальн, где МЕТКср - меткость средняя, вычисляется как если СТор >= МЕТКср , то МЕТКср = МЕТКстрл иначе МЕТКср = (МЕТКстрл+СТор)/2 , где МЕТКстрл - меткость стрелка, определяется как: если стрельба из гранатомёта, то МЕТКстрл = ( ЛОВэфф + МЕТКэфф + МУДРэфф + 10*УРВэфф )/2 + 15*Нтв + Бмор - Шуст, где ЛОВэфф - эффективная ловкость, определяется из ловкости и количества алкоголя. МЕТКэфф - эффективная меткость, определяется из меткости и количества алкоголя. МУДРэфф - эффективная мудрость, определяется из мудрости и количества алкоголя. УРВэфф - эффективный уровень опыта, уменьшается на 1-2 от алкоголя, уменьшается на 1 у клаустрофобов под землёй. Нтв - навык "Тяжелое вооружение", равен 1, для эксперта равен 2. Бмор - бонус морали. Шуст - штраф за усталость. иначе МЕТКстрл = МЕТКэфф + Бмор - Шуст, где МЕТКэфф - эффективная меткость, определяется из меткости и количества алкоголя, если стрелок робот то берётся максимум из меткости робота и эффективной меткости управляющего им. Бмор - бонус морали. Шуст - штраф за усталость. СТор - статус оружия, определяется как: если СОСТпред >= 85, то СТор = 100 иначе СТор = СОСТпред*100/85, где СОСТпред - состояние оружия, берётся из состояния предмета Бразн - разные бонусы, вычмсляется как: Бразн = Бпв + Бсих + Бсид + Блеж + Бприц + Блцу + Бвниз Бпв - бонус для повторного выстрела, равен 0 или 10 Бсих - бонус психопата, равен 0 или 15 Бсид - бонус сидельца, по единице за 1 тайл расстояния до цели, но не более 10 очков. Блеж - бонус лежальца, определяется как: Блеж = Бдальн*(1+Ксошек), где Бдальн - бонус дальности, по единице за 1 тайл расстояния до цели, но не ближе 5 тайлов, и не более 20 очков Ксошек - коэффициент сошек, если их нет то =0, если есть, определяется как: Ксошек = СТсошек / 200, где СТсошек, состояние сошек, определяется по аналогии с СТор Бприц - бонус прицеливания, по 10 за каждое АР на прицеливание Блцу - бонус за лазерный прицел, определяется как: Блцу = 20*(СТлцу-50)/50, где СТлцу, состояние лазерного прицела, определяется по аналогии с СТор, если это лцу ракетной винтовки, то берётся её состояние Бвниз - бонус при стрельбе с крыши по земле, вычисляется как Бвниз = 15*(1+Нск), где Нск - навык "стрельба с крыши", равен 1, для эксперта равен 2. ШТразн - штрафы разные, определяется как: ШТразн = ШТпп2 + ШТор2 + ШТочер + ШТврагам + ШТгаз + ШТмед + ШТшок + ШТотвал + ШТгол + ШТног + ШТдальн + ШТтанка + ШТслеп + ШТвверх + ШТцсид + ШТцлеж + ШТцст + ШТцдвиг + ШТуверт + ШТтанк, где ШТпп2 - штраф стрельбы из двух пистолет-пулемётов, равен 5 ШТор2 - штраф срельбы с двух рук, если нет навыка AMBIDEXTROUS равен 20 ШТочер - штраф для пули в очереди, вычисляется как: ШТочер = Шразброс*(Nпули-1)/(2*Нао), где Шразброс - штраф за разброс пули в очереди, берется из параметров оружия Nпули - номер данной пули в очереди Нао - навык "автоматическое оружие", если есть равен 1, для эксперта ревен 2 ШТврагам - штраф врагам если уровнь сложности "легкий". ШТгаз - штраф, если стрелок нюхнул газку, равен 50 ШТмед - штраф, если стрелка перевязывают, равен 20 ШТшок - штраф, если стрелок шокирован, по 5 за единицу шока ШТотвал - штраф за отвалившийся удлиннитель ствола, равен 30 ШТгол - штраф при зацеливании в голову, вычисляется как: ШТгол = 3*Lприц/10, где Lприц - дальность прицеливания, в тайлах/10 ШТног - штраф при зацеливании в ноги, вычисляется как: ШТног = Lприц/10, где Lприц - дальность прицеливания, в тайлах/10 ШТдальн - штраф за выход за пределы дальности, если получается отрицательным, то не используется, вычисляется как: ШТдальн = (Lор-Lрасст*3)/17, где Lор - дальность оружия, в тайлах/10 Lрасст - расстояние до цели, в тайлах/10 ШТтанка - штраф для танка, если цель находится ближе 26 тайлов: ШТтанка = 2*(26-Lрасст/10), где Lрасст - расстояние до цели, в тайлах/10 ШТслеп - штраф за слепоту, равен 80 ШТвверх - штраф при стрельбе с земли по крыше, равен 25 ШТцсид - штраф при стрельбе по сидячему, вычисляется как: если целит танк по сидячему, и расстояние меньше 12 тайлов ШТцсид = 13*(120-Lрасст)/10; Lрасст - расстояние до цели, в тайлах/10 иначе если Lрасст > 16+200/3: ШТцсид = 20 иначе если Lрасст > 16 ШТцсид = 3*(Lрасст-16)/10; ШТцлеж - штраф при стрельбе по лежачему, вычисляется как: если целит танк по сидячему, и расстояние меньше 12 тайлов ШТцлеж = 25*(120-Lрасст)/10; иначе если Lрасст > 16 ШТцлеж = 3 * (Lрасст-16)/10, но не больше 40. ШТцст - штраф если лежа стрелять в стоящего не дальше чем в 5 тайлах фрага ШТцст = (5-ЧАСТЬ-Lрасст/10)*10, где ЧАСТЬ - часть цели, голова=1, туловище=2, ноги=3, у жуков и кошек всё=2 ШТцдвиг - штраф стрельбы по двигавшейся цели, вычисляется как: ШТцдвиг = ПРОБЕГ*3/2, но не более 30, где ПРОБЕГ - пробег цели, в тайлах ШТуверт - штраф увертывания, срабатывает если цель не танк, не жукоматка и видит нас, вычисляется как: ШТуверт = (ПОДВэффц/5+УРВэффц*2)*Kмоб-(ЛОВэфф/5+УРВэфф*2), если меньше ноля - игнорируется, где ПОДВэффц - эффективная подвижность цели, определяется из подвижности, уменьшается алкоголем и перегрузкой инвентаря. УРВэффц - эффективный уровень опыта, уменьшается на 1-2 от алкоголя, уменьшается на 1 у клаустрофобов под землёй. Kмоб - коэффициент мобильности, для стоячего =1, для сидячего =2/3, для лежачего =1/3 ЛОВэфф - эффективная ловкость, определяется из ловкости и количества алкоголя. УРВэфф - эффективный уровень опыта, уменьшается на 1-2 от алкоголя, уменьшается на 1 у клаустрофобов под землёй. ШТтанк - штраф, если танк стреляет ближе 12 тайлов, вычисляется как: ШТтанк = 25*(120-Lрасст)/10, где Lрасст - расстояние до цели, в тайлах/10 ВЛдальн - влияние дальности, вычисляется как: ВЛдальн = 3*(90-Lприц)/10, где Lприц, дальность прицеливания, расчёт см. ниже ------------------------------------------------------------------------ ----------------------------------- Если стреляющий ранен, рассчитанный шанс изменяется так: ШАНСп = ШАНСп - ШАНСп*Кран, где Кран - коэф-т штрафа за ранения, рассчитывается как: Кран = 2*(Жмакс-Жтек+(Жмакс-Жтек-Жкров)/2))*(100-10*(УРВэфф-1))/(300*Жмакс), где Жмакс - макимальная жизнь (полная) Жтек - текущий уровень жизни Жкров - "кровоточащий" уровень жизни ------------------------------------------------------------------------ ----------------------------------- Если стреляющий задыхается, рассчитанный шанс изменяется так: ШАНСп = ШАНСп - ШАНСп*Кдых, где Кдых - коэф-т штрафа за одышку, рассчитывается как: Кдых = (100-ДЫХ)*(110-ЛОВэфф)/20000; ------------------------------------------------------------------------ ----------------------------------- Полученный шанс уменьшается ШАНСп = ШАНСп*Kдальн*Kвид, где Kдальн - коэффициент выхода за пределы дальности оружия, если Lрасст>Lор то = 0,5, иначе 1 Kвид - коэффициент выхода за пределы дальности видимости, если Lприц>Lвид то = 0,5, иначе 1 ------------------------------------------------------------------------ ----------------------------------- Полученный шанс ограничивается минимум 1% (для танка - 0%) и максимумом 99% ------------------------------------------------------------------------ ----------------------------------- Рассчет оптической дальности прицеливания. Вкратце скажцу что эта величина основана на расстоянии до цели. Увеличивается, если цель за пределами нормального зрения. Уменьшается солнечными очками и снайперским прицелом. Lприц, дальность прицеливания, тайл/10, вычисляется как: Lприц = Lрасст + Lневид - Lочки - Lопт, где Lрасст - расстояние до цели, тайл/10 Lневид - увеличение дистанции за пределами зрения, если Lприц < Lвид, то Lневид = 0, иначе вычисляется как: Lневид = (Lрасст - Lвид) Lочки - приближение из-за солнечных очков, если они есть, то вычисляется как: Lочки = Lрасст/10 Lопт - приближение из-за оптического прицела, если он есть, то вычисляется как: Lопт = ( 20*APприц*(Lрасст-60)*СТопт )/10000, где APприц - АР на прицеливание СТопт - состояние оптики, вычисляется как: СТопт = СОСТпред*100/85, где СОСТпред - состояние прицела, берётся из состояния предмета
|
« Изменён в : 09.12.2012 в 12:09:31 пользователем: bugmonster » |
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
Docent [Жентельмен у дачи]
Прирожденный Джаец
Украл, выпил - в тюрьму! Романтика!
Пол: Репутация: +351
|
|
Re: Расчёт вероятности попадания. « Ответ #1 от 11.04.2006 в 10:05:40 » |
|
2bugmonster: То, что выложил Quote:расчёт вероятности попадания в JA2 в переводе с С на человеческий язык. |
| это очень хорошо ! Надо внимательно почитать и осмыслить . А можно еще выложить формулы расчета повышения уровня меткости, плиз! Последнее время как-то заинтересовался этим вопросом, а исходники никогда не ковырял .
|
|
Зарегистрирован |
Вот у меня один знакомый - тоже учёный - у него 3 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #2 от 11.04.2006 в 10:24:01 » |
|
2Docent: Quote:формулы расчета повышения уровня меткости |
| Прокачки меткости?
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
Docent [Жентельмен у дачи]
Прирожденный Джаец
Украл, выпил - в тюрьму! Романтика!
Пол: Репутация: +351
|
|
Re: Расчёт вероятности попадания. « Ответ #3 от 11.04.2006 в 10:35:57 » |
|
2bugmonster: Да, какие условия учитываются при повышении уровня меткости, что на это влияет . Сколько надо сделать выстрелов, убить (ранить) фрагов, сколько боев провести, чтобы получить еще единичку прибавки !
|
|
Зарегистрирован |
Вот у меня один знакомый - тоже учёный - у него 3 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #4 от 11.04.2006 в 11:27:48 » |
|
2Docent: Там уже не формула, а скорее алгоритм. Ладно, накопаю - выложу.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
Docent [Жентельмен у дачи]
Прирожденный Джаец
Украл, выпил - в тюрьму! Романтика!
Пол: Репутация: +351
|
|
Re: Расчёт вероятности попадания. « Ответ #5 от 11.04.2006 в 11:45:07 » |
|
2bugmonster: Quote:Там уже не формула, а скорее алгоритм. Ладно, накопаю - выложу. |
| Скорее всего - алгоритм. Буду очень благодарен !
|
|
Зарегистрирован |
Вот у меня один знакомый - тоже учёный - у него 3 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
|
|
|
Docent [Жентельмен у дачи]
Прирожденный Джаец
Украл, выпил - в тюрьму! Романтика!
Пол: Репутация: +351
|
|
Re: Расчёт вероятности попадания. « Ответ #7 от 11.04.2006 в 14:37:13 » |
|
2Pyromancer:Большое спасибо за информацию, буду изучать !
|
|
Зарегистрирован |
Вот у меня один знакомый - тоже учёный - у него 3 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
|
|
|
Ushwood [ДжАдай]
Прирожденный Джаец
May the Force be with you
Пол: Репутация: +562
|
|
Re: Расчёт вероятности попадания. « Ответ #8 от 11.04.2006 в 15:12:01 » |
|
2bugmonster: спасибо за выкладки Есть вопрос: Quote:МУДРэфф - эффективная мудрость, определяется из мудрости и количества алкоголя. УРВэфф - эффективная мудрость, определяется из мудрости, количества алкоголя, уменьшается на 1 у клаустрофобов под землёй. |
| Что-то мне подсказывает, что УРВэфф - это никакая не эффективная мудрость, а эффективный уровень... и в остальных местах, где упоминается - тоже.
|
|
Зарегистрирован |
Мои текущие переводы: Червь эпилог, версия 23.04.24
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #9 от 11.04.2006 в 16:01:30 » |
|
2Ushwood: Спасибо, поправил.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
MAn [Человечище!!!]
Пол: Репутация: +403
|
|
Re: Расчёт вероятности попадания. « Ответ #10 от 24.04.2006 в 16:11:38 » |
|
2bugmonster: Quote:Lприц = Lрасст*2 + Lневид - Lочки - Lопт, где |
| А это не описка случайно, что Lрасст умножается на два?
|
|
Зарегистрирован |
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #11 от 25.04.2006 в 09:32:49 » |
|
2MAn: Как есть <idontnow>. Оно всё равно используется не в прямом виде, а с коэффициентами, поэтому Lприц можно трактовать не как дальность прицеливания, а как удвоенную дальность прицеливания. Т.е. умножив расстояние до цели на два, они уменьшили влияние других величин на Lприц.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
Artem13 [13-й воин]
Прирожденный Джаец
Ап, и черти у ног моих сели...
Пол: Репутация: +441
|
|
Re: Расчёт вероятности попадания. « Ответ #12 от 25.04.2006 в 09:49:43 » |
|
Сергей, либо я дурак, дибо сиры - получается, что при износе ствола больше 85% эфф. меткость возрастает
|
|
Зарегистрирован |
http://www.aap13.narod.ru И пули, что найдет тебя, Ты не услышишь, А остальные мимо пролетят
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #13 от 25.04.2006 в 12:00:40 » |
|
2Artem13: Нет - я! Опечатка. Формулу: СТор - статус оружия, определяется как: если СОСТпред >= 85, то СТор = СОСТпред иначе СТор = СОСТпред*100/85, где СОСТпред - состояние оружия, берётся из состояния предмета Следует читать СТор - статус оружия, определяется как: если СОСТпред >= 85, то СТор = 100 иначе СТор = СОСТпред*100/85, где СОСТпред - состояние оружия, берётся из состояния предмета Щас поправлю
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #14 от 25.04.2006 в 12:08:09 » |
|
2Artem13: Другими словами, эта формула означает, что состояние оружия лучше или равное 85% считается чисто косметическим износом и оружие сохраняет 100% работоспособность. По части состояния от 0 до 85 равномерно растянут диапазон состояния оружия. Т.е. предмет-оружие изношенный на 50% считается изношенным на 59%.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
MAn [Человечище!!!]
Пол: Репутация: +403
|
|
Re: Расчёт вероятности попадания. « Ответ #15 от 25.04.2006 в 20:48:31 » |
|
Quote:Блеж - бонус лежальца, определяется как: Блеж = Бдальн*(1+Ксошек), где Бдальн - бонус дальности, по единице за 1 тайл расстояния до цели, но не ближе 5 тайлов, и не более 20 очков Ксошек - коэффициент сошек, если их нет то =0, если есть, определяется как: Ксошек = СТсошек / 2, где СТсошек, состояние сошек, определяется по аналогии с СТор |
| Наверное СТсошек/100
|
|
Зарегистрирован |
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #16 от 26.04.2006 в 13:40:14 » |
|
2MAn: Мдяя. Это я неправильно выразил, поправлю. На самом деле там будет: Ксошек = СТсошек / 200 Т.е. (1+(СТсошек/100)/2) означает, что сошки могут увеличить бонус за стрельбу лёжа в 1,5 раза.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #17 от 16.08.2011 в 22:34:58 » |
|
11.04.2006 в 09:55:58, bugmonster писал(a):ШТдальн - штраф за выход за пределы дальности, если получается отрицательным, то не используется, вычисляется как: ШТдальн = (Lор-Lрасст*3)/17, где Lор - дальность оружия, в тайлах/10 Lрасст - расстояние до цели, в тайлах/10 |
| Раз автор до сих пор на форуме Может тогда так: ШТдальн = (Lрасст*3-Lор)/17 ? Добавлено. Глянул исходники. Первое: штраф рассчитывается не при выходе за пределы дальности, а во всех случаях. Второе: если получается положительным, то не используется. Третье: отрицательное значение штрафа прибавляется к шансу на попадание (минус на плюс даёт минус -> шанс на попадание снижается).
|
« Изменён в : 29.08.2011 в 07:55:30 пользователем: RadicalRex » |
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #18 от 03.08.2012 в 10:38:28 » |
|
Code: if ( Item[ usHandItem ].usItemClass != IC_LAUNCHER && pSoldier->bWeaponMode != WM_ATTACHED ) { // PHYSICALLY THROWN arced projectile (ie. grenade) // for lack of anything better, base throwing accuracy on dex & marskmanship iChance = ( EffectiveDexterity( pSoldier ) + EffectiveMarksmanship( pSoldier ) ) / 2; // throwing trait helps out if ( HAS_SKILL_TRAIT( pSoldier, THROWING ) ) { iChance += gbSkillTraitBonus[THROWING] * NUM_SKILL_TRAITS( pSoldier, THROWING ); } } else { // MECHANICALLY FIRED arced projectile (ie. mortar), need brains & know-how iChance = ( EffectiveDexterity( pSoldier ) + EffectiveMarksmanship( pSoldier ) + EffectiveWisdom( pSoldier ) + pSoldier->bExpLevel ) / 4; // heavy weapons trait helps out if (HAS_SKILL_TRAIT( pSoldier, HEAVY_WEAPS )) { iChance += gbSkillTraitBonus[HEAVY_WEAPS] * NUM_SKILL_TRAITS( pSoldier, HEAVY_WEAPS ); } } |
| Кто-нибудь может объяснить, какое условие проверяется в первой строчке?
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
jz [жыз:)]
Я люблю этот Форум!
Пол: Репутация: +318
|
|
Re: Расчёт вероятности попадания. « Ответ #19 от 03.08.2012 в 13:56:31 » |
|
03.08.2012 в 10:38:28, RadicalRex писал(a):какое условие проверяется в первой строчке? |
| Code:Item[ usHandItem ].usItemClass != IC_LAUNCHER] |
| в правой руке не гранатомет/миномет И Code:pSoldier->bWeaponMode != WM_ATTACHED |
| режим стрельбы из оружия НЕ подствольник
|
|
Зарегистрирован |
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #20 от 03.08.2012 в 16:16:34 » |
|
Спасибо. Тогда получается что за обычные гранаты отвечает ловкость и меткость плюс навык "броски", а за стрельбу из 40-мм гранатомёта, подствольника и миномёта - ловкость, меткость, интеллект и опыт плюс навык "тяжёлое оружие".
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #21 от 11.08.2012 в 04:48:50 » |
|
11.04.2006 в 09:55:58, bugmonster писал(a):ШТуверт = (ЛОВэффц/5+УРВэффц*2)*Kмоб-(ЛОВэфф/5+УРВэфф*2), если меньше ноля - игнорируется, где ЛОВэффц - эффективная ловкость цели, определяется из ловкости и количества алкоголя. УРВэффц - эффективный уровень опыта, уменьшается на 1-2 от алкоголя, уменьшается на 1 у клаустрофобов под землёй. |
| Там не ловкость цели, а проворность цели (подвижность, agility). Code: // if target sees us, he may have a chance to dodge before the gun goes off // but ability to dodge is reduced if crouched or prone! if (pTarget->bOppList[pSoldier->ubID] == SEEN_CURRENTLY && !TANK( pTarget ) && !(pSoldier->ubBodyType != QUEENMONSTER) ) { iPenalty = ( EffectiveAgility( pTarget ) / 5 + EffectiveExpLevel( pTarget ) * 2); switch( gAnimControl[ pTarget->usAnimState ].ubHeight ) { case ANIM_CROUCH: iPenalty = iPenalty * 2 / 3; break; case ANIM_PRONE: iPenalty /= 3; break; } // reduce dodge ability by the attacker's stats iBonus = ( EffectiveDexterity( pSoldier ) / 5 + EffectiveExpLevel( pSoldier ) * 2); if ( TANK( pTarget ) || (pSoldier->ubBodyType != QUEENMONSTER) ) { // reduce ability to track shots iBonus = iBonus / 2; } if ( iPenalty > iBonus ) { iChance -= (iPenalty - iBonus); } } } else if ( TANK( pSoldier ) && iRange < MIN_TANK_RANGE ) { // 25% penalty per tile closer than min range iChance -= 25 * ( ( MIN_TANK_RANGE - iRange ) / CELL_X_SIZE ); } |
|
|
« Изменён в : 11.08.2012 в 04:52:34 пользователем: RadicalRex » |
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #22 от 11.08.2012 в 06:52:27 » |
|
Quote:Там не ловкость цели, а проворность цели (подвижность, agility). |
| Code:EffectiveDexterity( pSoldier ) / 5 |
| ?
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #23 от 11.08.2012 в 07:00:13 » |
|
2bugmonster: Code:iPenalty = ( EffectiveAgility( pTarget ) / 5 + |
|
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #24 от 13.08.2012 в 18:39:20 » |
|
2RadicalRex: Поправил, спасибо.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #25 от 09.12.2012 в 06:47:30 » |
|
09.12.2012 в 05:32:03, bugmonster писал(a):Посмотрел ещё раз код, установил следующее: - стрельба дальше 52 клеток считается, как и стрельба за препятствие, стрельбой вслепую, поэтому все бонусы от прицеливания отпадают и -80% к шансу попадания - при стрельбе дальше 13 клеток цель оптически отодвигается ещё дальше - основное: оптическое расстояние до цели налагает штраф на шанс попадания при стрельбе дальше 9 клеток в 3% за клетку (согласно комментариям в коде это появилось в JA2.5, судя по закомментированному коду в оригинале штраф составлял 2% за клетку). То есть уже на довольно близком расстоянии этот штраф будет равен -100%. Я даже не могу посчитать это расстояние, учитывая внезапное удвоение оптического расстояния до цели iSightRange *= 2; без его ополовинивания позже, и последующее растягивание. Натурально брейнфак |
| Ещё раз приведу кусок исходного кода с комментариями разработчиков. Начало расчёта оптического расстояния iSightRange: Code:sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0 ); // give some leeway to allow people to spot for each other... // use distance limitation for LOS routine of 2 x maximum distance EVER visible, so that we get accurate // calculations out to around 50 tiles. Because we multiply max distance by 2, we must divide by 2 later // CJC August 13 2002: Wow, this has been wrong the whole time. bTargetCubeLevel seems to be generally set to 2 - // but if a character is shooting at an enemy in a particular spot, then we should be using the target position on the body. // CJC August 13, 2002 // If the start soldier has a body part they are aiming at, and know about the person in the tile, then use that height instead iSightRange = -1; ubTargetID = WhoIsThere2( sGridNo, pSoldier->bTargetLevel ); // best to use team knowledge as well, in case of spotting for someone else if (ubTargetID != NOBODY && pSoldier->bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY) { iSightRange = SoldierToBodyPartLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bAimShotLocation, (UINT8) (MaxDistanceVisible() * 2), TRUE ); } if (iSightRange == -1) // didn't do a bodypart-based test { iSightRange = SoldierTo3DLocationLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bTargetCubeLevel, (UINT8) (MaxDistanceVisible() * 2), TRUE ); } iSightRange *= 2; |
| Собственно первая строка: sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0 ); Какое максимальное значение эта переменная может иметь: 25-29 клеток (250-290 метров) или 50-58? Ещё одна строка: iSightRange = SoldierToBodyPartLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bAimShotLocation, (UINT (MaxDistanceVisible() * 2), TRUE ); Как умножение MaxDistanceVisible() на 2 влияет на iSightRange?
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #26 от 09.12.2012 в 08:12:04 » |
|
09.12.2012 в 06:47:30, RadicalRex писал(a):Собственно первая строка: sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0 ); Какое максимальное значение эта переменная может иметь: 25-29 клеток (250-290 метров) или 50-58? |
| Первое. 09.12.2012 в 06:47:30, RadicalRex писал(a):iSightRange = SoldierToBodyPartLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bAimShotLocation, (UINT (MaxDistanceVisible() * 2), TRUE ); Как умножение MaxDistanceVisible() на 2 влияет на iSightRange? |
| Я уже писал как. Цель дальше 26*2 клеток невозможно увидеть.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #27 от 09.12.2012 в 08:25:40 » |
|
Но если sDistVis=25, а iSightRange, увеличиваемая в одной из строк в два раза, равна 50, то исходя из одной из последних строк в кода: Code:if ( iSightRange > (sDistVis * CELL_X_SIZE) ) { // penalize out of sight shots, cumulative to effective range penalty iChance /= 2; } |
| будет наложен ополовинивающий шанс штраф. Однако в игре такого не наблюдается.
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #28 от 09.12.2012 в 10:20:27 » |
|
Отладка прояснила следующее: Засыл в расчёт прицельной линии умноженного на 2 MaxDistanceVisible Code:iSightRange = SoldierToBodyPartLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bAimShotLocation, (UINT8) (MaxDistanceVisible() [b]* 2[/b]), TRUE ); |
| приводит к тому что iSightRange ополовинивается, поэтому Code: приводит iSightRange в нормальное состояние, при котором в общем случае он равен расстоянию до цели sDistVis*CELL_X_SIZE, поэтому штраф iChance /= 2 не накладывается.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
MAn [Человечище!!!]
Пол: Репутация: +403
|
|
Re: Расчёт вероятности попадания. « Ответ #29 от 09.12.2012 в 11:48:21 » |
|
2bugmonster: Т.е. в формуле расчета вероятности это удвоение можно выкинуть, чтоб не пудрило мозги?
|
|
Зарегистрирован |
|
|
|
bugmonster [Баги! Баги везде!]
Source
ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ
Пол: Репутация: +1337
|
|
Re: Расчёт вероятности попадания. « Ответ #30 от 09.12.2012 в 12:10:20 » |
|
2MAn: Выкинул.
|
|
Зарегистрирован |
Восславим же радость и мужество, Труда и науки содружество Восславим мудрую партию, Помолимся за неё.
А Пентагон в свои руки поганые, Пусть возьмёт свои доллары сраные И в ж... себе затолкает
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #31 от 26.12.2012 в 07:09:27 » |
|
11.04.2006 в 09:55:58, bugmonster писал(a):ВЛдальн = 3*(90-Lприц)/10 |
| Вблизи даёт бонус, на расстоянии 1 клетки: 3*(9-1)=24. Получается что при меткости 75 ШП будет максимальным (99). Вот только мои мерки ухитрялись и в упор мазать.
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
KuJI
Пакос
Я люблю этот Форум!
Репутация: ---
|
|
Re: Расчёт вероятности попадания. « Ответ #32 от 03.09.2016 в 02:03:56 » |
|
Народ, помогите! У Вас очень непростые или неверные (?) формулы, я вообще с математикой на уровне обывателя дружил всегда. Играю в оригинал, т.е. вероятность попасть в цель не указана. 1) Если, у нас целый боец с меткостью и параметрами под 90, с опытом около 5, хорошим и целым стволом, без прицельных приспособлений, то до кого расстояния примерно будет сохраняться вероятность попадания в цель в районе 90%? (без траты дополнительных АР на прицеливание?) Если в цель в зеленом секторе. 2) Трата дополнительных АР на прицеливание прибавляет 10% к вероятности попадания, верно? 3) И у Вас с оптикой с формулами что-то не так. Я все в эксель забил, уже и так, и так, ну полная чушь получается. На примере покажите какой эффект от очков и от оптики!
|
|
Зарегистрирован |
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #33 от 03.09.2016 в 16:57:12 » |
|
03.09.2016 в 02:03:56, KuJI писал(a):Если, у нас целый боец с меткостью и параметрами под 90, с опытом около 5, хорошим и целым стволом, без прицельных приспособлений, то до кого расстояния примерно будет сохраняться вероятность попадания в цель в районе 90%? |
| Не более 9 клеток.
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
Ushwood [ДжАдай]
Прирожденный Джаец
May the Force be with you
Пол: Репутация: +562
|
|
Re: Расчёт вероятности попадания. « Ответ #34 от 23.10.2016 в 19:05:37 » |
|
03.09.2016 в 02:03:56, KuJI писал(a):На примере покажите какой эффект от очков и от оптики! |
| От оптики, если совсем на пальцах - каждый АР, потраченный на прицеливание, уменьшает эффективное расстояние на 20% от реального. Если с оптикой добавляешь 4 АР на прицеливание - считай, расстояние до цели впятеро (на 80%) меньше. (Не распространяется на пенальти от прицельной дальности самого оружия.)
|
|
Зарегистрирован |
Мои текущие переводы: Червь эпилог, версия 23.04.24
|
|
|
RadicalRex [Ради чего?]
Прирожденный Джаец
Я люблю этот Форум!
Репутация: +103
|
|
Re: Расчёт вероятности попадания. « Ответ #35 от 23.10.2016 в 19:47:22 » |
|
23.10.2016 в 19:05:37, Ushwood писал(a):каждый АР, потраченный на прицеливание, уменьшает эффективное расстояние на 20% от реального. Если с оптикой добавляешь 4 АР на прицеливание - считай, расстояние до цели впятеро (на 80%) меньше. |
| Не совсем, там в формуле константа. 2 * APЫ_ПРИЦЕЛИВАНИЯ * (РАССТОЯН_В_КЛЕТКАХ - 6) / 10 Для дистанции 25 клеток: 2*4*(25-6)/10=15,2 (не знаю, нужно ли округлять до целого?) Итого оптическая дальность: 25-15,2=9,8 Штраф, зависящий от оптической дальности: 3*(9,8-9)=2,4 Если шмаляем в голову, то дополнительный штраф: 3*9,8=29,4 Штраф, зависящий от прицельной дальности оружия (в примере АК-74 с дальностью 35): (25*3-35)/1,7=23,5 При меткости 90, положении сидя, 4-х кликах прицеливания и наличии ЛЦУ: 90+10+40+20-23,5-29,4-2,4=104,7
|
|
Зарегистрирован |
Скачать Jagged Alliance 2 (русс. и англ.)
|
|
|
dracul
Гас Тарболс
Пол: Репутация: ---
|
|
Re: Расчёт вероятности попадания. « Ответ #36 от 29.05.2017 в 23:37:25 » |
|
Вопрос, по 1.13 и оптики В этом моде есть кратность оптики, но вот в формуле 2 * APЫ_ПРИЦЕЛИВАНИЯ * (РАССТОЯН_В_КЛЕТКАХ - 6) / 10 Этой самой кратности нет))) Я так понимаю, за место 2-ки ставим кратность? (т.е. прицел в изначальной игре имел как-бы х2) ------------- Нашел сам)) Оптика приближает на определенное расстояние, так х10 дает 90% уменьшение эффективного расстояния до цели, а 2 кратная - всего 10%
|
« Изменён в : 02.06.2017 в 11:42:01 пользователем: dracul » |
Зарегистрирован |
|
|
|
|