Перейти к содержанию

BarmaGlot

Сталкеры
  • Публикаций

    623
  • Зарегистрирован

  • Посещение

Весь контент BarmaGlot

  1. Никак. Моды разрабатываются разными людьми. Они не заботятся, в основном, о какой-либо "совместимости". Как вариант: нанять команду разработчиков/тестеров, и при определённых вложениях/усилиях, возможно, из овчинки этой и получится выделка. Автор данной сборки и пытается, в общем, решить эту нерешаемую в принципе проблему.
  2. Mass Вы правы по всем пунктам. Действительно, не хватает ассертации наличия оружия в руках, так как функция weapon_locked никак это не подтверждает. Далее, действительно, можно было там автору воспользоваться надстройкой state_mgr.set_state(npc, "threat_fire") или типа того. Но сам state_mgr через несколько уровней ассертаций/эвалуторов/акций, внезапно, пользуется ровно той же базисной командой npc:set_item(objectt.fire1, ...) Видимо, так автору показалось удобнее/быстрее/проще. P.S. Я не автор. P.P.S. У меня свой скриптовый движок с 100% своим state_mgr и прочими прокси к анимациям (100% свой движок/язык) и другим бихейворальным свойствам. Оттого чуть-чуть шарю в теме.
  3. Soldi J и/или K, по умолчанию. Эти кнопки настраиваются в меню MCM на линейке модов типа "Expirience чего-то там"
  4. npc:set_item(object.fire1, weapon_object, params, ...) включает физическую стрельбу, то есть заставляет пули вылетать из оружия, в определённом количестве, с определённым интервалом. npc:set_object(object.idle, weapon or nil) отменяет стрельбу (переводит оружие в режим unstrapped) или прячет его, если не указано сам объект оружия. К анимациям непися эти команды отношения не имеют и могут применяться в любой анимации или без анимации вообще. Что касается первой части вопроса, то, вероятно, true от вызова not post_combat.weapon_locked(npc) гарантирует (в теории) как раз наличие какого-либо активного/бэст оружия в руках, не стреляющего в данный момент.
  5. Ровно также, подавлением схемы/эвалуатора xr_meet, как я писал несколько страниц назад тебе. Ты делал? Получилось? В данном случае можно и попроще: у секции walker@npc_name прописать свойство meet = no_meet
  6. Есть анимации NPC, например, сталкер играет на гитаре. А есть анимации актёра, где он, например, вскрывает банку тушёнки и ест. Вопрос: это одни и те же по природе/свойствам/методам анимки, или это разные вещи? То есть, можно ли неписю как-то приделать вот эти расширенные актёрские анимации? (в рамках существующих движков)
  7. Я планирую ставить себе этот мод/сборку лишь ближе к лету. Сейчас играюсь со сборкой Босса. Не в смысле – играю, а именно потрошу, переписываю, сопрягаю с собственным скриптовым движком. Так что увы, здесь я пас. Но на самом деле сложного ничего нет. Надо просто иметь уже распакованную геймдату, причём также с распакованными db-архивами всех модов. В этих распакованных файлах и искать. Сначала id строки в фпйлах соответствия текста его айдишникам, затем уже искать эти айдишники.😅
  8. Вбить в поиск (Alt+F7 в поле "Find text") точное название квеста или уникальное слово из его названия или из одной из его стадий. Внимательно изучить LTX/XML (и возможно *.script), где будут вхождения этого ключа. В принципе, если квест простенький, то уже в LTX-описании задачи все инфопоршни будут как на ладони.
  9. SoDizzari Создать свой файл скрипта типа sodizzari.script (в папке с прочими скриптами), там создать функцию: function npc_go_after_dialog(first_speaker, second_speaker) local npc = dialogs.who_is_npc(first_speaker, second_speaker) local npc_id = npc and npc:alive() and npc:id() if npc_id and db.storage[npc_id] and db.storage[npc_id].meet then db.storage[npc_id].meet.meet_set = false end end Далее, в XML-файле дилога, который разыгрывается с неписем, выдать в конце акцию: <action>sodizzari.npc_go_after_dialog</action>
  10. Народ! Все, у кого подвисают сюжетные квесты из-за багов или фичей. Это всё-таки "Аномалия", а раз так, то есть у неё одна приятная особенность – дебаг-режим, где помимо миллиона разных опций можно также найти команду "run_string". Далее остаётся самое малое: прошестить, например TotalCommander'ом, конфиги и скрипты на предмет требуемого инфопоршня, и вуаля! run_string give_info(info) run_string disable_info(info) Решает 80% проблем. Альтернативно можно спавнить квестовые айтемы в инвентарь (и не только! Так что применять именно в режиме ОБТ – иначе можно быстро войти во вкус "режима бога").
  11. Возможно, что поможет вот это: db.storage[npc_id].meet.meet_set = false По крайней мере, эвалуатор xr_meet должен отключить соответствующий экшн.
  12. сергей1996 У вас в пути установленной игры есть папка appdata\logs, так вот там должен быть файл типа xray_*.log. Если сам этот файл короткий, до нескольких сот килобайт, то его можно сюда целиком скинуть как аттач к сообщению. Иначе берёте из него последдние строк 20-30 и сюда их на всеобщее оборзение. А также надо указать примерно что за система, железо, и откуда качалась сборка.аддоны (если есть) Дополнено 2 минуты спустя Raid Пока писал, вы меня опередили 🥵 Никогда не понимал вот это пожелание прятать причину под спойлер: имхо так сложнее искать как людям, так и поисковым системам именно суть. Под спойлер можно картинки разве что. Впрочем, рад буду услышать от админов/модёров разъяснение по этому поводу.
  13. ricky А зачем, если не секрет? Запилить прикольный видосик на ютуб или забомбить квест? Имхо, без моддинга параметров подствольников и грен для них не обойтись. Ну, а так всё просто: встать в исходную точку, yaw ака рыскание на целевой азимут, pitch ака тангаж с опором на какую-нибудь приметную ветку на дереве. И в путь, дрочить до упора с небольшими итерациями, пока не приземлится в точке. Проще скриптом запилить прилёт.
  14. AziatkaVictor Я не очень "на ты" с "жёсткими" LTX-условиями, и в то же время Lua-скриптовая реализация существенно гибче и богаче в плане возможностей. Хороший, разнообразный и богатый на события, нестандартный квест не по типу "сбегай-принеси" однозначно должен свой функционал реализовать через функторы-скрипты.
  15. SoDizzari У вас инфопоршень активирует отсутствующую секцию walker@belochka а вместо неё прописана секция walker@2
  16. У квестов ака task_objects есть свойство stage. Его можно обновлять в функторе задачи. После чего функторы заголовка и цели могут сориентироваться и высветить новые данные.
  17. Boomer В bind_stalker.actor_binder:ipdate() используется такой метод, например, когда актёра вежливо бьют в лицо. Это полностью блокирует любой ввод. -- Обновление отключения ввода с клавиатуры. if self.st.disable_input_time ~= nil and game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle then level.enable_input() self.st.disable_input_time = nil end Вероятно, вас также может заинтересовать метод level.disable_input(), который можно вызвать в момент старта тюториала. Если этот "level.disable_input()" пошерстить в скриптах, то там найдутся и несколько обёрнутых функций, в т.ч. отключения UI на заданное время.
  18. ZaKoN232 На вскидку, я бы поменял в файле configs\misc\achievements.ltx где только возможно все указания типа functor = xr_statistic.блаблабла на functor = xr_conditions.блаблабла (предварительно убедившись, что такая функция там объявлена) Начать можно именно с той строки, которая на текущий момент и приводит к вылету: вместо functor = xr_statistic.wealthy_functor пишем functor = xr_conditions.wealthy_functor Это может прямо влиять и даже уже быть неким утерянным чьим-то патчем. Если не проканает, то увы – без полного кода всего мода копать мне смысла нет, а с полным кодом – нет времени на разбор пролётов, ибо своих выше крыши. Ежели, напротив, финт получится, то заменить все прочие аналоги как написано ранее. P.S. гарантированно вылет можно вылечить иначе, если пропарсить xr_statistic.script на предмет обращений к db.actor и везде-везде перед этими обращениями вставлять заглушки типа: if not db.actor then return some_value end разумеется, смотря по контексту, что должна возвращать эта функция и соответсвенно меняя some_value на nil или инициализаторы типа пустых строк, нулей, пустых таблиц и так далее. Но это будет, конечно, костыль в чистом виде. Однако пациент гарантированно встанет с инвалидного кресла.
  19. ZaKoN232 Киньте в меня ваш xr_statistics.script, что-то я в своём от оригинального CoP вообще такой строки не вижу. А также киньте сейв на файлообменник: если игра не сильно модирована и у меня загрузится – гляну возможный корень зла. На вскидку, и мы об этом ранее говорили с вами: db.actor не инициализирован в моменты обращения к его свойствам...
  20. ZaKoN232 Сорри, мой косяк: недоассертировал до конца, понадеялся на авось. И даже не проверял на запущенной игре))) Перекачайте и перезапишите файл, прикрепляю... Добавил недостающий ассерт. А denis2000 правильно говорит: проблема останется, просто вылет должен исчезнуть. denis2000 Как можно в оригинальном CoP логировать? Насколько знаю, printf и подобные функции вырезаны. И сразу сам себе отвечаю, поскольку делал уже))) ну и память, мешок барахла, старость не радость, а кумпол отбитый-пропитый. function printb(fmt,...) -- formatted logging local file=io.open("gamedata//log_file.log","a") file:write(string.format(fmt,...),"\n") file:close() end xr_logic.script
  21. Ку! Нет нужды логировать, так как здесь ошибка очевидна. Точнее, не столько ошибка, сколько отсутствие внятных объёмов тестирования на этапе производственного ада, что привело к этому (и ещё тысяче подобных мест в модах-последователях), где, казалось бы, "всё должно работать", а по факту "оно вылетает". Прикрепляю патч (фикс) с ассертом существования или дефолтом в случае фейла. Вылетать таперича не будет, но за другие эффекты типа "что-то пошло не так" не ручаюсь. Кроме того, там в логе у вас путь к игре содержит абракадабру. Это не есть гуд в любом случае. Надо стараться помещать в короткие папки исключительно с английскими именами, типа c:\games\CoP xr_logic.script
  22. Сталкер спрашивает бабку Вангу: — Слышь, бабка Ванга, ты на воду дуешь, а молоко на хлеб мажешь, пособишь мне в моей думке?. — А што за камень да на сердце у тебя лежит, красный молодец? Аль ведро у тебя трёхболтовое?" — спрашивает бабка. — Так это, пенёк рязанский; памяти отмерено немерено; видимо-невидимо 100500Ti; моник что витрина в косую сажень; мышка-норушка да клава-подружка. — Так што грустишь, словно в гугле забанили супостаты-ироды? — Неее, бабка Ванга, я женицца хочу. На Хип, с HD-модел-пака от Босса. Но вот беда, не живая она! Токмо если алайф 10 поставить, то оживает, глазищами хлопает. Но это издалека, а как стоит подойти, то превращается в жабу или бревно, по разному! — А хозяйство-то у тебя справное? — А то! И гейпад, и джойстик: 3 вершка и ноготок! — Ну, коли так, то молоток! Кашу просто заварить: в полночь пойди в дебаг запретный, замути выброс психический, да смотри не проспи! Как пойдёт та девица в свой подвальчик, ты уж за ней катись колобочком, держи джойстик стручочком, ну а там анимпойнт ейный вам в помощь! Сделал всё Сталкер, как Бабка велела. На следующий день снова к ней, но вместо фонарика светит фингалом: "Бабка, костяная голова, к лесу передом, а ко мне боком! Не прописан у неё анимпойнт, не прописан! xr_abuse только..."
  23. Позвал царь Сидор к себе Стрелка, и молвит: – Иди туда, не знамо куда, скачай то, не знамо что, поставь прилад таких, не знамо каких, сыграй так, не знамо как. Вот тогда и выдам я тебе ответ, получишь дочку в жёны али нет отчего твой вылет. Или нет.