В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
function repair_outfit() -- нет ли рядом врагов и монстров local apos = db.actor:position() for obj_id,_ in pairs (db.storage)do local obj = level.object_by_id(obj_id) if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive() and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)<30 then send_tip("Нельзя чинить костюм, когда враги слишком близко.") alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) return end end
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6) if item_s6 ~= nil and item_s6:condition() >=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%) item_s6:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) send_tip("Заебок, фуфайка лучше чем была.") elseif item_s6 == nil then --когда костюма нет send_tip("Бля, одеть одежку забыл.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%) send_tip("Пизда одешке пришла.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6:condition() ==1 then --когда костюм в отличном состояние send_tip("И так заебок, потаскать можно.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end Такая фигня: Не ремонтируется 6 слот. При использовании ремнабора ( когда костюм можно чинить (состояние больше или равно 30%)) нет никакого результата, повреждение остается как и до ипользования ремнабора. Звук и текст появляются. Пробовал по разному с разными скриптами эфект тот же. При именении на 1 или 2 слот все прекрасно работает. Да и с 6 : (когда костюм нельзя чинить (состояние меньше 30%) (когда костюм в отличном состояние) и (когда костюма нет) работает.
Exswat, есть такая программа ACDC, она разбирает файл all.spawn, так вот разбираешь его, появиться файл alife_zaton.ltx, открываешь его, и вставляешь туда секцию смарта Вот мой пример.
[90] номер секции ; cse_abstract properties section_name = smart_terrain name = zap_a1_smart имя смарта position = -306.095886230469,12.582181930542,158.570022583008 координаты direction = 0.00495400000363588,-0.000547999981790781,0.110187001526356
function repair_outfit() -- нет ли рядом врагов и монстров local apos = db.actor:position() for obj_id,_ in pairs (db.storage)do local obj = level.object_by_id(obj_id) if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive() and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)<30 then send_tip("Нельзя чинить костюм, когда враги слишком близко.") alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) return end end
local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local item_s6 = db.actor:item_in_slot(2) --объявляем переменную (item_s6) if item_s6 == nil then --когда костюма нет send_tip("Бля, одеть одежку забыл.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6:condition() ==1 then --когда костюм в отличном состояние send_tip("И так заебок, потаскать можно.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6 ~= nil and item_s6:condition() < 1 and item_s6:condition() >= 0.3 then --когда костюм можно чинить (состояние больше или равно 30%) item_s6:set_condition(1) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) send_tip("Заебок, фуфайка лучше чем была.") elseif item_s6:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%) send_tip("Пизда одешке пришла.") alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end