Overf1rst 1 502 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Зов Припяти. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 19 9 1 1 2 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 23 января Возможно, не совсем в тему, так как на OpenXR (True Stalker) Спавню скриптово по alife():create разное барахлишко в комнату под замком на базе бандитов в Долине. Предполагается, что барахло (консервы там, аптечки или водка) будет стоять/лежать на "железных столах" или хотя бы на полу. Но оно всё проваливается сквозь и столы, и пол и копится в тюремном подвале. Есть ли способ как-то пофиксить это без использования SDK и аллспавна? Для спрвки: немного юзабельного (подбираемого) барахла там на столах уже имеется, вероятно из аллспавна/SDK. Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Overf1rst 1 502 Опубликовано 23 января @BarmaGlot alife():create(...):use_ai_locations(false) 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
denis2000 973 Опубликовано 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 502 Опубликовано 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 502 Опубликовано 24 января @BadTrip ты взял id профиля, а нужно взять секцию из spawn_sections. Например, можно взять sim_default_stalker_1. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Neptun 885 Опубликовано 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 973 Опубликовано 24 января (изменено) Toplol4ik <text font="letterica18" r="128" g="128" b="128">ТЕКСТ</text> font - в данном контексте шрифт, нужно выбрать его большего размера. Изменено 25 января пользователем denis2000 Путь во мгле. Связь времен."Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Toplol4ik 41 Опубликовано 24 января (изменено) denis2000 Мне нужно изменить размер текста. Как его делать я знаю. Изменено: Уже не надо, поставил graffiti50 и шрифт стал нужного размера Изменено 24 января пользователем Toplol4ik Просто создаю свой мод... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 31 Опубликовано 25 января (изменено) А есть где либо гайды по созданию вот такой энциклопедии (ссылка). Помню где то в модах встречал такое типо личных заметок. Хотелось бы сделать такое для артефактов. Типо нашёл арт инфа добавилась. Подскажите такое вообще возможно? и куда копать что бы реализовать? UPD: Нашёл готовый личный дневник ссылка если кому то нужно Изменено 25 января пользователем Pavel2000 «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Novik 21 Опубликовано 25 января Как можно отключить все тени в сталкер зп? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 25 января OpenXR + Gunslinger = TrueStalker (сорри за возможный оффтопик) Вопрос: как скриптово заспавнить фаршированный ствол? Например, актёр имеет проапгрейденный MP5 с лазером, мазером, магазином на 100500 патронов и так далее. Секция этого ствола всё равно остаётся без изменений, там нет никаких намёков на установленные улучшения. Я проштудировал конфиги и скрипты и так не понял, как этот ствол сохраняется/читается и не вижу возможности его спавна в состоянии улучшенном относительно "базы". Это делается на уровне движка? Есть какой-нибудь интерфейс со стороны Lua? Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 31 Опубликовано 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 31 Опубликовано 26 января BarmaGlot как вызвать скрипт я понял но дальше моя бошка не соображает куда прописывать ади объектов и как выдаётся нужный поршень, можно пожалуйста по подробнее разжевать что находится в отдельном скрипте «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BarmaGlot 244 Опубликовано 26 января Pavel2000 Чтоб было понятнее, напишите несколько секций своих артов и несколько инфопоршней, им соответствующих Я логи в баню удалил, а вот за за рейдеры – не помню! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pavel2000 31 Опубликовано 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 31 Опубликовано 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 31 Опубликовано 26 января BarmaGlot щас попробую) «Если долго мучиться, что-нибудь получится» Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 717 Опубликовано 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты