A.I.M. Jagged Alliance2

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
19.03.2024 в 05:46:20

Главная Главная Помощь Помощь Поиск Поиск Участники Участники Вход Вход Регистрация Регистрация
A.I.M. « Расчёт вероятности попадания. »
   A.I.M.
   Обсуждаем игры
   Все об Альянсе
(Модераторы: Снайпер, Eug, Satan`s Claws, ThunderBird, Shico)
   Расчёт вероятности попадания.
« Предыдущая Тема | Следующая Тема »
  Тема:  Расчёт вероятности попадания.             Страниц: 1 Прочитано 10133 раз
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 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
Pyromancer
[пироманьяк]
Гас Тарболс

За Пакоса ответите!




Репутация: +53
Re: Расчёт вероятности попадания.
« Ответ #6 от 11.04.2006 в 14:21:58 »

2Docent:  
это я в гробокопателях  уже писал :P
http://forum.ja2.ru/cgi-bin/yabb/YaBB.pl?board=gravediggers;action=displ...
Зарегистрирован

I love the smell of napalm in the morning.
Docent
[Жентельмен у дачи]
Прирожденный Джаец

Украл, выпил - в тюрьму! Романтика!




Пол:
Репутация: +351
Re: Расчёт вероятности попадания.
« Ответ #7 от 11.04.2006 в 14:37:13 »

2Pyromancer:Большое спасибо за информацию, буду изучать ;)!
Зарегистрирован

Вот у меня один знакомый - тоже учёный - у него 3 класса образования... А он десятку за полчаса так нарисует - не отличишь от настоящей.
Ushwood
[ДжАдай]
Прирожденный Джаец

May the Force be with you


WWW Ё-мэйл

Пол:
Репутация: +562
Re: Расчёт вероятности попадания.
« Ответ #8 от 11.04.2006 в 15:12:01 »

2bugmonster: спасибо за выкладки :)
Есть вопрос:
Quote:
МУДРэфф - эффективная мудрость, определяется из мудрости и количества алкоголя.  
      УРВэфф - эффективная мудрость, определяется из мудрости, количества алкоголя, уменьшается на 1 у клаустрофобов  под землёй.
Что-то мне подсказывает, что УРВэфф - это никакая не эффективная мудрость, а эффективный уровень... и в остальных местах, где упоминается - тоже.
Зарегистрирован

Мои текущие переводы:
Червь арка 30, версия 12.03.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-й воин]
Прирожденный Джаец

Ап, и черти у ног моих сели...


WWW Ё-мэйл

Пол:
Репутация: +441
Re: Расчёт вероятности попадания.
« Ответ #12 от 25.04.2006 в 09:49:43 »

Сергей, либо я дурак, дибо сиры - получается, что при износе ствола больше 85% эфф. меткость возрастает ???
Зарегистрирован

Artem13.gif
http://www.aap13.narod.ru
И пули, что найдет тебя,
Ты не услышишь,
А остальные мимо пролетят

bugmonster
[Баги! Баги везде!]
Source

ПРОГРАММИРЫ НЕ УЧИТЫВАЛИ ЭТУ СИТУАЦИЮ




Пол:
Репутация: +1337
Re: Расчёт вероятности попадания.
« Ответ #13 от 25.04.2006 в 12:00:40 »

2Artem13: Нет - я!  ;D
Опечатка. Формулу:

     СТор - статус оружия, определяется как:
     если СОСТпред >= 85, то
 СТор = СОСТпред
     иначе
 СТор = СОСТпред*100/85, где
  СОСТпред - состояние оружия, берётся из состояния предмета

 
Следует читать

     СТор - статус оружия, определяется как:
     если СОСТпред >= 85, то
 СТор = 100
     иначе
 СТор = СОСТпред*100/85, где
  СОСТпред - состояние оружия, берётся из состояния предмета

 
Щас поправлю : shuffle :
Зарегистрирован

Восславим же радость и мужество,
Труда и науки содружество
Восславим мудрую партию,
Помолимся за неё.

А Пентагон в свои руки поганые,
Пусть возьмёт свои доллары сраные
И в ж... себе затолкает

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 : confused :
Зарегистрирован

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, (UINT8) (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, (UINT8) (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 *= 2;

приводит 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


WWW Ё-мэйл

Пол:
Репутация: +562
Re: Расчёт вероятности попадания.
« Ответ #34 от 23.10.2016 в 19:05:37 »

03.09.2016 в 02:03:56, KuJI писал(a):
На примере покажите какой эффект от очков и от оптики!  
От оптики, если совсем на пальцах - каждый АР, потраченный на прицеливание, уменьшает эффективное расстояние на 20% от реального. Если с оптикой добавляешь 4 АР на прицеливание - считай, расстояние до цели впятеро (на 80%) меньше.
(Не распространяется на пенальти от прицельной дальности самого оружия.)
Зарегистрирован

Мои текущие переводы:
Червь арка 30, версия 12.03.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 » Зарегистрирован

Страниц: 1  Послать Тему Послать Тему Печатать Печатать

« Предыдущая Тема | Следующая Тема »

Статистика. Размер данных: 132792 GZip: off
A.I.M. » Powered by YaBB Modification 4 (v.4.0.0-pre)!
YaBB © 2000-2003. All Rights Reserved.