В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга
• Не флудить • Предварительно просматривайте раздел, ведь ответ на ваш вопрос может быть там • В своем вопросе указывайте платформу моддинга — Тень Чернобыля, Чистое небо или Зов Припяти
1. Какая стоит игра, с каким патчем? 2. Какой мод, версия мода? 3. Что правили своими ручками? 4. Лог вылета и последние 25 строк (помещать под спойлер).
Структура папок и файлов в корневом каталоге игры:
...\S.T.A.L.K.E.R\gamedata\anims – папка содержит исполнительные файлы эффектов (например от ПНВ).
...\S.T.A.L.K.E.R\gamedata\config – папка содержит основные конфигурационные файлы (т. е. большинство настроек игры)
...\S.T.A.L.K.E.R\gamedata\meshes – содержит модели игровых предметов и персонажей...
...\S.T.A.L.K.E.R\gamedata\scripts – папка со скриптами (рабочими файлами содержащими в себе наборы функций) – основная папка, отвечающая за ответные действия игры и действия производимых игроком в игре.
...\S.T.A.L.K.E.R\gamedata\shaders – папка содержит в себе конфигурационные файлы шейдеров.
...\S.T.A.L.K.E.R\gamedata\sounds – здесь находятся все звуки игры (разложены по своим каталогам и папкам)
...\S.T.A.L.K.E.R\gamedata\spawns – содержит файл спавна – очень важный файл – не трогать без нужды!!!
...\S.T.A.L.K.E.R\gamedata\textures – содержит разложенные по каталогам и папкам текстуры используемые в игре.
Теперь разберем папки в каталоге «config»
...\S.T.A.L.K.E.R\gamedata\config\creatures - содержит массу конфигурационных файлов, в основном отвечающих за взаимодействие Главного героя игры (в дальнейшем ГГ) и прочего окружения в игре и ТТХ самого ГГ.
...\S.T.A.L.K.E.R\gamedata\config\gameplay – содержит конфиг. файлы персонажей игры (НПС) отвечающие за внешний вид, статус, снаряжение. Файлы: character_desc_ххх (где ххх – название локации) и character_desc_general (отвечает за зомбированного персонажа). Также содержит файлы диалогов и профилей НПС.
…\S.T.A.L.K.E.R\gamedata\config\misc – конфиг.файлы торговцев (папки с именами торговцев), артефактов, брони, квестовых предметов, уникальных предметов, файл отвечающий за награды за автозадания, файл эффектов (алкоголизма, ранения, ПНВ и прочих)...
…\S.T.A.L.K.E.R\gamedata\config\mp – среди прочих содержит важный файл mp_ranks – отвечающий за выпадение оружия и патронов из рук ГГ и НПС – без прописывания добавляемого в игру оружия в этот файл при выпадении нового оружия из рук ГГ\НПС будут следовать вылеты.
…\S.T.A.L.K.E.R\gamedata\config\text\rus – содержит файлы описаний всего и вся находящегося в игре (брони, артефактов, оружия, предметов и прочего).
…\S.T.A.L.K.E.R\gamedata\config\weapons – содержит конфиг.файлы оружия и боеприпасов используемых в игре.
…\S.T.A.L.K.E.R\gamedata\config\weathers – содержит конфиг.файлы настройки погоды на локациях.
Теперь немного подробнее о файлах.
...\S.T.A.L.K.E.R\gamedata\config\misc:
Папка shop_ххх (ххх – имя торговца) – содержит конфиг.файлы ассортимента торговца.
outfits – содержит секции конфигов костюмов.
artefacts - содержит секции конфигов артефактов.
items - содержит секции конфигов предметов.
monster_items - содержит секции конфигов частей монстров
postprocess - содержит секции конфигов пост. процессов (например: ПНВ).
quest_items - содержит секции конфигов квестовых предметов.
task_manager - содержит секции наград за автоквесты.
unique_items - содержит секции конфигов уникального оружия и костюмов.
Как условие внутри диалога все прекрасно работает, но как условие появления-нет.
Понятным языком бы это ещё изложить... Что не так-то? Условие не срабатывает, если ты проверяешь возможность запуска самого диалога или отдельной фразы? Разницы так-то нету. Везде проверка должна возвращать одно и то же логическое значение (true/false). Ищи косяк у себя где-то. Всё должно работать.
Код
<precondition>script.check</precondition>
Код
function check() return db.actor:object("wpn_knife") ~= nil end
Куда бы ты не подставил (в начало диалога или к отдельной фразе), результат должен быть один: появление/отсутствие диалога, появление/отсутствие фразы.
BoBaH_671, вот укороченный вариант диалога и функции. Что я делаю не так? Не работает на отсутствие. И еще, как сделать 2 и более взаимоисключающих диалогов? <dialog id="sentry_1"> <precondition>etils.have_not_etil_pistol</precondition> <dont_has_info>talk_sentry</dont_has_info> <phrase_list> <phrase id="0"> <text>sentry_0</text> <next>1</next> </phrase> <phrase id="1"> <text>sentry_0</text> <next>11</next> <next>111</next> </phrase> <phrase id="111"> <text>sentry_111</text> <action>etils.give_4000</action> <give_info>talk_sentry</give_info> </phrase> <phrase id="11"> <text>sentry_11</text> <precondition>etils.have_not_etil_outfit</precondition> <give_info>talk_sentry</give_info> </phrase> </phrase_list> </dialog>
function have_not_etil_pistol(first_speaker, second_speaker) return not db.actor:object("wpn_colt1911") ~= nil end
function have_not_etil_outfit(first_speaker, second_speaker) return not db.actor:object("killer_outfit") ~= nil end
Сообщение отредактировал Etil - Пятница, 22.09.2017, 23:35
Etil, У вас на ровном месте какие-то проблемы. Проверяем, если ли у ГГ предмет novice_outfit:
function actor_has_novice_outfit ( first_speaker, second_speaker ) if db.actor:object( "novice_outfit" ) ~= nill then return true end return false end
Проверяем, что у ГГ нет novice_outfit:
function actor_has_not_novice_outfit ( first_speaker, second_speaker ) if db.actor:object( "novice_outfit" ) == nill then return true end return false end
А разве движек такое допускает? У физика по моему кости и шейпы должны быть в обязательном порядке.
Мне использовать physic_destroyable_object? И вообще можно пожалуйста по подробней в чем отличия между physic_destroyable_object и physic_object? Знаю что physic_object не имеет коллбеков на хит и на уничтожение.
И еще такой вопросец. Почему объекты с drop_box не имеют секции логик? По идее ж должна быть судя по этому коду
if self.st.active_section ~= nil or (self.object:spawn_ini() ~= nil and self.object:spawn_ini():section_exist("drop_box") == true) then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta) self.object:set_callback(callback.hit, generic_physics_binder.hit_callback, self) self.object:set_callback(callback.death, generic_physics_binder.death_callback, self) self.object:set_callback(callback.use_object, generic_physics_binder.use_callback, self) end
и тд.
Хотелось бы все уяснить вижу тут одно, а на самом деле другое. Аномальная игра какая-та.
На кой она им? В logic может задаваться активная схема, проверка на хит объекта и его разрушение. Возможно, что-то ещё забыл.
ЦитатаMaximless ()
По идее ж должна быть судя по этому коду
Я что-то не вижу. Проверка существования секции drop_box, установка коллбэков. Про обязательность наличия logic что здесь? Некоторые секции можно использовать без задания секции logic. Типа collide, story_object, drop_box и т. д.
ЦитатаMaximless ()
пожалуйста по подробней в чем отличия между physic_destroyable_object и physic_object? Знаю что physic_object не имеет коллбеков на хит и на уничтожение.
Насчёт хита не смотрел, а вот на разрушение точно, да. Такие объекты неразрушаемы вовсе.
Потому что минует функцию initialize_obj, соответсвенно return ini_file([[scripts\dummy.ltx]]) в которой как раз и есть секция логики. Да в этом легко убедиться просто добавив дебаг лог в нужное место.
Как раз у drop_box она и не задана, а вот у рестрикторов всех без искл она будет задана и плевать xr_logic хотел на этот код к примеру
-- Не регистрироваться на апдейты, если у объекта в customdata -- нет секции logic вообще. local char_ini = xr_logic.get_customdata_or_ini_file(self.object, "<customdata>") if char_ini:section_exist("logic") then updatable_binders[self.object:id()] = self end
Всё равно в нет спауне вызовется initialize_obj и за ним и логика с актив = нил xD
У меня поэтому и вопрос почему нету секции логик в объекте с секцией drop_box? Причем xr_logic то ругается в issue_event, мол отсутствует эта секция!
У меня поэтому и вопрос почему нету секции логик в объекте с секцией drop_box?
Любому объекту можно прописать логику.У меня в моде все аномалии могут иметь логику и по ней работают. Вопрос только в том нужно вам это или нет. Мне нужно, так как я использую аномалии - мины, которые можно разминировать. Это дело и отслеживает логика аномалий. Если у вас на локации лежит коробка, то какую логику вы ей пропишите? Зачем она нужна? Поэтому разрабы и не стали подключать логику к вашей коробке, а подключили колбеки, чтобы в случае нанесения хита по коробке и её разрушении, на месте коробки проспавнить предметы перечисленные в секции drop_box.
Я не о секторах. Обычно локацию по периметру окружают сплошным НОМ обьектом, обычно его совмещают с забором окружающим локацию, но там где нет забора НОМ должен присутствовать. В игре это выглядит как ты упираешься в невидемую стенку за которую не пройти. Так вот АИ сетка, при генерации точно так же упирается в этот НОМ обьект и не "утекает" за его пределы. Если же этого НОМ обьекта нет, или в нем есть дыры, то при генерации сетки, она будет генерироватся, "утекать" и за пределы локации, пока хватит памяти, а далее вылет.
Сообщение отредактировал WolfHeart - Суббота, 23.09.2017, 09:49
BoBaH_671, Посмотри как в Новой Соли были поправлены кабаны на стадионе в Припяти. Такой же баг был со времён оригинала, они там на месте топтались. Людмила поправила, щас кабанчики бегают. Точно не помню где там оно правилось, если найду, скину на АМК в личку тебе.
WolfHeart, Во-первых, это не НОМ, а коллижен плоскость, не дающая ГГ зайти туда, куда ему не надо. Если грубо. Во-вторых, сетка, как ты сказал, "вытекает" всегда за пределы этих плоскостей. На заметку: она ограничивается вручную, для нее нет препятствий.
СЕРА, по поводу вылета: скорее всего твоя АИ-сетка слишком большого размера, ограничения, если не ошибаюсь 1300х1300. Как это проверить - не знаю. Если размер твой локации превышает эти значения, то удаляй ноды сетки вручную.
Добавлено (23.09.2017, 13:12) --------------------------------------------- BoBaH_671, По поводу mob_home не знаю, но out_restrictor, если в СДК ставил, работает некорректно, либо для него нужна дополнительная настройка. Самый лучший вариант: задавать out из логики смарта.
Добавлено (23.09.2017, 13:15) --------------------------------------------- BoBaH_671, Почему я сказал про дополнительную настройку, потому что когда задаешь out_restrictor в СДК, то не зависимо мобы или НПС будут стремиться к стенкам рестриктора.