Перейти к контенту

Проект "Новая баллистика"


Рекомендуемые сообщения

Сама правка рабочая, в модах надо самостоятельно настраивать параметры 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 м.

 

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

В общем, усем привет.

Допилил я для ЧН и ЗП наконец-то, но выложить пока не могу, хочу доработать сам патчер, переписать полностью на Win32 API для компактности, и оснастить на всякий случай защитой.

Программирование непосредственно в кодах дело тяжелое, и существенно переделывать модель реально только в рамках  проекта  xray-extensions, хотя уже сейчас не плохо работает, осталось чисто работа с конфигами, но это уже дело самих мододелов.

В общем, постараюсь в ближайшие время выложить патчер для ЧН и ЗП. С ЗП пришлось хорошо повозится, в какой-то момент думал что не реально для ЗП сделать. Кстати, я забыл упомянуть что новый параметр k_speed, это переделанный k_ap для ТЧ, k_hit_critical для ЧН и k_dist для ЗП.

И ещё, указанная выше функция пересекается с проектом  xray-extensions.

<<; хак для более корректного учета бронебойности патронов
0x1024BEF7 5>>

В общем, как то так.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Для ТЧ почти готово (надо только с k_ap определится) и уже выложен, защита нужна от вирусов, так на всякий пожарный. :ph34r:

  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Сам не понял :wacko: , видать в спешке отладочную версию залил. :wacko2:

https://yadi.sk/d/5TB36_gidgZYR

Перепроверил несколько раз, должно работать, в Вин7 может быть защита стоять, защищает файлы в папке Program Files, у меня ХР сп3, всё не как Вин7 не установлю.

На счёт исходников, тут их надо до нормального вида довести, да и доступ в тырнет у меня редкий сейчас. :to_take_umbrage:

 

 

CRC32


81BB4169
MD5
72DF5F306F20787191EE1936C521017A
SHA-1
22B303C02D7637D642C6C771BD92E8340479B14C

 

Изменено пользователем НаноБот

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

На счёт ветра, это уже надо перекомпиляцию проводить, я да же не знаю как там получить вектор и скорость ветра, хотя в ТЧ место есть для этого кода, вполне реально, но как реализовать пока не ясно. Кстати, в билдах что то планировалось на счёт ветра, но видать так и не было реализовано.

 

 

YaSoN
Скорость там падает, зависит коэффициента k_air_resistance, этот параметр обратно пропорционален баллистическому коэффициенту, надо бы на ганзе  у одного чувака поспрашивать на счет формул, для более или менее точной формулы k_ballistic --> k_air_resistance (но это потом).

Но в целом, например в DZM моде, уже параметры уже есть, надо только k_speed забить в секцию патронов, у всё будет работать. В других модах можно из мультиплеера, для начало взять, а затем если надо, подобрать по точней. Ещё для ТЧ правка не закончена, надо допилить расчёт бронебойности патронов, как я уже писал оказалось вырезанный k_ap используется для определения пробил, не пробил, правда там ерунда какая то, в ЧН и ЗП алгоритм более адекватен.

Короче для ЧН и ЗП правка можно сказать закончена, врятли я что-то там поменяю, а для ТЧ потом допилю указанный алгоритм бронебойности.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Ладно, понял.

Патчер работает только с указанными сборками (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++, я не уверен что всё правильно написал.

Изменено пользователем НаноБот
  • Спасибо 1
  • Нравится 1
  • Полезно 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

В ЧН и ЗП баллистика другая, но в целом изменения аналогичны.

Набросал список функции с изменениями, ориентироваться меткой в комментариях NewBal.

Для 1.5.07, думаю подойдёт и для 1.5.10.

https://yadi.sk/d/AChY4tc7dwsWg

Изменено пользователем НаноБот
  • Спасибо 1
  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

 

 

Для ТЧ будут ещё какие-нибудь наработки?

Есть включения трассера и рикошета у осколков, например.  :D

В общем, я там изменил правку. Теперь k_speed = 0 отключает квадратичную зависимость от скорости пули и k_speed = 1 при этом. Это надо для нормальной работы мультиплеера и не пулевого оружия, в точности для огнемёта.

  • Согласен 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

На счёт этой правки, я просто делаю не большой мод, точней да же не мод, в аддон к модам, рабочее название ТНБМ (Террорист НаноБот Мод), в общем там всякие СВУ (самодельные взрывные устройства) и мне требовалась  усилить осколочный эффект методом рикошета. Возможно сделаю правку где можно направлять осколочный поток, давно мечтаю сделать МОН-50, ОЗМ-72 и другие реальные мины, с как можно реалистичными параметрами.

 

 

 

Я так пониманию, что придётся своими руками добавлять? 

Конкретно это, просто лаги получаются если слишком много вспышек, короче партикл тормознутый.

  • Нравится 2

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Да ну, это всё прикол, какие у осколков  трассеры, да вспышки (каламбур :D ) при попадании. По сюжету в СВУ шарикоподшипники, а они здорово рикошетят, в оригинале осколки не рикошетели, вот я и включил кроме рикошета трассеры, для того что бы это проверить.

  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Видать друг друга недопоняли, правка включает такие эффекты у осколков взрывных предметов (гранаты ящики с динамитом и т.п.), как рикошеты, трассеры, взрывные партиклы пуль.

https://yadi.sk/i/UDMJZFU1dxB5N

В общем, если приглядеться там видно что рикошетят осколки. 

Изменено пользователем НаноБот
  • Нравится 2

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

По первому вопросу надо спросить Bahing-а

http://bahing.offtopic.su/

По второму.

При k_speed = 0 значит k_speed не умножается на скорость пули из конфига оружия, и не возводится в квадрат speed_factor, это надо, как я уже писал, для нормальной работы мультиплеера, и ещё для огнемёта. Так же k_speed "сверху" не как не ограничен, можно хоть 1000 задать, только зачем.

Кстати, указанная правка для ТЧ устарела, я забыл добавить проверку на k_speed равно нулю. Чуть по же сделаю. 

  • Спасибо 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Вот как и положено, всё по папкам раскидано, все правки помечены словом NewBal

https://yadi.sk/d/La0SASxVdxLPV

Надеюсь косяков нет, но надо что бы опытный программист всё проверил, это не трудно.

  • Спасибо 2
  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

k_air_resistance - коэффициент сопротивления, при = 0 сопротивление отсутствует, пуля не тормозится. А вот сам посредственно баллистический коэффициент, обратно пропорционален коэффициенту сопротивления. В ЧН и ЗП алгоритм сложный, я сам ещё не разобрался, и при высоком k_air_resistance не так сильно тормозится, в общем, есть блокировка для слишком сильно завышенным коэффициенте сопротивления, зачем это сделано, мне не понятно совсем. Да и сам алгоритм сильно усложнён. В ТЧ, там всё просто, задаёте k_air_resistance = 8 для дроби, и дробь максимум 100 метров пролетит или да же меньше, да и наносит хит лишь вблизи, метров с 30, а далее скорость, а так же хит минимальный (практически равны нулю).

В общем, я думаю для новых билдов, баллистику надо взять из ТЧ, а алгоритм повреждения из ЧН и ЗП. Тогда более или менее адекватная модель получится.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

Сейчас устанавливаю коэффициенты сопротивления для различных пуль, всё таки далеко от реальной баллистики у ТЧ.

Формула в ТЧ по определению динамического ускорения пули.

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

 

 

к примеру для создания разрывнх патронов frag-12 для дробовика, или вообще пушки танка или БТР-а какого-нибуть.

В разработке скриптовые пули для ТЧ, но там надо моя функция для определения параметров геометрии, я это сделал, но надо что бы в несли в проект X-Ray extensions, для совместимости с другими проектами. В общем, танк стреляющий снарядами (ОФС, ОПБС, кумулятивные), реально сделать.

  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение

 

 

Звучит интересно, если бы еще пулям можно было модель указать, ну и свет с партиклом прикрутить вместо трасера, тогда можно было бы плазмоган в компанию к гауссу сделать.

Дак это уже ракета получается, свет вряд ли буду делать, партикл уже есть.

 

 

 

Как сделать что бы одиночное оружие стреляло очередями?

А зачем, если хочешь сделать например автоПМ, то просто  меняешь класс на WP_LR300 и добавляешь  fire_modes  = 1,  -1, минус один и есть добавить автоогонь. Так можно без проблем СВУ научить стрелять очередью.

  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...