Overf1rst 1 498 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 23 января Возможно, не совсем в тему, так как на OpenXR (True Stalker) Спавню скриптово по alife():create разное барахлишко в комнату под замком на базе бандитов в Долине. Предполагается, что барахло (консервы там, аптечки или водка) будет стоять/лежать на "железных столах" или хотя бы на полу. Но оно всё проваливается сквозь и столы, и пол и копится в тюремном подвале. Есть ли способ как-то пофиксить это без использования SDK и аллспавна? Для спрвки: немного юзабельного (подбираемого) барахла там на столах уже имеется, вероятно из аллспавна/SDK. Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 498 Опубликовано 23 января @BarmaGlot alife():create(...):use_ai_locations(false) 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 23 января (изменено) BadTrip В диалоге вызываете самописную функцию, например: dialogs.spawn_corpse_babay В скрипте dialogs.script пишете функцию: function spawn_corpse_babay() xr_effects.spawn_corpse(db.actor, db.actor, {"babay","babay_corpse_point"}) end где babay - кого спавнить, babay_corpse_point - точка где спавнить. Изменено 24 января пользователем denis2000 1 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 23 января 9 минут назад, Overf1rst сказал: @BarmaGlot alife():create(...):use_ai_locations(false) Омг! Гранд мерси! Здесь я ещё не особо запыхался, а вот несколько лет назад реально бился с этими ветряными мельницами до изнеможения, методом тыка. Мда... И тоже ведь мог спросить, уже здесь тусовал... 1 Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 498 Опубликовано 23 января 8 минут назад, denis2000 сказал: spawn_corpse_babay function потеряли) Дополнено 18 минуты спустя 19 минут назад, BarmaGlot сказал: Омг! Гранд мерси! Здесь я ещё не особо запыхался, а вот несколько лет назад реально бился с этими ветряными мельницами до изнеможения, методом тыка. Мда... И тоже ведь мог спросить, уже здесь тусовал... Если ты будешь с этим биться в своём проекте, используй SDK и убирай галочку use ai locations, по координатам-то зачем спавнить или как ты там делаешь) не трогай склад бандитов в TS!!!!11! 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BadTrip 2 Опубликовано 24 января (изменено) denis2000 Сделал как вы говорили, точкой выступил мой созданный way point который не был ни к чему привязан, нпс я спаунил взяв ID из character_desk_general, а именно это был "sim_default_stalker_1_default_0", вышла ошибка, что не смогло найти этого НПС, получается я взял id не там, где надо? Или же точка не та? Подскажите, пожалуйста. Диалог сам по себе точно рабочий. В дополнение, еще я попробовал заспаунить на точке, где у меня стоит шейп для квеста с логикой в скриптах конфига локации, но там вообще никого не было и игра не вылетала. Изменено 24 января пользователем BadTrip Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Novik 21 Опубликовано 24 января В общем решил решил сделать текстуры кнопок, создал новый файл в textures\ui\ui_mainmenu_opt_new.dds Нарисовал кнопку, подобрал координаты. затем создал конфиг ui\textures_descr\ui_mainmenu_opt_new.xml <w> <file name="ui\ui_mainmenu_opt_new"> <texture id="ui_element_btn_mm" x="17" y="15" width="108" height="26" /> </file> </w> и применил ее в файле меню опций <btn_accept x="84" y="431" width="108" height="26" stretch="1"> <text font="letterica18" align="c">ui_mm_apply</text> <texture>ui_element_btn_mm</texture> <text_color> <e r="170" g="170" b="170"/> </text_color> </btn_accept> Но кнопка не отображается просто фиолетовым цветом, как недостоющая текстура. Что я не так сделал? может где-то еще нужно регистрировать файлы? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 498 Опубликовано 24 января @BadTrip ты взял id профиля, а нужно взять секцию из spawn_sections. Например, можно взять sim_default_stalker_1. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 884 Опубликовано 24 января 3 часа назад, Novik сказал: Что я не так сделал? Неправильно зарегал: <texture id="ui_element_btn_mm_e" x="17" y="15" width="108" height="26" /> <texture id="ui_element_btn_mm_h" x="17" y="15" width="108" height="26" /> <texture id="ui_element_btn_mm_t" x="17" y="15" width="108" height="26" /> <texture id="ui_element_btn_mm_d" x="17" y="15" width="108" height="26" /> "e" - текстура в обычном режиме; "h" - при наведении курсором; "t" - при нажатии; "d" - кнопка в заблокированном виде. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 24 января Здраствуйте. Как изменить размер шрифта обычного тега text? text находится в auto_static если что. Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 953 Опубликовано 24 января (изменено) Toplol4ik <text font="letterica18" r="128" g="128" b="128">ТЕКСТ</text> font - в данном контексте шрифт, нужно выбрать его большего размера. Изменено 25 января пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 24 января (изменено) denis2000 Мне нужно изменить размер текста. Как его делать я знаю. Изменено: Уже не надо, поставил graffiti50 и шрифт стал нужного размера Изменено 24 января пользователем Toplol4ik Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 25 января (изменено) А есть где либо гайды по созданию вот такой энциклопедии (ссылка). Помню где то в модах встречал такое типо личных заметок. Хотелось бы сделать такое для артефактов. Типо нашёл арт инфа добавилась. Подскажите такое вообще возможно? и куда копать что бы реализовать? UPD: Нашёл готовый личный дневник ссылка если кому то нужно Изменено 25 января пользователем Pavel2000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Novik 21 Опубликовано 25 января Как можно отключить все тени в сталкер зп? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 25 января OpenXR + Gunslinger = TrueStalker (сорри за возможный оффтопик) Вопрос: как скриптово заспавнить фаршированный ствол? Например, актёр имеет проапгрейденный MP5 с лазером, мазером, магазином на 100500 патронов и так далее. Секция этого ствола всё равно остаётся без изменений, там нет никаких намёков на установленные улучшения. Я проштудировал конфиги и скрипты и так не понял, как этот ствол сохраняется/читается и не вижу возможности его спавна в состоянии улучшенном относительно "базы". Это делается на уровне движка? Есть какой-нибудь интерфейс со стороны Lua? Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 26 января В 25.01.2024 в 11:32, Pavel2000 сказал: Хотелось бы сделать такое для артефактов. Типо нашёл арт инфа добавилась. Подскажите такое вообще возможно? и куда копать что бы реализовать? Так сказать энциклопедия для артефактов есть, появился другой вопрос, для того что бы статья появилась в энциклопедии нужен инфопоршень, нашёл способ с выдачей поршня при поднятии предмета из bind_stalker.script function actor_binder:on_item_take (obj) --функция отслеживания появления предметов в инвентаре: if db.actor then name = obj:section() if db.actor:object("артефакт") ~= nil then db.actor:give_info_portion("поршень") end end артефактов у меня 160... в интернетах прочитал что много лишнего лучше в bind_stalker.script не добавлять (типо это постоянные проверки и они будут грузить игру). задался вопросом как вызвать эту функцию в своём скрипте, но так и не понял. возможно есть какой нибудь другой способ? Спрашивается зачем мне это нужно? -- для того что бы знать какой арт нашёл какой не нашёл. Дополнено 2 минуты спустя есть ещё идея выдача поршня через непися с добавлением записи в энциклопедию но хотелось бы реализовать первый вариант потому что показалось что он проще Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 26 января Pavel2000 actor_binder:on_item_take отличное место, как по мне. Чтобы не "портить многострочием" (не перегружать) сам код в bind_stalker, вставить здесь вызов уже своего скрипта, типа mod_encyclopedy.check_info(obj) А уже там, в mod_enciclopedy.script сделать: 1) в начале таблицу info_by_section = { sect1 = info1, sect2 = info2, -- ... sectN = infoN, } 2) обработчик function check_info(obj) if not obj then return end local info = info_by_section[obj.section and obj:section() or obj.section_name and obj:section_name()] if not info then return end if not has_alife_info(info) then give_info(info) -- log(string.format("info %s given", info)) end end Дополнено 14 минуты спустя 1 час назад, Pavel2000 сказал: в интернетах прочитал что много лишнего лучше в bind_stalker.script не добавлять (типо это постоянные проверки и они будут грузить игру). on_item_take вызывается крайне редко (за исключением массового сбора хабара по лутанию тела или тайника), и здесь этого опасаться не нужно 1 Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 26 января BarmaGlot как вызвать скрипт я понял но дальше моя бошка не соображает куда прописывать ади объектов и как выдаётся нужный поршень, можно пожалуйста по подробнее разжевать что находится в отдельном скрипте Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 26 января Pavel2000 Чтоб было понятнее, напишите несколько секций своих артов и несколько инфопоршней, им соответствующих Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 26 января BarmaGlot af_bat, af_fire_loop, af_fountain (арты) st_af_1, st_af_2, st_af_3 (поршни) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 26 января (изменено) info_by_section = { af_bat = st_af_1, af_fire_loop = st_af_2, af_fountain = st_af_3, } Однако, замечу, что st_af_N по виду скорее айди какой-то строки. Инфопоршни принято мнемонически кодировать ОСМЫСЛЕННО (за редким исключением). Я бы переврал ваши инфопоршни как info_af_bat, info_af_fire_loop, info_af_fountain upd: Айдишники строк, кстати, тоже принято осмысленно обзывать. Изменено 26 января пользователем BarmaGlot Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 26 января 48 минут назад, BarmaGlot сказал: 2) обработчик function check_info(obj) if not obj then return end local info = info_by_section[obj.section and obj:section() or obj.section_name and obj:section_name()] if not info then return end if not has_alife_info(info) then give_info(info) -- log(string.format("info %s given", info)) end end А обработчик так и оставить получается? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 26 января Pavel2000 да, он примерно так и есть. Разумеется, при вводе в эксплуатацию возможны баги, лечить по мере поступления. 1 Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 25 Опубликовано 26 января BarmaGlot щас попробую) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 697 Опубликовано 26 января BarmaGlot ох как представлю заполнение в таблицу 160 артов) Может ленивым способом проще сделать local art_info = "enc_"..obj:section().."_info" if not has_alife_info(art_info) then give_info(art_info) end Ну и в on_item_take запихать в проверку if isArtefact(obj) 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты