Купер 3 242 Опубликовано 19 Ноября 2024 2 часа назад, Balavnik сказал: То, что монстры враги всегда, даже при выставлении 1 в game_relations - движковая прихоть? Нет, не прихоть. Невнимательность пользователя. Взаимоотношения задаются в game_relations.ltx двумя значениями в табл: [monster_relations] actor = [-2, -1, 0, 1] - отношение актора а мутанту mutant = [-2, -1, 0, 1] - отношение мутанта к актору 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 20 Ноября 2024 @Balavnik , билогический вид существа (с), если верить ПЫСам. [monster_relations] - представляет собой матрицу взаимных отношений существ, значения для которой задаются как раз исходя из параметра species того или иного объекта в конфигах (гг/npc, виды мутантов): тут, тут, тут. actor.ltx -> species = actor m_stalker.ltx -> species = human m_bloodsucker.ltx -> species = bloodsucker 1 1 3 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 29 Ноября 2024 @Stalkersof gamedata\sounds\device\pda\pda_news.ogg Скрытый текст treasure_manager.script function CTreasure:give_treasure(k) ... news_manager.send_treasure(v.name) -- вызывается отсюда ... end news_manager.script -- местоположение и наименование звукового файла pda_news = xr_sound.get_safe_sound_object([[device\pda\pda_news]]) -- получаем искомый звук для проигрывания function send_treasure(name) pda_news:play(db.actor, 0, sound_object.s2d) -- играем его. ... end 2 5 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 8 Декабря 2024 @Капрал Хикс , как вариант (не лучший, разумеется, ибо костыль, но...) попробовать присмотреться к скриптовой реализации подобного, a-la старый OLR, например. Что-то наподобие такого. XRE это позволяет. Поищи по форуму: play_hud_animation Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 19 Декабря 2024 @Balavnik Проверить соответствие параметров в fsgame.ltx у источника и получателя. Здесь / здесь. Поинтересоваться техническим "здоровьем" получателя. Как вариант "по-быстрому": адекватным компаратором проверить идентичность файлов источник/получатель после копирования. Чудес не бывает. Это, конечно, если нам всё договаривают. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 5 Января @Anikot , нет. Просто заменой параметров в конфигах/скриптах не получится. Совокупность параметров, выводимых на HUD по умолчанию, "зашито" в движке. Скрытый текст Можно попробовать выводить нужную информацию через скриптовые GUI интерфейсы. "Подсмотрелок" достаточно много - начиная от "полоски" уровня радиации в АМК и до... - всё, что касается худа + готовые реализации, конечно. 3 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 7 Января Да что его показывать. Здесь лежит. @DarkSnowder , там что-то со скриптовыми диалогами: то ли с 4-го патча не до конца перенесено, то ли... Для начала (на первый погляд!) так пробуй. Та самая строка, которая вылетает: --* phr0 = dlg:AddPhrase(intro_phrase, "0", "-1", -10000) phr0 = dlg:AddPhrase(intro_phrase, "0", "", -10000) Это, в принципе, можно заменить: table.getn(exchanging_items_intro_phrase) -> #exchanging_items_intro_phrase И смотреть всё остальное. И опять стринговка в скриптах. Тяжёлое наследие старого режима. 2 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 27 Января (изменено) 26.01.2025 в 03:50, миха123 сказал: Как отключить dynamic campfire mod? Для оригинальной версии dynamic campfire mod 1.32: bind_stalker.script + xr_kamp.script + поиск по файлам игры "Dynamic campfire mod". Все "вставки" кода, которые добавляет мод, откомментированы. Сравнить с оригиналом и посмотреть, что где добавляется и откуда вызывается. 26.01.2025 в 03:50, миха123 сказал: Или где посмотреть, как определить где какой костёр Вариант 1: SDK Скрытый текст Вариант 2: поставить что-то из отладчиков - Инструмент, Mobile Manager или подобное, и уже там определяться с искомым. Вариант 3: вручную скриптом перебрать игровые объекты циклом с отсечкой по секции, например, с выводом, отметок на карту (а подсмотреть тезисно реализацию можно прямо в моде - там именно так и сделано). @Balavnik здесь и далее обсуждалось. Изменено 28 Января пользователем Купер мусор удалён. 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 27 Января Скрытый текст Схема сталкера, сидящего в определенном радиусе вокруг указанной точки (у костра), и располагающегося лицом к этой точке. [kamp] center_point = kamp_center – имя точки вокруг которой NPC будет устраиваться. *radius = 2 (насколько далеко сталкер будет сидеть от центра лагеря, 2- по умолчанию) *def_state_moving = run (дефолтное состояние, в котором сталкер будет идти к точке кампа) Файл: \gamedata\scripts\xr_kamp.script NB! Если точка кампа находится в костре, то в оффлайне сталкера придут на нее, а когда они перейдут в онлайн, то окажутся внутри костра, где и получат хит. Чтобы этого не случалось в секции кемпа указывать path_walk из одной точке, название которой = <path_kamp_name>_task *path_walk = <path_kamp_name>_task Если точка кемпа расположена в чистом поле то, path_walk прописывать не надо. и далее по ссылке выше нюансы. 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 28 Января Там у ПЫС алгоритм выборки точек "куда садиться" не совсем корректный: потенциально возможны ситуации, когда скрипт принудительно NPC в центр костра загоняет. 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 28 Января @Balavnik , что-то наподобие такого (из Солянки, с добавлением функционала) или попроще (на примере Final Update). 2 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 29 Января @миха123 , так как отключить - см. выше. Разговор про это, судя по всему? bind_stalker.script, xr_kamp.script, поиск по файлам: "‐- >> Dynamic campfire mod " - начало кода, добавляемого модулем. "‐- << Dynamic campfire mod " - его конец. Соответственно, строки между удаляем/комментируем. 18 часов назад, миха123 сказал: Заменил xr_kamp, из мода Омега взял Сомнительная затея на самом деле с копипастой, чревата непредсказуемыми последствиями, потенциальными багами и/или вылетами. 28.01.2025 в 17:06, bsanek628 сказал: не реализовано, просто писанина в описании? Точно так. Вообще, да. Вроде бы работает. Должно, по крайней мере. Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 30 Января @миха123 , ключ -2947ru в данном случае лишний. + обновить для пущей уверенности сам converter, например, на этот вариант (от камрада @abramcumner). 1 1 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 1 Февраля Всё в комплексе. C преферансом, институтками и настроенными .bat-никами: YandexDisk (относительно xr_compress - внимательно RTFM). Converter при необходимости можно обновить. Отдельно xr_compress с фиксами для ТЧ - здесь. Где-то по сети гуляет более свежая версия. Но это уже к автору ( @macron). 3 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 17 Марта xr_kamp.script. -> function CKampManager:__init(path) -> значения табл. self.trans_kamp. Вроде бы? здесь. Т.е., устанавливаем с вероятностью соответствующее состояние в кампе и потом начинаем нужное. 1 2 Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 17 Марта @Фокусник Скрытый текст -- Таблица глобальных состояний лагеря. -- * допустимые исходные состояния в кампе. self.kamp_states = { idle = true, pre_harmonica = false, harmonica = false, post_harmonica = false, pre_guitar = false, guitar = false, post_guitar = false, story = false, post_story = false, pre_joke = true, joke = true, post_joke = true} -- Таблица допустимых переходов между состояниями с вероятностями. -- * начинаем с некоторой вероятностью менять своё состояние (суммарно 100%) self.trans_kamp = { idle = { idle = 0, pre_harmonica = 30, pre_guitar = 30, story = 0, pre_joke = 40 }, --* из idle можем начинать такую активность с заданной вероятностью pre_harmonica = { harmonica = 100 }, --* потянулись за гармошкой harmonica = { post_harmonica = 100 }, --* играем на гармошке post_harmonica = { idle = 70, harmonica = 30 }, --* закончили играть на гармошке pre_guitar = { guitar = 100 }, --* аналогично для гитары guitar = { post_guitar = 100 }, post_guitar = { idle = 70, guitar = 30 }, story = { post_story = 100 }, --* начали рассказывать истории post_story = { idle = 100 }, --* законичили рассказывать истории pre_joke = { joke = 100 }, --* решили пошутить joke = { post_joke = 100 }, --* шутим post_joke = { idle = 100 }} --* закончили шутить @Norman Eisenherz , а там не в шейдерах дело? Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 28 Марта Внезапный вопрос поставил в тупик. А как отследить проигрывание партикла в текущий момент, применительно, например, к этому? Поделиться этим сообщением Ссылка на сообщение
Купер 3 242 Опубликовано 7 Апреля OGSR. @ASSASIN64 , ориентируйся на примеры использования вызовов для добавленных в движок коллбэков на работу с клавишами: self.object:set_callback(callback.on_key_press, self.on_key, self) -- нажатие клавиши self.object:set_callback(callback.on_key_release, self.on_key_free, self) -- отпускание клавиши self.object:set_callback(callback.on_key_hold, self.on_key_hold, self) -- удержание клавиши И вот туда свой таймер. 1 Поделиться этим сообщением Ссылка на сообщение