В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
DеXter, Joni_009, ну не самый лучший вариант. Много кода, отчасти сложного для новичка, а, возможно, и нет. Лично я работаю с нет-пакетами с помощью модуля m_netpk от Artosa. Вот, возможно, аналогичный код коду в статье(лично у меня всё прекрасно работает):
Код
obj = alife():create("zone_mine_gravitational_strong", db.actor:position(), db.actor:level_vertex_id(),db.actor:game_vertex_id()) local pk = get_netpk(obj, 1) local data = pk:get() --задаём шейп data.shapes:addSphere(3) --ну и "силушку" аномалии data.max_power = 0.8 pk:set(data)
Вот ссылка на АМК-форум, на статью, там также ещё три модуля от него. Ну, в общем разберёшься!
И он(модуль) прекрасно работает и лёгок в понимании(есть мануал по использованию и установке). Также советую почаще заглядывать в эту тему. Там много всего полезного.
Добавлено (18.11.2017, 22:30) --------------------------------------------- IanLis, способов десятки, если не сотни. И каждый автор по своему её реализовывает. На Сталкерине была похожая статья.
Jargon, не настолько я туп, за одним моментом - меня только дэзматч интересует. Командные режимы мы совсем не играем. Только рубилово, только хардкор. Надо ли и в этом случае в конфигах командного дэзматча править?
В моде атмосфир3 после выброса музыка обратно включается только если выйти в меню и обратно. Никто не знает способа сделать нормально, как было в оригинале?
Вот есть код по воспроизведению и остановке звуков, может поможет кто исправить.
Код
function CSurgeManager:play_blowout_sound(id) local snd_obj=self.blowout_sounds[id] if snd_obj ~= nil and snd_obj:playing() then snd_obj:stop() end if snd_obj ~= nil then snd_obj:play(db.actor) snd_obj.volume = 1 --self.debugMessages[12]:SetText("playing: "..tostring(id)) end end
Также есть мысль, что можно было бы вставить начало музыки в одну из этих секций:
Код
-- rumble and quake sound stop ----------------------------------------------------------------------------------------------------------------------------------------- if (diff_sec>=214) and (self.stages['rumble']==true) and (self.blowout_sound) then xr_sound.stop_sound_looped(db.actor:id(), "blowout_rumble") xr_sound.stop_sound_looped(db.actor:id(), "surge_earthquake_sound_looped")
-- abr --
--self.debugMessages[2]:SetText("sounds stopped at: "..tostring(diff_sec)) self.stages['rumble']=false end -- end message ----------------------------------------------------------------------------------------------------------------------------------------- if (diff_sec>=212) and (self.stages['endmessage']==nil) then if (level) and (self.atmosfear.opt_blowout_warning=="radio" or self.atmosfear.opt_blowout_warning=="radio_siren") then if(level.name()=="zaton") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_after_surge") elseif(level.name()=="jupiter") then xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_after_surge") elseif not has_alife_info("pri_b305_fifth_cam_end") then xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_after_surge") end end --self.debugMessages[2]:SetText("end message at: "..tostring(diff_sec)) self.stages['endmessage']=true end -- after sound ----------------------------------------------------------------------------------------------------------------------------------------- if(diff_sec>=220) and (self.stages['endsnd']==nil) then xr_sound.set_sound_play(db.actor:id(), "blowout_hit_3") self.stages['endsnd']=true --self.debugMessages[2]:SetText("ending snd at: "..tostring(diff_sec)) end end end
Буду рад помощи! Мод уже на финальной стадии, а такой баг портит всё впечатление.
Возможно ли вывести в лог всю информацию о получаемом и наносимом уроне? Что-то вроде
Код
Актер получил физический урон в область bip01_head атакой stand_attack_0 от simulation_bloodsucker0001 на 85 ед. (15 ед. поглощено) Актер наносит 99 ед. урона (огнестрел) simulation_bloodsucker0001'у при помощи wpn_lr300 в область bip01_head
Это в идеале конечно.
Желательно чтобы работало при g_god on. Платформа ЗЧ.
Братаны, добавил я озвучка нпц, ну приветствия и прощания, когда стоит старая, стандарт из ЗП, все норм, прописал в логике новую, свою и он молчит. Я так понял нужна правильная регистрация звуков ? Куда писать. Написал я так:
Возможно ли вывести в лог всю информацию о получаемом и наносимом уроне? Что-то вроде Код Актер получил физический урон в область bip01_head атакой stand_attack_0 от simulation_bloodsucker0001 на 85 ед. (15 ед. поглощено) Актер наносит 99 ед. урона (огнестрел) simulation_bloodsucker0001'у при помощи wpn_lr300 в область bip01_head
Это в идеале конечно.
Желательно чтобы работало при g_god on. Платформа ЗЧ.
Файл: Actor.cpp void CActor::Hit(SHit* pHDS) .. if( (Level().CurrentViewEntity()==this) && !g_dedicated_server && (HDS.hit_type == ALife::eHitTypeFireWound) ) { CObject* pLastHitter = Level().Objects.net_Find(m_iLastHitterID); // и после этого кода вставляем: Msg("Hitted!", Level().Objects.net_Find(m_iLastHitterID)); //
..
if(GodMode()) { HDS.power = 0.0f; // и после этого кода вставляем: HDS.add_wound = true; // inherited::Hit (&HDS); return;
Сообщение отредактировал Jargon - Воскресенье, 19.11.2017, 08:23
Интересный вопрос. Как-то можно ограничить дальность видимости на локациях? Например, на локации Болото из ЧН. Один человек перенёс её на ТЧ для игры в мультиплеере, но на динамическом освещении происходит вылет. Скорее всего это связано с тем, что движок ЧН доработан и может тянуть больше полигонов в кадре чем движок ТЧ. Нужно как-то сделать так, чтобы динамическом освещении обзор был ниже, а на статическом остался такой же. Или хотя бы уменьшить вообще на всех, поскольку при запуске локации Болото в мультиплеере ТЧ происходит вылет (причина выше).
Вот, например, на локации Болото из lwo. Там уменьшена дальностью видимости.
Человеку придётся править движковые файлы, или же как-то можно похимичить в файлах карты?
Сообщение отредактировал Hardtmuth - Воскресенье, 19.11.2017, 13:17
Интересный вопрос. Как-то можно ограничить дальность видимости на локациях? Например, на локации Болото из ЧН. Один человек перенёс её на ТЧ для игры в мультиплеере, но на динамическом освещении происходит вылет. Скорее всего это связано с тем, что движок ЧН доработан и может тянуть больше полигонов в кадре чем движок ТЧ. Нужно как-то сделать так, чтобы динамическом освещении обзор был ниже, а на статическом остался такой же. Или хотя бы уменьшить вообще на всех, поскольку при запуске локации Болото в мультиплеере ТЧ происходит вылет (причина выше).
Вот, например, на локации Болото из lwo. Там уменьшена дальностью видимости.
Человеку придётся править движковые файлы, или же как-то можно похимичить в файлах карты?
В настройках игры, консоль: rs_vis_distance В настройках погоды: far_plane
В настройках игры, консоль: rs_vis_distance В настройках погоды: far_plane
Проблема в том, что когда карта стоит на сервере, игрок заходит на сервер и карта автоматически загружается с сервера в клиент игры игрока через загрузчик fz. Игроки же не знают, что нужно что-то ограничивать. Они просто заходят, скачивают и у кого динамическое освещение, скорее всего происходит вылет. В общем, я написал челику, жду лога вылета.
Проблема в том, что когда карта стоит на сервере, игрок заходит на сервер и карта автоматически загружается с сервера в клиент игры игрока через загрузчик fz. Игроки же не знают, что нужно что-то ограничивать. Они просто заходят, скачивают и у кого динамическое освещение, скорее всего происходит вылет. В общем, я написал челику, жду лога вылета.
Значит загружаем через fz как мод с правленым конфигом погоды.