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

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


Kirag

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

Всем привет!

Во первых респект автору этого чудного мода. Теперь по теме.

Адаптировал мод к Восстановлению старого сюжета. Вроде бы все совместил, игра пошла. Дошел до Свалки и при обыске убитого бандита - вылет. Причем сколько бы не перегружал сейв, именно при обыске одного из бандитов вылетает. Плюнул, перестал обыскивать бандюков, пошел дальше. На Агропроме после спасения Крота при обыске одного из солдат опять вылет и опять та же история с загрузкой сейвов - стабильный вылет. Начал просматривать логи и нашел одну закономерность: вылет происходит в этот момент - level_prefix_inventory_box_0023.

Лог вылета на Свалке при обыске бандита:

sv destroy object [44288][ammo_12x76_dart:ammo_12x76_dart44288] [43133]
sv reject. id_parent [0][actor:single_player] id_entity [44288][ammo_12x76_dart:ammo_12x76_dart44288] [43133]
sv destroy object [44298][inv_separator:inv_separator44298] [43133]
sv reject. id_parent [0][actor:single_player] id_entity [44298][inv_separator:inv_separator44298] [43133]
sv reject. id_parent [0][actor:single_player] id_entity [44289][ammo_12x76_dart:ammo_12x76_dart44289] [43134]
sv ownership id_parent [3191][inventory_box:level_prefix_inventory_box_0023] id_entity [44289][ammo_12x76_dart:ammo_12x76_dart44289] [43134]
sv reject. id_parent [0][actor:single_player] id_entity [44290][ammo_12x76_dart:ammo_12x76_dart44290] [43134]
sv ownership id_parent [3191][inventory_box:level_prefix_inventory_box_0023] id_entity [44290][ammo_12x76_dart:ammo_12x76_dart44290] [43134]
sv reject. id_parent [0][actor:single_player] id_entity [44288][NOTFOUND] [43134]

FATAL ERROR

[error]Expression    : assertion failed
[error]Function      : xrServer::Process_event_reject
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
[error]Line          : 12
[error]Description   : e_parent && e_entity


Лог вылета на Агропроме при обыске солдата:

sv destroy object [45313][ammo_12x76_dart:ammo_12x76_dart45313] [29845]
sv reject. id_parent [0][actor:single_player] id_entity [45313][ammo_12x76_dart:ammo_12x76_dart45313] [29845]
sv destroy object [45324][inv_separator:inv_separator45324] [29845]
sv reject. id_parent [0][actor:single_player] id_entity [45324][inv_separator:inv_separator45324] [29845]
sv reject. id_parent [0][actor:single_player] id_entity [45315][ammo_12x76_dart:ammo_12x76_dart45315] [29846]
sv ownership id_parent [3191][inventory_box:level_prefix_inventory_box_0023] id_entity [45315][ammo_12x76_dart:ammo_12x76_dart45315] [29846]
sv reject. id_parent [0][actor:single_player] id_entity [45316][ammo_12x76_dart:ammo_12x76_dart45316] [29846]
sv ownership id_parent [3191][inventory_box:level_prefix_inventory_box_0023] id_entity [45316][ammo_12x76_dart:ammo_12x76_dart45316] [29846]
sv reject. id_parent [0][actor:single_player] id_entity [45313][NOTFOUND] [29846]

FATAL ERROR

[error]Expression    : assertion failed
[error]Function      : xrServer::Process_event_reject
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
[error]Line          : 12
[error]Description   : e_parent && e_entity

Может быть кто сталкивался с такой заковыкой при совмещении мода с ВСС и может посказать откуда берется этот level_prefix_inventory_box_0023?

Вообще, если кто совмещал магазины и ВСС может выложите ссылки? Я в скриптах не очень силен, действую скорее интуитивно, может где накосячил при совмещении файлов. Поэтому было бы интересно посмотреть на работы других и сравнить с ними. Выше была ссылка на совмещение от Callisto, (№205) но пишет, что срок хранения окончен, хорошо бы обновить.

Всем удачи!

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


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

Добрый всем день!

Kirag не подскажешь решение проблемки?

Совместил магазины с Восстановлением старого сюжета. Все работает нормально. Потом решил ввести мод Реальные болты (Вот ссылочка http://narod.ru/disk/10137379001/realbolt_%20v1.02.7z.html Автор Charsi. Реализует болты, которые заканчиваются, можно поднимать брошеный болт.). Совместил скрипты. Загрузил игру, для теста сразу выдал у Сидора ПМ и обойму к нему. Все работает - и болты и магазины заряжаются-разряжаются правильно. Проблема началась после помощи Толику у вагончика. Зарядка-дозарядка-разрядка магазина проходит нормально. а вот при разрядке пистолета (без разницы в слоте или в инвентаре) происходит увеличение количества полных магазинов на количество патронов, которое было в пистолете на момент разрядки.

Чтобы выяснить "откуда растут ноги" в файле ammo_manager.script расскоментил 522 строку (qqq("process_new_ammo: released")) и выяснил что этот глюк начинается как только обыскиваешь труп или какой-либо тайник. То есть сначала при разрядке оружия выводятся сообщения QQQ, а как только обыскиваешь - сообщения прекращаются. Получается, что функция перепаковки патронов в магазин перестала работать. Я прав?

В чем может быть дело? Как исправить?

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


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

Kirag

После долгого ковыряния кажется докопался в чем причина. Глюк происходит в трех случаях: при торговле и при обыске трупа\ящика, т.е. когда открывается (не знаю как правильно это сказать) окно торговли - на одной стороне инвентарь ГГ, на другой инвентарь НПС\трупа\ящика. Дело в том, что в моде два вида болтов - bolt и fake_bolt. Так вот когда просто открываешь инвентарь клавишей i в нем виден только fake_bolt, а если торгуешь\обыскиваешь, то видны и fake_bolt и bolt. Получается что bolt в это время удаляется из своего 5 слота в инвентарь и сразу после этого начинают глючить магазины. Какая тут связь убей не пойму. Как его оставить в слоте у меня ума не хватает. Вроде бы и место это нашел в скрипте:

function on_info(info_id)
if info_id == "ui_car_body" or info_id == "ui_trade" then
	if db.actor:item_in_slot(5) then
		del_bolt()
		spawn_item_in_inv("fake_bolt")
	end		
elseif  info_id == "ui_car_body_hide" or info_id == "ui_trade_hide" then
	local obj = db.actor:object("fake_bolt")
	if obj then remove_item(obj) db.actor:transfer_item(db.actor:object("bolt"),db.actor)  end
	end
end

function del_bolt()
-- спавним болт чтоб не было битья сейва
local npc=db.actor
alife():create("bolt", npc:position(),npc:level_vertex_id(),npc:game_vertex_id(), 0)
f=true f2=true
bolt_in_hands_id=nil
db.actor:transfer_item(db.actor:item_in_slot(5),level.object_by_id(box_id))
end

а что делать с ним не знаю.

Да, есть еще четвертый случай - если сразу после начала игры выбросить bolt (он пока единственный). Выбросил - в слоте болтов ничего нет - не стал поднимать - разрядил пистолет - получил +8 магазинов. Поэтому я и сделал вывод, что если нет болта в слоте, начинаются проблемы.

P.S. Чертовы болты!... Но интересно.

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


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

k01jan, Полностью согласен с xer-urg, у меня точно так же все происходит, только задержка не полминуты, а секунд 6-7. Кстати поднять можно и первый болт, и он явно еще не фейковый, прямо у Сидора если бросить. Но он тоже подпрыгивает, значит и он превращается в фейковый? Но в инвентаре при торговле он идет отдельно от фейковых и просто как болт, он всегда один.

 

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

xer-urg, выяснил дело точно не в ВСС. Поставил сейчас Магазины на чистый Сталкер, совместил с болтами и получил тоже самое, что и раньше - Магазины перестают работать как только открывается окно торговли или обыска. В файле bolt_mod.script есть функция function on_info(info_id) где упоминаются оба эти окна ("ui_car_body" и "ui_trade"), правда как на инфопоршни, но ссылок на саму эту функцию я больше нигде не нашел. В какую сторону дальше копать не знаю. Но задача становится все интересней. :dash2:

 

P.S. Сбрехал. Нашел ссылку на функцию. В bind_stalker. Попробую покопаться здесь.

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


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

Доброй всем ночи!

xer-urg, всё, совместил ВСС, Магазины, Болты. Сделал одну маленькую правочку: закомментировал в bind_stalker.script в функции actor_binder:info_callback обработку bolt_mod.on_info(info_id). Все работает.

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

А на ВСС нет никаких проблем. Для теста прошел Кордон и Свалку. Выполнял все квесты, примерно каждые 5 минут сохранял-загружал. Ни одной проблемы. Если еще интересует - пиши. Попробую куда-нибудь выложить адаптацию (никогда этого еще не делал).

 

Kirag, спасибо за наводку по направлению поиска ошибки. Отдельный респект за твой мод. Он у тебя супер! Когда с 2 обоймами к ПМ в одиночку штурмуешь АТП, а там ребятки с Бизонами - это что-то!

Кстати нашел в нем один "недостаток". Пришел с АТП, погода мерзкая, весь израненный, голодный, присел у костерка погреться, анекдотов послушать. Достал магазин от Бизона, решил зарядить в кругу друзей. И тут началось: Убери оружие-Чувак ты что оглох?-Опусти оружие. Пришлось прятаться в подвал, и там в одиночку, чтоб никто не дай бог не заметил набивать магазин.

Отсюда вывод - твой мод первый претендент на звание Самый интимный мод для Сталкера! :ny_z_6:

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


Ссылка на сообщение
(изменено)

Kirag, я про "недостаток" в шутку, прикола ради

 

Да я и не воспринял в обиду :) Самого иногда достает :) - Kirag

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

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


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

Мужики, да оно не напрягает - ну отошел в сторонку и заряжай спокойно.

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


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

Верес, почему нельзя перезарядиться? Разрядил оружие, вставил полупустой магазин в слот и хочешь дозаряжай, хочешь перезаряжай. Вопрос только, захочется тебе этого под пулями?

А вообще я теперь в любой мод, в какой буду играть, постараюсь вставить магазины. Потому как если один раз его попробовал, то без него уже не тот интерес и не тот эффект. Выставил в луте 0.0 на магазины, и теперь уже приходится очень хорошо подумать стоит ли стрелять лишний раз, или поберечь патрон в обойме, потому как она может быть даже одной-единственной. Даже разгрузка в NLC 6 не дает такого эффекта. А сам процесс набивания магазина? Это же мечта... И мечта сбылась!

Kirag, кстати во второй части NLC 6 обещают разгрузку, в которую можно будет "засунуть" любые патроны\гранаты\аптечки и т.д. Может быть теперь получится соединить разгрузку и твои магазины? Мне кажется, не один я буду ждать такой связки.

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


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

xer-urg, предметы в продажу у НПС правятся в trade_generic.ltx. Но, по-моему, ставить магазины им в продажу - это гиблое дело. Надо как-то отследить ранг НПС, его оружие, группировку. Лучше поставить их в продажу торговцам (trade_barman, trade_dolg, trade_trader и т.д.). Можно выставить любые магазины и любое их количество, привязать торговлю к группировке и месту расположения торговца и, частично, даже к развитию сюжета. Впрочем у меня даже без прописывания в продажу НПС, Бес на Свалке после того как я ему продал ТОЗ-34, решил мне продать 5(!) рожков к АК-74, а Серый - пару рожков к МП-5.

А НПС лучше спавнить их после смерти. Повторюсь, так как это уже было описано, но чтоб не искать:

Jonny

В xr_motivator в death_callback найди проверку, начинающуюся с

if self.ammo_in_use ...

(там одна такая, не ошибешься) и в ней в math.random поменяй 4 на сколько считаешь нужным.

Я у себя сначала поставил local count = math.random(1,2). К Агропрому у меня было 22 рожка к АК. Сейчас выставил (0,0), то есть магазин могу снять только с подобранного оружия, да и то не всегда - в среднем 1 магазин с 5-7 стволов. Стало более приемлемо, а то приходилось даже выбрасывать - не унести.

Zander_driver,

Господа, я конечно извиняюсь и не сочтите за рекламу, но в моде Жесть (1.0.3) уже реализовано сочетание магазинов и некого подобия "разгрузки".

Можешь описать поподробней, чтобы понять что к чему?. А то скорость моего НЕТа не позволяет быстро скачать саму Жесть. Что это за некое подобие разгрузки?

Верес, а зачем тебе убирать обойму с 6 патронами, если у тебя всего в наличии, допустим, 2 обоймы? А после боя, как и положено, разрядил недострелянную, и в спокойной обстановке, у костерка, под заслуженные 100 грамм набил все пустые и полупустые. И завтра в бой с полным боезапасом!

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


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

xer-urg, а если в trade_generic.ltx прописать напрямую запрет на торговлю магазинами, например:

mag_30_5.45x39_fmj ;NO TRADE. Только придется прописывать туда все-все магазины. По-моему должно помочь. Даже если они будут отражаться в Инвентаре у НПС, продать они их по идее не смогут. Точнее ты не сможешь купить.

Kirag, ну рассмешил (пару вирусов). Хотя ты прав, шифровальщики еще те, непонятно правда для чего это делают. Я и сам думаю как ты, только смелости вслух об этом сказать не хватало. А насчет пойти своим путем - это замечательно! Буду с нетерпением ждать твоих находок. Если нужна будет помощь в тестировании - пиши. Неплохо владею Фотошопом, если надо будет помочь с текстурами - без проблем.

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


Ссылка на сообщение
(изменено)

k01jan, секция mag_30_7.62x39_fmj_e находится в файле \ammo\762x39.ltx. Подобный твоему вылет уже обсуждался в этой теме. Он по-моему был у Zandera. Попробуй поискать по предыдущим постам. Но решения кажется не нашли (но точно не помню).

 

Вот нашел - сообщения 359,360. Вылет идентичный твоему: Can't open section 'mag_20_9x39_sp5_e_e'

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

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


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

Kirag, после введения твоей правки (e_sect = get_e_sect(lost_ammo_sect)), такие вылеты прекратились. Прошел почти весь ВСС, ни одного не поймал.

 

Как там с разгрузкой, ничего не придумал? Я попробовал сам, хотел сделать на базе контейнеров для артефактов от Руси. Они там и собирались ее делать, да что-то заглохла эта тема. Но посмотрел скрипты, и понял, что у меня не выйдет. Вся надежда на тебя.

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


Ссылка на сообщение
k01jan, я тоже пробовал совместить те, что ты указал в ссылке. Но у меня с ними магазины не работали - в каждом по одному патрону. Я немного повозился и бросил. Только у меня еще впридачу и болты стояли.

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


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

Kirag , поймал вот такую интересную штучку, обрати внимание на количество патронов в ружье.

t50998_1.jpg t50999_2.jpg

Не знаешь отчего такое получилось? Перед этим я вставил на пояс магазин от ПМ с 7 патронами, а во втором случае - магазин от АК с 34 патронами на дозарядку. После того, как отстрелял 7 и 34 патрона, все встало на свои места - 2патрона.

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


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

То, что редко такое вылазит - согласен. Я сколько Сталкером занимаюсь такое всего второй раз за сколько лет. Просто это уже второй раз в течение трех недель получилось. Первый раз не заострил внимания, ну глючок, да и ладно, а вот второй раз уже стало интересно. Происходит это только после загрузки сохранения. То есть загрузился, поставил магазин на дозарядку, получил 7 патронов в ружье. Удивился и загрузил еще раз то же самое сохранение, опять получил 34 патрона. В процессе игры такое не встречалось, только при загрузке этого сохранения. Ну, будем надеяться, что действительно не критично.

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


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

А какой смысл еще усложнять прекрасно работающий алгоритм? По-моему прекрасно перезаряжается по нажатию клавиши смены типа патронов ("Y"). Мне например наоборот нравится, что нельзя просто перезарядиться клавишей перезарядки. Вот что нужно бы сделать, так это чтоб пустые магазины в инвентаре были, так сказать, "одного типа". У Zandera в Жести 1.03 это хорошо реализовано. У него там куча разных патронов: простые, бронебойные, зажигательные, со смещенным центром тяжести. И если не преобразовывать пустые к одному типу, представляете, что будет твориться в инвентаре?. Я попробовал вырезать эту перепаковку из его функций, ног ничего не получилось - после Свалки начались сбои, а причину их я найти не смог. Kirag, если будишь что делать со своим модом, может придумаешь что-либо насчет пустых магазинов?

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


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

Ulman, странно, почему у тебя 873 с вылетом? Ты на какой патч ставил? Хотя. в принципе, какая разница, я ставил и на 4 и на 5 и на 6. Все работает с этой правкой. Может ты сам вводил какие-либо новые магазины к оружию, не прописанные у Kiraga. Если вводил, проверь, чтобы все они начинались с wm_, описывали все типы патронов под эти магазины и находились в файле magazines.ltx. Почитай в шапке ридми, подробно расписано. Или возможно при правке _g.script просто ошибку в синтаксисе сделал. Проверь еще раз внимательно, все работает.

 

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

Ulman, я еще что подумал, а нет ли проблемы в том, что ты ставишь не на движок ТЧ?

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


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

Ulman, насчет движка просто предположил посмотрев твое видео из подписи.

 

Секция [ammo_base] у меня выглядит так:

[ammo_base]:identity_immunities

;belt = true;

 

#include "ammo\magazines.ltx"

#include "dark_matter.ltx"

#include "ammo\9x18.ltx"

#include "ammo\9x19.ltx"

#include "ammo\9x39.ltx"

#include "ammo\12cal.ltx"

#include "ammo\57x28.ltx"

#include "ammo\357.ltx"

#include "ammo\545x39.ltx"

#include "ammo\556x45.ltx"

#include "ammo\762x25.ltx"

#include "ammo\762x39.ltx"

#include "ammo\762x51.ltx"

#include "ammo\762x54.ltx"

#include "ammo\792x57.ltx"

#include "ammo\1143x23.ltx"

#include "ammo\1270x99.ltx"

#include "ammo\1270x108.ltx"

#include "ammo\gauss_ammo.ltx"

,

но только находится она в файле weapons.ltx, а не в magazines.ltx. Непонятно, зачем ты ее переносил.

Функцию function isWeapon(object) из твоего поста только что скопировал в свой файл _g.script ТЧ 1.004. Все работает великолепно. НПС внимания не обращают и кричат убрать оружие только тогда, когда магазин полностью заряжен в руках появляется настоящее оружие. Пробежал весь Кордон - никаких вылетов.

Все-таки, по-моему, где-то что-то ты криво вставил или ошибку допустил. Мод у Kiraga практически безглючный, а фатальных вылетов по такой как у тебя причине ни разу не встречал.

А до правки _g.script вылеты были? Может имеет смысл весь мод полностью по новой пересадить?

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


Ссылка на сообщение
SHADY08, секция inv_separator находится в файле magazines.ltx. Если ты ставил Оружейный пак после магазинов, то вполне возможно, что описания этого файла у тебя не будет. Попробуй проверь, есть ли у тебя в файле config\weapons\weapons.ltx строка #include "ammo\magazines.ltx". Если ее нет, внеси. Этот вылет должен уйти.

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


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

SHADY08, словами, такими как твои последние, бросаться не надо.

А по теме, то внимательно прочитай "ReadMe" из шапки темы. Там все подробно и ясно описано. Если сказать короче, то тебе надо во всех файлах твоего оружейного аддона переписать строки ammo_class, так как при магазинном питании идет зарядка не патронами, а магазинами. Открой любой файл оружия из мода (магазинов) и посмотри. И лучше избавиться от "экзотических" типов патронов, таких например, как в твоем посте.

 

 

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

Про "родительскую" секцию.

Например, у нас есть патроны ammo_12x76_zhekan (в файле 12cal.ltx). Для них ниже указаны все параметры этого боеприпаса. Это родительская секция. В этом же файле ниже есть патрон ammo_12x76_zhekan_heli. Для этого патрона выполняются все параметры родительского (ammo_12x76_zhekan) и плюс добавлены свои параметры explosive=on и wm_size= 0.336, отличные от родительского. Следовательно и описание этого патрона (ammo_12x76_zhekan_heli) должно стоять после описания родительского.

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


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

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

AMK-Team.ru

×
×
  • Создать...