НаноБот 742 Опубликовано 15 Ноября 2014 (изменено) ПРОЕКТ НОВАЯ БАЛЛИСТИКА Движковая правка изменяющая расчёт полёта пуль. Движковая правка изменяющая расчет полёта пуль. Теперь баллистический коэффициент индивидуален для каждого патрона (k_air_resistance), новый параметр k_speed это коэффициент начальной скорости пули, умножается на bullet_speed из секции оружия. Так же изменён расчёт хита, в оригинале падения энергии пули была пропорциональна скорости, что совсем не так, этот параметр пропорционален кинетической энергии пули, а она пропорциональна квадрату скорости. Короче, скорость упала в два раза, а энергия т.е. хит падает в четыре раза. Всё это сделано для реалистичности. Например патрон для ПМ: стандартный - 315 м/с, улучшенный +Р+ - 420 м/с, ружьё 12 калибра: дробь - 315 м/с, пуля Полёва - 450 м/с, Совестра - 550 м/с, пуля Зенит - 800 м/с. Как видим разница более чем в два раза, БК ещё сильней различается между 8 мм картечью и например пулей Зенит. Патрон уже с пулей Совестра превращает дробовик с оптикой в мощную снайперскую винтовку, и прилагаемый мод с патчером это реально показывает. . Правка совместима с проектом xray-extensions. Используется патчер, который пропатчивает файл xrGame.dll, так же он позволяет быстро откатить до оригинальной модели. Поддерживает версии СТАЛКЕРа: Тень Чернобыля 1.0004 и 1.0006, Чистое Небо 1.5.10, Зов Припяти 1.6.02. Позволяет без проблем играть на мультиплеере, правда это надо ещё протестировать. В демонстрационном моде Волк вам выдаёт ружьё Хантера с оптикой и разные патроны к нему, и ещё патроны к ПМ, обычные и улучшенные. Для наглядности все патроны трассирующие, включая дробь. Сам мод рассчитан на версию 1.0004, но можно адаптировать и к 1.0006. Пока сами моды настроены не очень точно, просто демонстрация новых возможностей, ещё надо пересчитывать реальный БК и игровому, возможно потом формулу определю. Патчер 2.0https://yadi.sk/d/5TB36_gidgZYR CRC32 D1919398 MD5 76A0CF61CD99B9C207E446A18938358F SHA-1 C2FF216F51D22FB2B1761CA1B98F7751F10EB12B Демо мод ТЧhttps://yadi.sk/d/IDvdSQHMcj2Yz Правленый weapons.ltx для ТЧ.https://yadi.sk/d/NksXQvtZeCVTj Программа для ТЧ. Расчёт скорости пули на заданной дистанции, так же определяет высоту падения пули в метрах. Программа написана на Delphi 6, исходники прилагаются. https://yadi.sk/d/QrOs7ofseLJFU Экспериментальная правка для СТАЛКЕР Тень Чернобыля 1.0006 Патчер 2.01 Дополнено. Экспериментальная правка для СТАЛКЕР Тень Чернобыля 1.0006 Параметр up_throw_factor не только сила подкидывания, но и направленность осколков по горизонту. При up_throw_factor = 1.0 осколки разлетаются равномерно. При up_throw_factor = 0.0 осколки разлетаются строго горизонтально. То есть, параметр от 0.0 до 1.0, приблизительно соответствует углу от 0 до 90 градусов от горизонта, верх и вниз. (с) НаноБот www.amk-team.ru 30.01.2015 г. https://yadi.sk/d/2U-DnoOjeMPeT ДемоМод ЧНhttps://yadi.sk/d/UzlsrnXMdBX9d ДемоМод ЗПhttps://yadi.sk/d/ICqRnf-6dBXAG Дополнил новыми данными. (с) НаноБот Изменено 19 Июня 2017 пользователем НаноБот 3 13 13 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 17 Ноября 2014 Сама правка рабочая, в модах надо самостоятельно настраивать параметры k_air_resistance, это бал. коэффициент, 0 - сопротивление воздуха нет, и чем выше, тем сильней сопротивление воздуха и скорость пули быстрей падает, про k_speed я уже объяснил. Правка работает для 1.0004 и 1.0006, в дем. моде для 1.0004 только скрипты для выводы инфы о повреждениях. На самом деле, правку как оказалось ещё надо дорабатывать, я думал k_ap не как не используется, оказалось используется, в функции в файле CustomOutfit.cpp. float CCustomOutfit::HitThruArmour(float hit_power, s16 element, float AP) { float BoneArmour = m_boneProtection->getBoneArmour(element)*GetCondition()*(1-AP); float NewHitPower = hit_power - BoneArmour; if (NewHitPower < hit_power*m_boneProtection->m_fHitFrac) return hit_power*m_boneProtection->m_fHitFrac; return NewHitPower; }; Можно заменить k_pierce, но тогда будут проблемы с мультиплеером. А насчёт ссылок, я думаю надо для правки т.е. патчера и модов отдельно сделать, в сущности для разных модов только файлы weapons.ltx важны и ещё дальность у файлов оружия настроить на максимальную например на 1000 м. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 2 Декабря 2014 В общем, усем привет. Допилил я для ЧН и ЗП наконец-то, но выложить пока не могу, хочу доработать сам патчер, переписать полностью на Win32 API для компактности, и оснастить на всякий случай защитой. Программирование непосредственно в кодах дело тяжелое, и существенно переделывать модель реально только в рамках проекта xray-extensions, хотя уже сейчас не плохо работает, осталось чисто работа с конфигами, но это уже дело самих мододелов. В общем, постараюсь в ближайшие время выложить патчер для ЧН и ЗП. С ЗП пришлось хорошо повозится, в какой-то момент думал что не реально для ЗП сделать. Кстати, я забыл упомянуть что новый параметр k_speed, это переделанный k_ap для ТЧ, k_hit_critical для ЧН и k_dist для ЗП. И ещё, указанная выше функция пересекается с проектом xray-extensions. <<; хак для более корректного учета бронебойности патронов0x1024BEF7 5>> В общем, как то так. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 2 Декабря 2014 Для ТЧ почти готово (надо только с k_ap определится) и уже выложен, защита нужна от вирусов, так на всякий пожарный. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 5 Декабря 2014 (изменено) В общем вот. Патчер 2.0 https://yadi.sk/d/upVRpTfbdBXkQ CRC32D1919398 MD576A0CF61CD99B9C207E446A18938358F SHA-1C2FF216F51D22FB2B1761CA1B98F7751F10EB12B Демо мод ТЧhttps://yadi.sk/d/IDvdSQHMcj2Yz ДемоМод ЧН https://yadi.sk/d/UzlsrnXMdBX9d ДемоМод ЗП https://yadi.sk/d/ICqRnf-6dBXAG С защитой решил не заморачиватся, просто привожу контрольные суммы. Интерфейс патчера упростил до предела, при этом им стало пользоваться удобней, есть автоматическая поддержка английского языка, так что англо-саксам ноу проблем, включается на не русской ОС. Из демо мода ТЧ удалил патчер 1.0. Про сами патчи смотрите ридми. Для ЧН, парамет - k_speed обязателен для МП и СП, для ЗП, в МП этот параметр ненужен, а для СП обязателен. Сами сорсы попозже выложу. Демо моды деланы на скорою руку, так что сами настраиваете. А теперь главное, я думаю что надо тему переместить в "Школу модинга" с названием Проект "Новая баллистика", там уместней будет, я думаю. Изменено 5 Декабря 2014 пользователем НаноБот 2 8 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 29 Декабря 2014 (изменено) Сам не понял , видать в спешке отладочную версию залил. https://yadi.sk/d/5TB36_gidgZYR Перепроверил несколько раз, должно работать, в Вин7 может быть защита стоять, защищает файлы в папке Program Files, у меня ХР сп3, всё не как Вин7 не установлю. На счёт исходников, тут их надо до нормального вида довести, да и доступ в тырнет у меня редкий сейчас. CRC32 81BB4169MD572DF5F306F20787191EE1936C521017ASHA-122B303C02D7637D642C6C771BD92E8340479B14C Изменено 29 Декабря 2014 пользователем НаноБот ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 30 Декабря 2014 На счёт ветра, это уже надо перекомпиляцию проводить, я да же не знаю как там получить вектор и скорость ветра, хотя в ТЧ место есть для этого кода, вполне реально, но как реализовать пока не ясно. Кстати, в билдах что то планировалось на счёт ветра, но видать так и не было реализовано. YaSoN Скорость там падает, зависит коэффициента k_air_resistance, этот параметр обратно пропорционален баллистическому коэффициенту, надо бы на ганзе у одного чувака поспрашивать на счет формул, для более или менее точной формулы k_ballistic --> k_air_resistance (но это потом).Но в целом, например в DZM моде, уже параметры уже есть, надо только k_speed забить в секцию патронов, у всё будет работать. В других модах можно из мультиплеера, для начало взять, а затем если надо, подобрать по точней. Ещё для ТЧ правка не закончена, надо допилить расчёт бронебойности патронов, как я уже писал оказалось вырезанный k_ap используется для определения пробил, не пробил, правда там ерунда какая то, в ЧН и ЗП алгоритм более адекватен. Короче для ЧН и ЗП правка можно сказать закончена, врятли я что-то там поменяю, а для ТЧ потом допилю указанный алгоритм бронебойности. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 (изменено) Ладно, понял. Патчер работает только с указанными сборками (3116, 3312, 3975, 3967), с любыми другими не работает. Для ТЧ 1.0007. Для того что бы выключить старую баллистику, надо в файле ...XRay\xr_3da\xrGame\Level_Bullet_Manager.cpp за комментировать... Строки №№ 285,286,287. //изменить скорость и направление ее полета //с учетом гравитации bullet->dir.mul(bullet->speed); Fvector air_resistance = bullet->dir; // if (GameID() == GAME_SINGLE) // air_resistance.mul(-m_fAirResistanceK*delta_time_sec); // else air_resistance.mul(-bullet->air_resistance*(bullet->speed)/(bullet->max_speed)*delta_time_sec); Для возможности менять скорость пули каждого типа патрона, изменения посложней. В том же файле, в строке №47. Меняем нач. скорость пули в зависимости от типа патрона. speed = max_speed = starting_speed * cartridge.m_kSpeed; В той же папке, файл WeaponAmmo.h Строка №17, зарегистрируем новую перемененную. float m_kDist, m_kDisp, m_kHit, m_kImpulse, m_kPierce, m_kAP, m_kAirRes, m_kSpeed; В файле WeaponAmmo.cpp Строка №20, инициализация этой переменной. m_kDist = m_kDisp = m_kHit = m_kImpulse = m_kPierce = m_kSpeed = 1.f; В том же файле, загрузка этой переменной, переменная не обязательная, и если загрузчик её не найдёт, то установит в 1.0. Строка №40 функции void CCartridge::Load(LPCSTR section, u8 LocalAmmoType) m_kSpeed = READ_IF_EXISTS(pSettings, r_float, section, "k_speed", 1.0f); Ещё добавляем в функцию void CWeaponAmmo::Load(LPCSTR section) ту же строчку. Строка №86 m_kSpeed = READ_IF_EXISTS(pSettings, r_float, section, "k_speed", 1.0f); Появится новая переменная, мы не замещаем не какой другой, остальные работают как работали, в отличии от моей правки. Ах да, ещё энергия пули пропорциональна квадрату скорости пули. Файл Level_bullet_manager_firetrace.cpp в той же папке. После строки №425, поменять. float speed_factor = bullet->speed/bullet->max_speed; if (GameID() == GAME_SINGLE) speed_factor *= speed_factor; И ещё, не много о себе как о программисте, МК-61, бейсик "микрон", квикбейсик, турбопаскаль, делфи, ассемблер, луа. В общем, на си(си плюс плюс) я не программирую, сложно разобраться в его сжатом синтаксисе. В общем, как то так. Так что надеюсь без ошибок, но надо проверять. ЭЭЭ, там ещё надо добавить строки. В файл WeaponAmmo.h Строка №54 float m_kDist, m_kDisp, m_kHit, m_kImpulse, m_kPierce, m_kAP, m_kAirRes, m_kSpeed; В файле WeaponAmmo.cpp После строчки №165 cartridge.m_u8ColorID = m_u8ColorID; Добавить. cartridge.m_kSpeed = m_kSpeed; В общем, надо что бы проверили те, кто хорошо понимают C++, я не уверен что всё правильно написал. Изменено 13 Января 2015 пользователем НаноБот 1 1 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 (изменено) В ЧН и ЗП баллистика другая, но в целом изменения аналогичны. Набросал список функции с изменениями, ориентироваться меткой в комментариях NewBal. Для 1.5.07, думаю подойдёт и для 1.5.10. https://yadi.sk/d/AChY4tc7dwsWg Изменено 13 Января 2015 пользователем НаноБот 1 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 Для ТЧ будут ещё какие-нибудь наработки? Есть включения трассера и рикошета у осколков, например. В общем, я там изменил правку. Теперь k_speed = 0 отключает квадратичную зависимость от скорости пули и k_speed = 1 при этом. Это надо для нормальной работы мультиплеера и не пулевого оружия, в точности для огнемёта. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 0024FF0A: [80 A4 24 B4 00 00 00 FE] Заменить на: 0024FF0A: [83 8C 24 B4 00 00 00 03] 03 - это биты: включающие, 0 - трассер, 1 - рикошет, 2 - ?, 3 - взрывной партикл (добавлять не рекомендуется), остальные вроде не используются. Для версии 1.0006 (билд 3312) Вот патчер, кроме основной правки добавлена эта штука. https://yadi.sk/d/_B5Y-fObdx3Ny 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 На счёт этой правки, я просто делаю не большой мод, точней да же не мод, в аддон к модам, рабочее название ТНБМ (Террорист НаноБот Мод), в общем там всякие СВУ (самодельные взрывные устройства) и мне требовалась усилить осколочный эффект методом рикошета. Возможно сделаю правку где можно направлять осколочный поток, давно мечтаю сделать МОН-50, ОЗМ-72 и другие реальные мины, с как можно реалистичными параметрами. Я так пониманию, что придётся своими руками добавлять? Конкретно это, просто лаги получаются если слишком много вспышек, короче партикл тормознутый. 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 Да ну, это всё прикол, какие у осколков трассеры, да вспышки (каламбур ) при попадании. По сюжету в СВУ шарикоподшипники, а они здорово рикошетят, в оригинале осколки не рикошетели, вот я и включил кроме рикошета трассеры, для того что бы это проверить. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 (изменено) Видать друг друга недопоняли, правка включает такие эффекты у осколков взрывных предметов (гранаты ящики с динамитом и т.п.), как рикошеты, трассеры, взрывные партиклы пуль. https://yadi.sk/i/UDMJZFU1dxB5N В общем, если приглядеться там видно что рикошетят осколки. Изменено 13 Января 2015 пользователем НаноБот 2 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 По первому вопросу надо спросить Bahing-а http://bahing.offtopic.su/ По второму. При k_speed = 0 значит k_speed не умножается на скорость пули из конфига оружия, и не возводится в квадрат speed_factor, это надо, как я уже писал, для нормальной работы мультиплеера, и ещё для огнемёта. Так же k_speed "сверху" не как не ограничен, можно хоть 1000 задать, только зачем. Кстати, указанная правка для ТЧ устарела, я забыл добавить проверку на k_speed равно нулю. Чуть по же сделаю. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 13 Января 2015 Вот как и положено, всё по папкам раскидано, все правки помечены словом NewBal https://yadi.sk/d/La0SASxVdxLPV Надеюсь косяков нет, но надо что бы опытный программист всё проверил, это не трудно. 2 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 14 Января 2015 k_air_resistance - коэффициент сопротивления, при = 0 сопротивление отсутствует, пуля не тормозится. А вот сам посредственно баллистический коэффициент, обратно пропорционален коэффициенту сопротивления. В ЧН и ЗП алгоритм сложный, я сам ещё не разобрался, и при высоком k_air_resistance не так сильно тормозится, в общем, есть блокировка для слишком сильно завышенным коэффициенте сопротивления, зачем это сделано, мне не понятно совсем. Да и сам алгоритм сильно усложнён. В ТЧ, там всё просто, задаёте k_air_resistance = 8 для дроби, и дробь максимум 100 метров пролетит или да же меньше, да и наносит хит лишь вблизи, метров с 30, а далее скорость, а так же хит минимальный (практически равны нулю). В общем, я думаю для новых билдов, баллистику надо взять из ТЧ, а алгоритм повреждения из ЧН и ЗП. Тогда более или менее адекватная модель получится. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 23 Января 2015 Сейчас устанавливаю коэффициенты сопротивления для различных пуль, всё таки далеко от реальной баллистики у ТЧ. Формула в ТЧ по определению динамического ускорения пули. a1:= -kf*ux*(ux/u0); (pascal) ux - динамическая скорость пули u0 - начальная с. п. А реальная. kf:=ballisticdyn(k_ballistic, ux); a1:= kf*ux*ux; То есть коэффициент сопротивления зависит от динамической скорости пули и скорости звука. При чем функция ballisticdyn мне пока не известна. Так что реально скорости пуль будут совпадать лишь на участке 50-150 метров, а далее как правило скорость будет занижена. Добавлено В общем, подобрал я коэффициенты. Данные пока предварительные, но в целом, на дистанции от 0 до 50-100 м для пистолетных, и до 100-150 м автоматных пуль, близка к реальности, погрешность 1-3 м/с, на большой дистанции, как правило занижены. https://yadi.sk/d/NksXQvtZeCVTj Таблиц мало, надо для 9х18 +Р+ найти, и для некоторых других пуль. В общем, ещё надо учитывать, если скорость пули резко поднять, то коэффициент тоже надо корректировать в большую сторону. Сопротивление резко усиливается при звуковой скорости, это где-то 340 м/с. 3 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 23 Января 2015 к примеру для создания разрывнх патронов frag-12 для дробовика, или вообще пушки танка или БТР-а какого-нибуть. В разработке скриптовые пули для ТЧ, но там надо моя функция для определения параметров геометрии, я это сделал, но надо что бы в несли в проект X-Ray extensions, для совместимости с другими проектами. В общем, танк стреляющий снарядами (ОФС, ОПБС, кумулятивные), реально сделать. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение
НаноБот 742 Опубликовано 24 Января 2015 Звучит интересно, если бы еще пулям можно было модель указать, ну и свет с партиклом прикрутить вместо трасера, тогда можно было бы плазмоган в компанию к гауссу сделать. Дак это уже ракета получается, свет вряд ли буду делать, партикл уже есть. Как сделать что бы одиночное оружие стреляло очередями? А зачем, если хочешь сделать например автоПМ, то просто меняешь класс на WP_LR300 и добавляешь fire_modes = 1, -1, минус один и есть добавить автоогонь. Так можно без проблем СВУ научить стрелять очередью. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Поделиться этим сообщением Ссылка на сообщение