Overf1rst 1 509 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 10 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RicoNRT 269 Опубликовано 21 декабря, 2024 Всем привет. Подскажите пожалуйса, как это исправить? Не понимаю, из-за чего это может быть Спойлер Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 22 декабря, 2024 как подствольнику дальность полета и скорость менять, файл то нашел, ковырял все равно ничего не меняться просто когда есть топ оружие, хотелось бы чтоб все было топ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 993 Опубликовано 22 декабря, 2024 sosiska23 grenade_vel в конфиге подствольника. Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 22 декабря, 2024 denis2000 поставил 1000, гранаты летят также Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 22 декабря, 2024 (изменено) Пытаюсь повторить в ЗП интро-катсцену из ЧН с пролетом камеры, но при запуске игры у камеры почему-то "сбиваются" координаты и она воспроизводит полет совсем в другом месте. Если это поможет, то анимацию камеры взял из ЧН (сцена из интро, где камера пролетает по комнате, в которой находятся Шрам, Лебедев и Каланча). Локация Болота (вся геометрия уровня полностью взята из оригинала). При этом в СДК при импорте анимации камеры, она ее проигрывает корректно, там, где нужно. Но в игре почему-то стартует совсем в другом месте. В чем может быть проблема? Изменено 22 декабря, 2024 пользователем Бессмертный Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 993 Опубликовано 22 декабря, 2024 (изменено) sosiska23 Причины: 1. Меняли не там 2. Новую игру не начинали Бессмертный Анимация камеры может проигрывается в двух режимах: в глобальных координатах и относительных. Проверяйте в каких сделана сама анимация и как ее проигрываете. Изменено 22 декабря, 2024 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 22 декабря, 2024 denis2000 Спойлер [wpn_addon_grenade_launcher]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "weapons\addons\grenade_launcher" ; option for Level Editor class = WP_GLAUN cform = skeleton visual = dynamics\weapons\wpn_upgrade\wpn_grenade_launcher.ogf description = st_grenade_launcher_descr $prefetch = 32 cost = 2000 inv_name = st_grenade_launcher inv_name_short = st_grenade_launcher inv_weight = 1.3 inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 18 inv_grid_y = 0 grenade_vel = 1000 ;55 новую игру начинал, тогда где менять? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 22 декабря, 2024 (изменено) 39 минут назад, denis2000 сказал: sosiska23 Причины: 1. Меняли не там 2. Новую игру не начинали Бессмертный Анимация камеры может проигрывается в двух режимах: в глобальных координатах и относительных. Проверяйте в каких сделана сама анимация и как ее проигрываете. Благодарю. Есть понимание, чем отличаются эти режимы? И как определить, в каком режиме сделана анимация, и в каком режиме я ее проигрываю? Изменено 22 декабря, 2024 пользователем Бессмертный Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 993 Опубликовано 22 декабря, 2024 (изменено) 1 час назад, sosiska23 сказал: тогда где менять? В актуальной секции подствольника, для вашей пушки. Где она и как называется известно только вам! Бессмертный Чем отличаются режимы: 1. Режим в глобальных координатах - анимация проигрывается в координатах относительно "глобального" нуля координат на локации (0,0,0). Движковый метод level.add_cam_effector2 2. Режим в относительных координатах - анимация проигрывается относительно текущей точки координат камеры. Движковый метод level.add_cam_effector. Как отличить в каких координатах записана анимация - загрузить ее в SDK и посмотреть, если камера анимирована возле нуля координат, то она относительная, а если анимация расположена далеко в стороне, в конкретном месте локации, то абсолютная. Изменено 22 декабря, 2024 пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 22 декабря, 2024 denis2000 подствольник находиться в weapons.ltx, там все slinser launcher и grenade_launcher я поменял параметры, где подствольник может быть еще прописан? в конфигах пушки параметров подствольника я не нашел Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Бессмертный 2 Опубликовано 22 декабря, 2024 40 минут назад, denis2000 сказал: В актуальной секции подствольника, для вашей пушки. Где она и как называется известно только вам! Бессмертный Чем отличаются режимы: 1. Режим в глобальных координатах - анимация проигрывается в координатах относительно "глобального" нуля координат на локации (0,0,0). Движковый метод level.add_cam_effector2 2. Режим в относительных координатах - анимация проигрывается относительно текущей точки координат камеры. Движковый метод level.add_cam_effector. Как отличить в каких координатах записана анимация - загрузить ее в SDK и посмотреть, если камера анимирована возле нуля координат, то она относительная, а если анимация расположена далеко в стороне, в конкретном месте локации, то абсолютная. Как понял из вашего объяснения, камера работает в глобальных (абсолютных) координатах. Посмотрел в СДК ЧН, координаты камеры и там, и в СДК ЗП совпадают. В СДК обеих частей все проигрывается корректно. Как изменить метод проигрывания, чтобы она срабатывала там же, где в СДК? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 993 Опубликовано 22 декабря, 2024 (изменено) 5 часов назад, Бессмертный сказал: Как изменить метод проигрывания, чтобы она срабатывала там же, где в СДК? За метод проигрывания отвечают разные движковые функции (приводил выше). Если вы используете логику sr_cutscene то там есть специальный параметр: global_cameffect = true 5 часов назад, sosiska23 сказал: в конфигах пушки параметров подствольника я не нашел Параметр grenade_launcher_name Изменено 22 декабря, 2024 пользователем denis2000 1 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 56 Опубликовано 23 декабря, 2024 Как сильно нагружают игру spacerestrictor'ы с логикой? Т.е стоит ли удалять рестрикторы ориг зп во имя оптимизации(если что я про квестовые, которые ждут что либо)? Такой-же вопрос к smart cover'ам. «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 313 Опубликовано 23 декабря, 2024 Pavel2000 если чего-либо много наспавнить, то будет лагать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sidorovich 6 Опубликовано 23 декабря, 2024 На что влияет значение "switch_factor" в файле alife.ltx? Сделать больше - что изменится? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StrawFlux 1 184 Опубликовано 23 декабря, 2024 Sidorovich Участвует в формуле расчета минимального расстояния, при котором объект переходит в онлайн и максимального расстояния, при котором объект переходит в офлайн. Сделаешь больше, разница между m_online_distance и m_offline_distance соответственно будет больше, кароче лучше не трогать. Спойлер 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Conserva 21 Опубликовано 23 декабря, 2024 Такая проблема: хотел я объединить возможность отрезания частей мутантов со спавном Сидоровича (конечно, не с нуля: использовал мод Мясник и файлы для спавна торговца). Знаю, проблема не нова, но искать референсы, как по мне, долговато. Сами-то они по отдельности работают, но при объединении, то есть в скрипте bind_monster, игра либо вылетает, либо торговец спавнится, но отрезать монстрам части уже нельзя. И нет, я не просто заменял скрипт на другой, а именно правил внутри (этакий франкенштейн). Корень проблемы я знаю, а именно то, что в функции bind(obj) для торговца local new_binder = generic_object_binder(obj) заменяется на local new_binder = trader_object_binder(obj), но как решить этот недуг у меня уже котелок не варит. Буду благодарен тем, у кого IQ больше, чему меня. Спойлер Только измененные моменты: function generic_object_binder:death_callback(victim, who) (По сути, в функции оригинальный код, но в конце добавляется это) --' Подключим колбэк юзанья, для возможности снятия частей монстров self:exist_use() end --' Поддержка юзанья частей монстров '------------------------------------------------------------------------------- function generic_object_binder:exist_use() local ini = system_ini() if ini:line_exist(self.object:section(), "Spawn_Inventory_Item_Section") then local conf = ini:r_string(self.object:section(), "Spawn_Inventory_Item_Section") local items = {} for s in string.gfind(conf, "%s*([^,]+)%s*") do table.insert(items, s) end self.item = items[1] if self.item and system_ini():section_exist(self.item) then self.item_count = tonumber(items[2]) or 1 self:set_use(ini) end end end function generic_object_binder:set_use(ini) --//определяем и устанавливаем надпись юза local character_use = (ini:r_string(self.object:section(), "character_use")) or "monstr_character_use" self.object:set_tip_text(character_use) --// устанавливаем каллбэк self.object:set_callback(callback.use_object, self.on_use, self) --// устанавливаем озвучку юза self.sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl") if not self.use then self.use = true end end function generic_object_binder:on_use(obj, who) --// спавним в инвентарь юзающего, части монстра for i=1, self.item_count do alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id()) end --// отключаем каллбэк self.object:set_callback(callback.use_object, nil) --// убираем надпись юза self.object:set_tip_text("") self.use = false --// дадим небольшой хит по телу трупа local ini = system_ini() local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = vector():set(0,1,0) h:bone( (ini:r_string(self.object:section(), "bone_impuls_abscission")) or "bip01_spine" ) h.power = 1 h.impulse = ( (ini:r_u32(self.object:section(), "impuls_abscission")) or 100 ) self.object:hit(h) --// производим озвучку юза self.sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d) end --'----------------------------------------------------------------------------------------------------------------------- function generic_object_binder:save(packet) (По сути, в функции оригинальный код, но в конце добавляется это) --------- use ----------- packet:w_bool(self.use) ------------------------- end function generic_object_binder:load(reader) (По сути, в функции оригинальный код, но в конце добавляется это) ---------- use ----------- self.use = reader:r_bool() if self.use then self:exist_use() end ------------------------- end Спойлер ----------------------------------------------------------------------------------- -- Sidor etc binding ----------------------------------------------------------------------------------- function bind(obj) local new_binder = trader_object_binder(obj) obj:bind_object(new_binder) end ------------------------------------------------------------------------------------ class "trader_object_binder" (object_binder) function trader_object_binder:__init(obj) super(obj) self.loaded = false end function trader_object_binder:reload(section) object_binder.reload(self, section) end function trader_object_binder:reinit() object_binder.reinit(self) db.storage[self.object:id()] = { } self.st = db.storage[self.object:id()] end function trader_object_binder:update(delta) object_binder.update(self, delta) -- јпдейт торговли if self.object:clsid() == clsid.script_trader then trade_manager.update(self.object) end local st = db.storage[self.object:id()] if st ~= nil and st.active_scheme ~= nil then xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor) end if self.st.active_section ~= nil then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta) end end function trader_object_binder:net_spawn(sobject) if not object_binder.net_spawn(self, sobject) then return false end local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist if on_offline_condlist ~= nil then xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist) end if not self.object:alive() then return true end if alife():object(self.object:id()) == nil then return false end db.add_obj(self.object) if self.object:clsid() == clsid.script_trader then self.object:set_trader_global_anim("idle_spinka") smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded) end return true end function trader_object_binder:net_destroy() xr_sound.stop_sounds_by_id(self.object:id()) local st = db.storage[self.object:id()] if st and st.active_scheme then xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy") end if db.offline_objects[self.object:id()] then db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id() db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section end db.del_obj(self.object) db.storage[self.object:id()] = nil object_binder.net_destroy(self) end function trader_object_binder:net_save_relevant() return true end function trader_object_binder:save(packet) set_save_marker(packet, "save", false, "trader_object_binder") object_binder.save(self, packet) xr_logic.save_obj(self.object, packet) if self.object:clsid() == clsid.script_trader then trade_manager.save(self.object, packet) end set_save_marker(packet, "save", true, "trader_object_binder") end function trader_object_binder:load(reader) self.loaded = true set_save_marker(reader, "load", false, "trader_object_binder") object_binder.load(self, reader) xr_logic.load_obj(self.object, reader) if self.object:clsid() == clsid.script_trader then trade_manager.load(self.object, reader) end set_save_marker(reader, "load", true, "trader_object_binder") end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mawrak 706 Опубликовано 23 декабря, 2024 (изменено) Sidorovich StrawFlux switch_distance можно менять спокойно, это просто увеличит\уменьшит радиус спавна НПС в онлайн. Conserva а что вообще за скрипт для спавна Сидировича? Что он делает? Мне казалось восстановить Сидоровича гораздо проще - https://modfaq.ru/Восстановление_Сидоровича Изменено 23 декабря, 2024 пользователем Mawrak 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 993 Опубликовано 23 декабря, 2024 Conserva Не пытайтесь все утоптать в один биндер сделайте для Сидоровича отдельный: Для мутантов правки в bind_monster.script, для Сидора в bind_trader.script. В секции Сидора поставьте script_binding = bind_trader.bind 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
стрелок_2009 7 Опубликовано 23 декабря, 2024 А как добавить оружию возможность улучшить его у техника? А то создал уникальный ствол а как добавить апгрейды не знаю, по идее по анологии с броне, но в каких конкретно файлах? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
golosgo 0 Опубликовано 23 декабря, 2024 (изменено) Ребят всем привет, я хочу начать свой путь в моддинг, скажите пожалуйста где мне найти информацию о том как мне собрать сборку X-Ray 1.6.02, исходный код движка игры, для работы над модификациями S.T.A.L.K.E.R. Call of Pripyat (так же буду не против если подскажете где можно найти исходник движка Clear Sky), я хочу сделать свой первый мод на чистую оригинальную версию игры, буду благодарен за помощь. p.s. я мог немного не понятно задать вопрос ибо, я честно не знаю как его задать, задал как смог) Изменено 23 декабря, 2024 пользователем golosgo Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 56 Опубликовано 23 декабря, 2024 golosgo https://ap-pro.ru/forums/26-rabota-s-sdk/ 1)устанавливаете нужный вам sdk 2)ищите в интернете гайды и уроки как ими пользоваться 3)Изучаете 4)Начинаете свой путь в модинг (при появлении вопросов пишете сюда) 2 часа назад, golosgo сказал: исходный код движка игры это для супер прошаренных программистов, скорее всего вам нужно распаковать оригинальные ресурсы игры в этом вам поможет Дополнено 4 минуты спустя стрелок_2009 вроде в этих inventory_upgrades.ltx и stalkers_upgrade_info.ltx 1 1 «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 24 декабря, 2024 надо убрать еду с возможно спавна лута в трупах, во всех death_items_by_communities.ltx, death_items_by_levels.ltx, death_items_count.ltx, еда поставлена на ноль, при этом все равно спавниться в трупах, новую игру начинал, в том что ноль уверен Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 56 Опубликовано 24 декабря, 2024 sosiska23 в профилях нпс исть инклуды character_food.xml там ещё посмотри 1 «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sosiska23 0 Опубликовано 24 декабря, 2024 Pavel2000 там тоже на ноль поставил, все равно еда появляется Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты