В
полной версии я не стал вырезать магазины для оружия, которого нет в
оригинале - много кому они понадобятся. Магазины сделаны для того
оружия, что есть в моей сборке, но не факт, что это все необходимые
магазины на все случаи жизни.
Модели и текстуры магазинов выдраны
из существующего оружия, по необходимости доработаны/переработаны и
приведены к некому общему знаменателю.
Гаусс-пушка теперь тоже
использует магазины, но, в отличие от обычных магазинов, магазины для
Гаусса дозаряжать своими силами нельзя. Слишком специфичная у них
конструкция, чтобы делать это в полевых условиях.
Реализована
поддержка спидлодеров для револьвера. Разница с обычным магазином в
том, что при зарядке оружия с помощью спидлодера пустой спидлодер
выпадает в инвентарь сразу, а при разрядке оружия вместо спидлодера
выпадают обычные патроны.
При покупке револьвера или получения его в диалоге один пустой спидлодер дается автоматически.
Теоретически, можно многократно покупать и продавать револьвер (да и
любое оружие с магазинным питанием, только его надо будет разряжать) и
собирать халявные спидлодеры (магазины). На деле, при правильно
настроенной торговле, это должно быть крайне невыгодно по сравнению с
покупкой оружия и магазинов к нему.
Для всего оружия, где это
имеет смысл (автоматы в основном, разъемы магазинов у них стандартные),
прописаны разные емкости магазинов. Дисковые магазины (хоть их и нет в
оригинале) не ставятся на оружие со схемой буллпап. В теории
вфоткнутся, но на практике будут мешать целиться.
Все пустые
магазины (с окончанием "_е") автоматически получают condition = 0. Все
магазины, которые при первоначальном спавне оказались не у актора -
condition = 0,995 = полный магазин. Все магазины, которые спавнятся в
инвентаре актора, имеют condition = 1, и рассматриваются как "один
патрон, извлеченный из оружия при разрядке", поэтому они сразу
преобразуются в обычные магазины с condition <= 0,995. Поэтому если
просто заспавнить магазин в инвентарь актору, в нем окажется всего один
патрон.
Чтобы все-таки выдать актору полный магазин, нужно пользоваться функцией ammo_manager.give_loaded(секция_магазина).
Выдавать таким образом секцию пустого магазина с окончанием "_е" нет
смысла, полным он не станет, и в магазин с одним патроном не
преобразуется, так и останется пустым. Тут достаточно обычного спавна.
Все оружие, получаемое актором в диалогах или при торговле, становится
полностью заряженным. Количество патронов в оружии, подбираемом с
трупов, определяется death_manager-ом. Все остальное оружие на
магазинном питании - изначально лежащее на земле или в тайниках -
заряжено только одним патроном.
Добавление новых магазинов, а также что и зачем:
Допустим, надо добвить магазин 5,45х39 на 60 патронов. Редкий, но существующий.
Находим уже существующий магазин, например, на 30
Магазин на 30 патронов 5,45х39
[wm_5.45x39a30]:wm
ammo_mag_size = 30
ammo_class = ammo_5.45x39_fmj, ammo_5.45x39_ap
charged0 = mag_30_5.45x39_fmj
charged1 = mag_30_5.45x39_ap
inv_weight = 0.203
visual = weapons\magazines\mag_30_545x39.ogf
hud = mag_30_545x39_hud
[wm_5.45x39b30]:wm
ammo_mag_size = 30
ammo_class = ammo_5.45x39_ap, ammo_5.45x39_fmj
charged0 = mag_30_5.45x39_ap
charged1 = mag_30_5.45x39_fmj
inv_weight = 0.203
visual = weapons\magazines\mag_30_545x39.ogf
hud = mag_30_545x39_hud
[mag_30_545x39_hud]:wm_hud
visual = weapons\magazines\mag_30_545x39_hud.ogf
[mag_30_5.45x39_fmj]:ammo_5.45x39_fmj
box_size = 1
mag_size = 30
script_binding = ammo_manager.init
wm_section = wm_5.45x39a30
inv_name = mag_30_5.45x39
description = desc_load_5.45x39_fmj
inv_name_short = mag_30_5.45x39_fmj_s
inv_weight = 0.0105
belt = true
inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 38
inv_grid_y = 2
visual = weapons\magazines\mag_30_545x39.ogf
cost = 120
[mag_30_5.45x39_ap]:ammo_5.45x39_ap
box_size = 1
mag_size = 30
script_binding = ammo_manager.init
wm_section = wm_5.45x39b30
inv_name = mag_30_5.45x39
description = desc_load_5.45x39_ap
inv_name_short = mag_30_5.45x39_ap_s
inv_weight = 0.0105
belt = true
inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 38
inv_grid_y = 2
visual = weapons\magazines\mag_30_545x39.ogf
cost = 120
[mag_30_5.45x39_fmj_e]:mag_30_5.45x39_fmj
description = desc_mag_e
inv_weight = 0.203
[mag_30_5.45x39_ap_e]:mag_30_5.45x39_ap
description = desc_mag_e
inv_weight = 0.203
Здесь видим три пары секций: заряжаемый магазин, заряженный магазин (от
1 патрона до максимума, неважно), пустой магазин - три основных типа *
два типа боеприпасов в калибре 5,45х39.