В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга.
Не флудить
Предварительно просматривайте раздел. Ответ на ваш вопрос может быть там.
В своем вопросе указывайте платформу моддинга - Тень Чернобыля, Чистое небо или Зов Припяти.
1. Какая стоит игра, с каким патчем? 2. Какой мод, версия мода? 3. Что правили своими ручками? 4. Конфиг компа. 5. Лог вылета и последние 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 - содержит секции конфигов уникального оружия и костюмов.
У кого есть желание, создать FAQ по основным вопросам моддинга - обращаемся в ЛС.
ColR_iT, На счёт гитар, ты забыл про локальную переменную st, где проверяется наличие предмета у НПС и выполнение этого параметра. Но я не могу проверить его выполнение.
Код
if npc:object("guitar_a") and st.play_guitar then
вот что имеется ввиду мною.
Сообщение отредактировал LaRento - Вторник, 17.09.2013, 22:22
Добавлено (17.09.2013, 23:33) --------------------------------------------- через СДК настроил параметры звуков, нажал ок, потом синхронизацию звука(по уроку на stalker inside). Должен в папке появится готовый ogg файл, а у меня появляется какой то 70кб .thm файл
ColR_iT, В двух >>постах<<, вы с BeeRsek, обсуждали работу on_info* и какой-то вылет. Как я понял, простая замена ф-ии в ТЧ на ЗП. корректирует работу on_info*. (Поправь если ошибаюсь.) Проводя эксперимент с заменой, при встречи с контролёром ловлю вылет:
! Unknown command: *INFO:ВНИМАНИЕ! Ошибка! Информация по ошибке в строках ниже ! * Log file has been saved successfully! ! Unknown command: *INFO:ERROR!: Can't find script switching information in storage, scheme '<NOT_arg!>' * Log file has been saved successfully!
FATAL ERROR
[error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ... publishing\s.t.a.l.k.e.r\gamedata\scripts\_g.script:86: ВНИМАНИЕ! Игра прервана! Информация в строках выше.
stack trace:
Заменил так:
function cfg_get_switch_conditions(ini, section, npc) local l = {} local t local n = 1 if not ini:section_exist(tostring(section)) then return end local line_count = ini:line_count(section)
local function add_conditions(func, cond) for line_number = 0, line_count - 1 do local result, id, value = ini:r_line(section,line_number,"","") if string.find( id, "^"..cond.."%d*$" ) ~= nil then c = func(ini, section, id, npc) n = add_condition(l, n, c) end end --[[ local c = func(ini, section, cond, npc) while c ~= nil do n = add_condition(l, n, c, npc)
Люди, назрел вопрос. Можно ли добавить главному герою еще один параметр, такой как психика. Постепенно запас здравого смысла уходит, (должен работать, как потребность в сне или пище). При этом, перестрелки или попадания в аномалии также дополнительно понижают этот запас, особенно Пси поля. Восстанавливается она при употреблении алкоголя, сигарет и во время сна. А последствия нездоровой психики выглядят, как ухудшение точности (как бы оружие со страху в руках трясется) шатание экрана, легкая сепия на экране (как при сильном переутомлении и долгого обхождения без сна). Ну и глюки, в виде фантомов, что мы видим в ТЧ, когда подходим к выжигателю, или тех, что создает Пси собака.
ЗЫ. Если глупость спросил, уж простите, не силен я в модификациях.
Сообщение отредактировал Fr0d0 - Среда, 18.09.2013, 10:56
ins33, ты не понял сути, что вполне логично, т.к. мы её не доносили до читающих. А суть вопроса стояла вот в чём:
Как многие знают, можно использовать в одной секции какой-либо схемы логики несколько условий, таких как: on_info, on_signal, on_actor_dist_le и т.д. (при условии, что сама схема их поддерживает) дописав в конце имени параметра цифру: on_info, on_info2, on_info3... - и это не является секретом. Но вот не многие знают, что в ТЧ эти цифры должны идти строго по порядку, а в ЗП - нет. Это было сделано по одной простой причине - наследование. Те кто знаком с этим понятием должны понять меня уже сейчас, те кто нет ... будет сложнее. В ТЧ наследование применяется исключительно в конфигах объектов, а вот в настройке логики - ни разу. В ЗП, разработчики нашли наследование весьма удобным (а оно действительно таковым является) и применяют его повсеместно. Давайте определим основное свойство наследования. Предположим, что в нескольких секциях логики, должны присутствовать одни и те же условия (для примера возьмём всего две секции и схему walker):
Если таких секций много (лично для меня много - 4 и более), то приходится заниматься копи-пастом, что я считаю не есть "гуд". Так вот наследование позволяет избежать много строчного копирования следующим образом:
Код
[common_walker] ; название секции может быть абсолютно любое on_info = {+infop1} %=func1% on_info2 = {-infop2} %=func2%
Таким образом, в секции walker@1 будет использоваться собственный параметр on_info, а on_info2 - останется неизменным и будет взят из секции common_walker. Это, так сказать, общий принцип. Но в ТЧ, без небольшой правки функции cfg_get_switch_conditions, возможно появление ситуации, когда наследуемая секция очень большая (скажем десять условий on_info), а в одной из наследуемых секций, нужно не просто изменить одну из имеющихся, а добавить свою - а это обязывает точно знать сколько, а главное какие, условий есть в общей секции, что затруднительно. Ко всему ситуация усугубляется и тем, что в ТЧ нумерация параметров должна идти подряд. В ЗП разработчики избавились от этого недостатка слегка изменив функцию cfg_get_switch_conditions, что позволяет не соблюдать порядок при нумерации параметров:
Это позволяет добавлять в наследуемые секции свои условия, небоясь, что одно или несколько условий будут перекрыты, и все условия будут успешно прочитаны и выполнены, чего в чистом ТЧ не произошло бы (т.к. обязателен порядок чисел по возрастанию). Действует это на все параметры переключения.
Вот собственно и вся суть моей с BeeRsek'ом дискуссии. Но повторюсь - у меня никогда не было по этому поводу проблем и тем более вылета.
ColR_iT, По описанию, это оказалось гораздо удобней чем предполагал. Посмотри плз, этот >>пост<<, в втором спойлере желтым выделено, что добавил в ТЧ-ый скрипт. Может ещё, что то надо добавить\убрать?
ins33, замени свою функцию cfg_get_switch_conditions на вот эту:
Код
function cfg_get_switch_conditions(ini, section, npc) local l = {} local t local n = 1 if not ini:section_exist(tostring(section)) then return end local line_count = ini:line_count(section)
local function add_conditions(func, cond) for line_number = 0, line_count - 1 do local result, id, value = ini:r_line(section,line_number,"","") if string.find( id, "^"..cond.."%d*$" ) ~= nil then c = func(ini, section, id, npc) n = add_condition(l, n, c) end end end
ColR_iT, Чего то не хватает, при убийстве моба происходит вылет:
! Unknown command: *INFO:ВНИМАНИЕ! Ошибка! Информация по ошибке в строках ниже ! * Log file has been saved successfully! ! Unknown command: *INFO:ERROR!: Can't find script switching information in storage, scheme '<NOT_arg!>' * Log file has been saved successfully!
FATAL ERROR
[error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ... publishing\s.t.a.l.k.e.r\gamedata\scripts\_g.script:86: ВНИМАНИЕ! Игра прервана! Информация в строках выше.
Всё хватает. Ещё раз повторю - у меня всё всегда работало и вылета данная правка не вызывала. И при чём здесь вообще наследование? Ищите косяк у себя в логике.
Сообщение отредактировал ColR_iT - Среда, 18.09.2013, 13:40