В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
Во-вторых: может так и можно, но лучше фразу с айди 0 ставить в самом начале диалога. В-третьих: функцию is_has_serbet_rustam лучше записать так:
Код
function is_has_serbet_rustam(first_speaker, second_speaker) return db.actor:object("energy_drink") ~= nil end
В-четвертых: в диалоге лучше писать английскую текстовку, а потом её уже в папке text на нужном языке писать. Ну и банальный вопрос: все условия для диалога соблюдены?
Сообщение отредактировал _S_k_i_F_ - Вторник, 24.05.2016, 21:55
В Тёмной Долине наложил аи сетку, лишнее удалил, все неровности исправил. Плюс удалил все нулевые и единичные ноды. Потом buil. xrLC собиралась лока часов 16, ai_compiler работал часов 12, и на 4 шаге ругнулся на кучу не состыкованных нодов. Вроде все исправил, на 4 шаге опять тот же вылет.
function has_all_need_bio_items(actor) local actor = db.actor local bio_items = {"item_boar_leg", "item_flesh_eye", "item_dog_tail", "item_krovosos_jaw", "item_psevdodog_tail", "item_snork_leg", "item_burer_hand", "item_controller_hand", "item_tushkan", "item_himera_lapa", "item_psevdogig_lapa", "item_snork_bolotniy_leg", "item_flesh_bolotnay_eye", "item_cat_tail", "item_psydog_tail", "item_zombie_hand", "item_fracture_hand", "item_tushkano_black", "item_snork_podzemka_leg", "item_krovosos_podzemka_jaw", "item_izlom_eye", "item_bildovskiy_controller_mozg", "af_sleza_controllera", "af_polter_hearth"} for k, v in pairs (bio_items) do if actor:object(v)~=nil then return true end return false end end
и поместил его в xr_conditions Но происходит такой вылет
Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ... - Зов Припяти\gamedata\scripts\xr_conditions.script:1821: attempt to index local 'actor' (a nil value)
ins33, Верификация аи-сетки проводилась? _S_k_i_F_, Если не передаешь функции has_all_need_bio_items(actor) параметр actor то не удивляйся, что он равен nil. А соответственно db.actor=nil и откуда у тебя уверенность, что db.actor во все моменты времени имеет адекватное значение отличное от nil?
Сообщение отредактировал denis2000 - Пятница, 27.05.2016, 19:32
Если вопрос про первые з проверки в ai_compiler, то да всё прошло удачно.
Мне не известно как именно работает эта программа, знаю что на базе xrAI.exe у которого имеется ключь -verify, проверка АИ-сетки на валидность в том числе как раз и на изолированные участки сетки (в этот список входят нулевые ноды) и на ноды имеющие только одну точку соединения с остальной сеткой (единичные ноды), кроме этого проводятся другие проверки. Кроме того поскольку вылет связан с game_graph_builder.cpp в точке 585, процесс затыкается на этапе оптимизации геймграфа. Вот функция где это происходит:
graph_type::const_iterator I = vertex0.edges().begin(); graph_type::const_iterator E = vertex0.edges().end(); for ( ; I != E; ++I) { if ((*I).vertex_id() == tripple.second.second) continue;
_S_k_i_F_, судя по названию функции TRUE должно возвращаться, когда все предметы таблицы есть в инвентаре ГГ. Но у тебя TRUE возвращается в одном случае, если у ГГ есть item_boar_leg Тогда зачем вся эта таблица? Так и должно быть?
Сообщение отредактировал makdm - Пятница, 27.05.2016, 21:50
function has_all_need_bio_items(actor, npc) if actor == nil then return false end local bio_items = {"item_boar_leg", "item_flesh_eye", "item_dog_tail", "item_krovosos_jaw", "item_psevdodog_tail", "item_snork_leg", "item_burer_hand", "item_controller_hand", "item_tushkan", "item_himera_lapa", "item_psevdogig_lapa", "item_snork_bolotniy_leg", "item_flesh_bolotnay_eye", "item_cat_tail", "item_psydog_tail", "item_zombie_hand", "item_fracture_hand", "item_tushkano_black", "item_snork_podzemka_leg", "item_krovosos_podzemka_jaw", "item_izlom_eye", "item_bildovskiy_controller_mozg", "af_sleza_controllera", "af_polter_hearth"} for k, v in pairs (bio_items) do if actor:object(v) == nil then return false end end return true end
Сообщение отредактировал denis2000 - Пятница, 27.05.2016, 22:02
makdm, нет, не должно. Только что проверил - только кабанья нога. Вот ф-ция
Код
function has_all_need_bio_items(actor, npc) local bio_items = {"item_boar_leg", "item_flesh_eye", "item_dog_tail", "item_krovosos_jaw", "item_psevdodog_tail", "item_snork_leg", "item_burer_hand", "item_controller_hand", "item_tushkan", "item_himera_lapa", "item_psevdogig_lapa", "item_snork_bolotniy_leg", "item_flesh_bolotnay_eye", "item_cat_tail", "item_psydog_tail", "item_zombie_hand", "item_fracture_hand", "item_tushkano_black", "item_snork_podzemka_leg", "item_krovosos_podzemka_jaw", "item_izlom_eye", "item_bildovskiy_controller_mozg", "af_sleza_controllera", "af_polter_hearth"} if db.actor~=nil then for k, v in pairs (bio_items) do return db.actor:object(v)~=nil end end end
Есть вариант проверить наличие всех предметов из списка сразу? Или надо перечислять return db.actor:object("item_boar_leg")~=nil and db.actor:object("item_flesh_eye")~=nil and и т.д. ? Зараннее спасибо!