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

Магазинное питание оружия


Kirag

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

Эта секция есть. Специально проверял. Что ж невелика беда. Буду переделывать.

Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки.

Ссылка на комментарий
Kirag, заметил досадный глюк: постоянно добавляется вес в рюкзаке, а где-то через три-четыре часа активной игры появляется лишних 30(!) кг. Как говорил выше Zander_driver, этот вес появляется при лоаде. Может в каллбэк bind_stalker.script на загрузку поместить пересчёт веса в dark_matter_container'е?

S.T.A.L.K.E.R. Weapon modding team - группа вКонтакте

Зона, это не артефакты, деньги монстры или война...Это стиль жизни...

Ссылка на комментарий

По поводу увеличения веса инвентаря после перезагрузки уровня:

Дополнительный вес не всегда учитывался при операциях с магазинами, из-за этого вес в процессе игры набирался меньше, чем должен был. При загрузке уровня он пересчитывался с нуля так, как это было задуманно. Поправил этот момент.

 

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

 

Ссылка в шапке.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Добавлю от себя малость :)

Я немножко изменил give_loaded в ammo_manager.script:

function give_loaded(section)
    if string.sub(section,1,4) == "mag_" or string.sub(section,1,5) == "clip_" or string.sub(section,1,5) == "belt_" then
        consider_loaded = true
    end
    spawn.inv(section)
    news_manager.relocate_item(db.actor, "in", section)
end

Что это дает - при выдаче магазина в диалоге, выдается стандартное сообщение "Получен предмет" с названием магазина.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Тогда уж

    if db.actor:is_talking() then
        news_manager.relocate_item(db.actor, "in", section)
    end

А то не только в диалоге сообщение получится

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

После последнего апдейта, устраняющего невсегда считаемую массу:

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ....t.a.l.k.e.r\gamedata\scripts\kirag_take_drop.script:128: attempt to call field 'vodka_effect' (a nil value)

 

 

stack trace:

После употребления водки

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ....t.a.l.k.e.r\gamedata\scripts\kirag_take_drop.script:56: attempt to call field 'convert_addon' (a nil value)

 

 

stack trace:

После снятия прицела с оружия.

 

Возможно и еще что то вылезет... в Kirag_take_drop.script куча вызовов всяческих функций из item_effects, но в самом этом файле функция только одна. Возможно забыли положить этот файл при апдейте?

 

И еще по изменению массы. Может дело в отсутствующем обновлении item_effects а может в чем то другом, но я заметил один момент когда масса магазинов по прежнему не считается - до сейв-лоада. А именно при взятии свободно лежащего на земле, полностью заряженного магазина. Вес инвентаря остается тем же что был, и только после s\l пересчитывается как надо.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Опять я на те же грабли - я не вложить забыл, а выкинуть ненужное из kirag_take_drop. В результате он совмещен много с чем, но этого много чего в "магазинах" нет. Закомменти нафиг все вызовы из item_effects, кроме item_effects.fake_weapon_effect(sect).

 

По ситуации поднятия магазина - можешь подробнее написать порядок действий с самого начала, откуда магазин взялся. Я вроде делал учет веса при подборе с земли, не пойму, что и где я не учел...

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Ну ситуация такая. Жил был монолитовец, помер от моей пули. Нахожу на его трупе полный магазин. беру. Потом, увидев что веса у меня стало слишком много, выкидываю этот полный магазин на землю, ничего с ним не делая. Потом пошел-повоевал, боеприпасы поистратились. Открываю инвентарь, смотрю вес - ага, магазин тот уже влезет. Иду обратно, подбираю тот выброшенный магазин. Опять открываю инвентарь смотрю - вес тот же. Сохраняюсь, загружаюсь - вес увеличился, магазин посчитался.

 

Edit: Может это чем то поможет, незнаю. Это был магазин на 42 патрона 5.56 для AUG, Вставил я его самостоятельно, вот его секции конфига:

[mag_42_5.56x45_ss190]:ammo_5.56x45_ss190
box_size    = 1
mag_size    = 42
script_binding  = ammo_manager.init
wm_section    = wm_5.56x45a42
inv_name        = mag_42_5.56x45
description        = desc_load_5.56x45_ss190
inv_name_short    = mag_42_5.56x45_ss190_s
inv_weight        = 0.0117
belt = true
inv_grid_width        = 1
inv_grid_height        = 1
inv_grid_x            = 31
inv_grid_y            = 16
visual    = weapons\magazines\mag_30_556x45.ogf
cost = 140

[mag_42_5.56x45_ss190_e]:mag_42_5.56x45_ss190
description        = desc_mag_e
inv_weight = 0.127
inv_grid_width        = 1
inv_grid_height        = 1
inv_grid_x            = 31

[wm_5.56x45a42]:wm;_556
ammo_mag_size    = 42
ammo_class        = ammo_5.56x45_ss190, ammo_5.56x45_he, ammo_5.56x45_pt, ammo_5.56x45_ap
charged0 = mag_42_5.56x45_ss190
charged1 = mag_42_5.56x45_he
charged2 = mag_42_5.56x45_pt
charged3 = mag_42_5.56x45_ap
inv_weight = 0.127
visual    = weapons\magazines\mag_30_556x45.ogf
hud = mag_30_556x45_hud
inv_grid_y            = 15

 

 

 

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Такой вопрос, на арене спавнятся просто патроны, решил исправить, просто добавил, стали появляться но с одним патроном, исправил на спавн из ammo_manager все равно обоймы с одним патроном. Думаю дело в отсутствии дарк_меттер контейнера, добавил его спавн но все равно обоймы с одним патроном, что можно с этим сделать?

アレクセイ 高い
Arekusei takai
Ссылка на комментарий

Через ammo_manager.give_loaded магазины все равно только с одним патроном даются? Странно...

 

План Б, который есть всегда:

for i = 1,к-во_патронов_в_магазинах do
    spawn.inv(секция_магазина)
end

Эти магазины с одним патроном должны переработаться в полные магазины, насколько патронов хватит.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Kirag после добавления

for i = 1,к-во_патронов_в_магазинах do

spawn.inv(секция_магазина)

end

Стало вылетать с логом

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...hernobyl\gamedata\scripts\state_mgr_animation.script:176: attempt to index field 'animations' (a nil value)

С чем это связано фиг знает.

Изменено пользователем Леня Баньши
アレクセイ 高い
Arekusei takai
Ссылка на комментарий

Сам удивляюсь.

Самим по себе спавном предмета в инвентарь запороть анимации невозможно в принципе. Значит, вставил (очень) не туда. Нерабочий спавн по ammo_manager.give_loaded это косвенно подтверждает...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Kirag вставлял в xr_effects.scripts :

...

local spawn_items = {}

 

if has_alife_info("bar_arena_fight_1") then

table.insert(spawn_items, "wpn_pm")

ammo_manager.give_loaded("clip_8_9x18_pmm")

...

アレクセイ 高い
Arekusei takai
Ссылка на комментарий

Похожая ситуация на чистой игре решалась выстрелом, магазин в инвентарь, отбросом оружия, поднятием и последующей зарядкой магазина, в укромном уголке, или скачками по арене, так как в скриптах вообще никак, пришлось искать альтернативу)

 

 

Изменено пользователем desert
Ссылка на комментарий

То есть сначала в таблицу заносится, а потом спавнится?

Тогда план Б выглядит чуть по другому, но смысл тот же:

...
local spawn_items = {} 

if has_alife_info("bar_arena_fight_1") then 
    table.insert(spawn_items, "wpn_pm")
    for i = 1,к-во_патронов_в_магазинах do
        table.insert(spawn_items, "clip_8_9x18_pmm")
    end

...

Только вместо прямого спавна в инвентарь - занесение в таблицу спавна.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Увы, все равно вылет с жалобой на анимацию.

desert, Столько мороки, явно не удобно каждый раз заряжать обоймы и магазины.

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

アレクセイ 高い
Arekusei takai
Ссылка на комментарий

Kirag, а вот версию 1, можно ставить поверх бета версии мода(первой)?? Или на чистое?

Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки.

Ссылка на комментарий

Gandifil

Теоретически, поверх беты с перезаписью всего должно сработать. Если было с чем-то совмещено - совмещать нужно заново 100%.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Нашел еще одну уязвимость в плане вылетов.

Ситуация: В рюкзаке был магазин на 20 патронов 9х39 СП-5. Поместил его в слот, нажал 5, разрядил с помощью ПКМ. Дальше - кажется я на пустом магазине второй раз нажал ПКМ, началась анимация заряжания, но до того как хоть один патрон был заряжен, я переключился на 3 слот, т.е. на автомат. В инвентаре после этого лежал пустой магазин 9х39, обычный пустой по всем признакам.

Потом, помещаю этот пустой магазин в слот, жму 5 - получаю вылет.

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CInifile::r_section
[error]File          : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
[error]Line          : 342
[error]Description   : <no expression>
[error]Arguments     : Can't open section 'mag_20_9x39_sp5_e_e'


stack trace:

 

Со скриптами магазинов ничего не делал, потом специально загружался и проверял на магазинах 20 СП-5 - если нормально разряжать через ПКМ, то все нормально работает.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Странно, почему 2 раза "_e" добавилось. Секцию выпадающего после зарядки в инвентарь магазина скрипт смотрит в конфиге wm_XXX, в строках chargedN. Если магазин пустой, то к этой секции дописывается "_e", но только один раз.

Посмотри, не вписал ли ты случайно секцию пустого магаза в chargedN, тогда могло бы получиться "_e_e" в конце...

Либо скрипт сильно глюканул, но механизм неясен - даже если бы выполнилось дважды, все равно основная секция перечиталась бы из конфига...

 

 

Добавлено через 4 мин.:

P.S. Информация от Zander_driver:

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

entity not found. id_parent=0 id_entity=ХХХ

была просто ужасающая.

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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