| ||||||
Заголовок: Расчёт вероятности попадания. Прислано пользователем bugmonster на 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, где СОСТпред - состояние прицела, берётся из состояния предмета | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Docent на 11.04.2006 в 10:05:40 2bugmonster: То, что выложил Quote:
это очень хорошо ;)! Надо внимательно почитать и осмыслить :). А можно еще выложить формулы расчета повышения уровня меткости, плиз! Последнее время как-то заинтересовался этим вопросом, а исходники никогда не ковырял :(. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 11.04.2006 в 10:24:01 2Docent: Quote:
Прокачки меткости? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Docent на 11.04.2006 в 10:35:57 2bugmonster: Да, какие условия учитываются при повышении уровня меткости, что на это влияет ;). Сколько надо сделать выстрелов, убить (ранить) фрагов, сколько боев провести, чтобы получить еще единичку прибавки :)! | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 11.04.2006 в 11:27:48 2Docent: Там уже не формула, а скорее алгоритм. Ладно, накопаю - выложу. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Docent на 11.04.2006 в 11:45:07 2bugmonster: Quote:
Скорее всего - алгоритм. Буду очень благодарен ;)! | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Pyromancer на 11.04.2006 в 14:21:58 2Docent: это я в гробокопателях уже писал :P http://forum.ja2.ru/cgi-bin/yabb/YaBB.pl?board=gravediggers;action=display;num=1102772626;start=30#30 | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Docent на 11.04.2006 в 14:37:13 2Pyromancer:Большое спасибо за информацию, буду изучать ;)! | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Ushwood на 11.04.2006 в 15:12:01 2bugmonster: спасибо за выкладки :) Есть вопрос: Quote:
| ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 11.04.2006 в 16:01:30 2Ushwood: Спасибо, поправил. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем MAn на 24.04.2006 в 16:11:38 2bugmonster: Quote:
А это не описка случайно, что Lрасст умножается на два? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 25.04.2006 в 09:32:49 2MAn: Как есть :idontnow:. Оно всё равно используется не в прямом виде, а с коэффициентами, поэтому Lприц можно трактовать не как дальность прицеливания, а как удвоенную дальность прицеливания. Т.е. умножив расстояние до цели на два, они уменьшили влияние других величин на Lприц. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Artem13 на 25.04.2006 в 09:49:43 Сергей, либо я дурак, дибо сиры - получается, что при износе ствола больше 85% эфф. меткость возрастает ??? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 25.04.2006 в 12:00:40 2Artem13: Нет - я! ;D Опечатка. Формулу: СТор - статус оружия, определяется как: если СОСТпред >= 85, то СТор = СОСТпред иначе СТор = СОСТпред*100/85, где СОСТпред - состояние оружия, берётся из состояния предмета Следует читать СТор - статус оружия, определяется как: если СОСТпред >= 85, то СТор = 100 иначе СТор = СОСТпред*100/85, где СОСТпред - состояние оружия, берётся из состояния предмета Щас поправлю :shuffle: | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 25.04.2006 в 12:08:09 2Artem13: Другими словами, эта формула означает, что состояние оружия лучше или равное 85% считается чисто косметическим износом и оружие сохраняет 100% работоспособность. По части состояния от 0 до 85 равномерно растянут диапазон состояния оружия. Т.е. предмет-оружие изношенный на 50% считается изношенным на 59%. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем MAn на 25.04.2006 в 20:48:31 Quote:
Наверное СТсошек/100 :confused: | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 26.04.2006 в 13:40:14 2MAn: Мдяя. Это я неправильно выразил, поправлю. На самом деле там будет: Ксошек = СТсошек / 200 Т.е. (1+(СТсошек/100)/2) означает, что сошки могут увеличить бонус за стрельбу лёжа в 1,5 раза. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 16.08.2011 в 22:34:58 on 1144738558, bugmonster wrote:
Раз автор до сих пор на форуме Может тогда так: ШТдальн = (Lрасст*3-Lор)/17 ? Добавлено. Глянул исходники. Первое: штраф рассчитывается не при выходе за пределы дальности, а во всех случаях. Второе: если получается положительным, то не используется. Третье: отрицательное значение штрафа прибавляется к шансу на попадание (минус на плюс даёт минус -> шанс на попадание снижается). | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 03.08.2012 в 10:38:28 Code:
Кто-нибудь может объяснить, какое условие проверяется в первой строчке? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем jz на 03.08.2012 в 13:56:31 on 1343979508, RadicalRex wrote:
Code:
И Code:
| ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 03.08.2012 в 16:16:34 Спасибо. Тогда получается что за обычные гранаты отвечает ловкость и меткость плюс навык "броски", а за стрельбу из 40-мм гранатомёта, подствольника и миномёта - ловкость, меткость, интеллект и опыт плюс навык "тяжёлое оружие". | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 11.08.2012 в 04:48:50 on 1144738558, bugmonster wrote:
Там не ловкость цели, а проворность цели (подвижность, agility). Code:
| ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 11.08.2012 в 06:52:27 Quote:
Code:
? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 11.08.2012 в 07:00:13 2bugmonster: Code:
| ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 13.08.2012 в 18:39:20 2RadicalRex: Поправил, спасибо. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 09.12.2012 в 06:47:30 on 1355020323, bugmonster wrote:
Ещё раз приведу кусок исходного кода с комментариями разработчиков. Начало расчёта оптического расстояния iSightRange: Code:
Собственно первая строка: sDistVis = DistanceVisible( pSoldier, DIRECTION_IRRELEVANT, DIRECTION_IRRELEVANT, sGridNo, 0 ); Какое максимальное значение эта переменная может иметь: 25-29 клеток (250-290 метров) или 50-58? Ещё одна строка: iSightRange = SoldierToBodyPartLineOfSightTest( pSoldier, sGridNo, pSoldier->bTargetLevel, pSoldier->bAimShotLocation, (UINT8) (MaxDistanceVisible() * 2), TRUE ); Как умножение MaxDistanceVisible() на 2 влияет на iSightRange? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 09.12.2012 в 08:12:04 on 1355024850, RadicalRex wrote:
Первое. on 1355024850, RadicalRex wrote:
Я уже писал как. Цель дальше 26*2 клеток невозможно увидеть. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 09.12.2012 в 08:25:40 Но если sDistVis=25, а iSightRange, увеличиваемая в одной из строк в два раза, равна 50, то исходя из одной из последних строк в кода: Code:
будет наложен ополовинивающий шанс штраф. Однако в игре такого не наблюдается. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 09.12.2012 в 10:20:27 Отладка прояснила следующее: Засыл в расчёт прицельной линии умноженного на 2 MaxDistanceVisible Code:
приводит к тому что iSightRange ополовинивается, поэтому Code:
приводит iSightRange в нормальное состояние, при котором в общем случае он равен расстоянию до цели sDistVis*CELL_X_SIZE, поэтому штраф iChance /= 2 не накладывается. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем MAn на 09.12.2012 в 11:48:21 2bugmonster: Т.е. в формуле расчета вероятности это удвоение можно выкинуть, чтоб не пудрило мозги? | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем bugmonster на 09.12.2012 в 12:10:20 2MAn: Выкинул. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 26.12.2012 в 07:09:27 on 1144738558, bugmonster wrote:
Вблизи даёт бонус, на расстоянии 1 клетки: 3*(9-1)=24. Получается что при меткости 75 ШП будет максимальным (99). Вот только мои мерки ухитрялись и в упор мазать. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем KuJI на 03.09.2016 в 02:03:56 Народ, помогите! У Вас очень непростые или неверные (?) формулы, я вообще с математикой на уровне обывателя дружил всегда. Играю в оригинал, т.е. вероятность попасть в цель не указана. 1) Если, у нас целый боец с меткостью и параметрами под 90, с опытом около 5, хорошим и целым стволом, без прицельных приспособлений, то до кого расстояния примерно будет сохраняться вероятность попадания в цель в районе 90%? (без траты дополнительных АР на прицеливание?) Если в цель в зеленом секторе. 2) Трата дополнительных АР на прицеливание прибавляет 10% к вероятности попадания, верно? 3) И у Вас с оптикой с формулами что-то не так. Я все в эксель забил, уже и так, и так, ну полная чушь получается. На примере покажите какой эффект от очков и от оптики! | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 03.09.2016 в 16:57:12 on 1472857436, KuJI wrote:
Не более 9 клеток. | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем Ushwood на 23.10.2016 в 19:05:37 on 1472857436, KuJI wrote:
(Не распространяется на пенальти от прицельной дальности самого оружия.) | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем RadicalRex на 23.10.2016 в 19:47:22 on 1477238737, Ushwood wrote:
Не совсем, там в формуле константа. 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 | ||||||
Заголовок: Re: Расчёт вероятности попадания. Прислано пользователем dracul на 29.05.2017 в 23:37:25 Вопрос, по 1.13 и оптики В этом моде есть кратность оптики, но вот в формуле 2 * APЫ_ПРИЦЕЛИВАНИЯ * (РАССТОЯН_В_КЛЕТКАХ - 6) / 10 Этой самой кратности нет))) Я так понимаю, за место 2-ки ставим кратность? (т.е. прицел в изначальной игре имел как-бы х2) ------------- Нашел сам)) Оптика приближает на определенное расстояние, так х10 дает 90% уменьшение эффективного расстояния до цели, а 2 кратная - всего 10% | ||||||
A.I.M. » Powered by YaBB Modification 4 (v.4.0.0-pre)! YaBB © 2000-2003. All Rights Reserved. |