В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
Итак. Итак, приступим. Для примера нам понадобятся следующие файлы: 1. character_desc_escape.xml 2. dialogs_escape.xml 3. info_l01escape.xml 4. storyline_info_escape.xml 5. tasks_escape.xml 6. new_life.script 7. amk.script 8. sak.script 9. stable_dialogs_escape.xml
1. Работа с character_desc_escape.xml: В уроке "работа с профилем" вы узнали, как о устроен. Для квеста нам понадобятся диалоги, в которых выдастся или завершится наш квест. Добавим два диалога, в первом диалоге - выдача квеста, во втором - завершение. Откроем профиль любого персонажа, который выдаст нам квест, запишем там диалог: <actor_dialog>escape_nps1_dialog</actor_dialog> Откроем профиль любого персонажа, который завершит наш квест, запишем там диалог: <actor_dialog>escape_nps2_dialog</actor_dialog>
2. Работа с "dialogs_escape.xml": Самая длинная работа. Если вы читали урок "создание диалогов", вам будет проще. Но тут будут изменения, давайте разберёмся. Итак, создадим структуру диалогов. Для этого добавим в файл "dialogs_escape.xml" следующее:
4. Работа с "storyline_info_escape.xml": Когда мы напишем строки в файле "tasks_escape.xml", вы поймёте, для чего всё это нужно. Добавим в файл "storyline_info_escape.xml" следущее:
<article id="text_escape_nps" name="Поговорить с ..." article_type="task"> <text>text_escape_nps</text> </article>
С этим файлом всё.
5. Работа с "tasks_escape.xml": Одна из самых главных работ в создании квеста. Здесь пишутся все данные о квесте. Откроем данный файл и добавим в него следующие строки:
<game_task id="escape_nps"> <title>Поговорить с ...</title> <objective> <text>Поговорить с ...</text> <icon>ui_iconsTotal_gar_help_dymon</icon> <infoportion_complete>escape_nps_done</infoportion_complete> <article>text_escape_nps</article> </objective> <objective> <text>Поговорить с ...</text> <map_location_type hint="...">blue_location</map_location_type> <object_story_id>...</object_story_id> <infoportion_complete>escape_nps_done</infoportion_complete> </objective> </game_task>
С этим файлом всё.
6. Работа с "new_life.script": Создадим файл "new_life.script". Сюда мы запишем все функции, используемые в квесте. Например, получение награды:
function complete_escape_nps(first_speaker, second_speaker) dialogs.relocate_money(second_speaker, 1000, "in") end
Главный герой получит 1000, если выполнится данная функция. С этим файлом всё.
7,8. Работа с "amk.script", "sak.script": Эти файлы нужны, чтоы заработали функции в файле "new_life.script". В принципе, данный квест, возможно, будет работать и без них, но чтобы не накосячить вдальнейшем... Создадим их и напишем в "amk.script":
function spawn_item(spawn_item, pos, gv,lv) if gv==nil then gv=db.actor:game_vertex_id() end if lv==nil then lv=db.actor:level_vertex_id() end return alife():create(spawn_item, pos, lv, gv) end
function remove_item_from_inventory(remove_item,npc) if npc==nil then npc=db.actor end if remove_item~=nil then -- npc:mark_item_dropped(remove_item) alife():release(alife():object(remove_item:id()), true) return true end return false end
Создадим их и напишем в "sak.script":
local items_count=0 local itemin=nil
function have_item_namber(itm,need_namber) local actor=db.actor items_count=0 itemin=itm actor:iterate_inventory(cheking_item,actor) if items_count>=need_namber then return true else return false end end function cheking_item(actor,item) local items=item:section() if items==itemin then items_count=items_count+1 end end function create_items(npc,section,number) for i=1,number do alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end end local reloc_params={} local stalk function out_item_namber(itm_section,need_number) reloc_params.itm_section=itm_section reloc_params.itm_cnt=need_number reloc_params.itm_cnt_found =0 db.actor:iterate_inventory(checkout_items_count,db.actor) reloc_params.itm_cnt_found=0 if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then db.actor:iterate_inventory(out_items_count,db.actor) end news_manager.relocate_item(db.actor, "out", itm_section) reloc_params={} end function relocate_item_namber(stalker,itm_section,need_number) stalk=stalker reloc_params.itm_section=itm_section reloc_params.itm_cnt=need_number reloc_params.itm_cnt_found=0 db.actor:iterate_inventory(checkout_items_count,db.actor) reloc_params.itm_cnt_found=0 if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then db.actor:iterate_inventory(reloc_items_count,db.actor) end news_manager.relocate_item(db.actor, "out", itm_section) reloc_params={} end function checkout_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section then reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end function reloc_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then db.actor:transfer_item(item, stalk) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end function out_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then amk.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end
С этими файлами всё.
9. Работа с "stable_dialogs_escape.xml": Это самая последняя ступень. Откроем этот файл, добавим в него следущее:
При создании мода возникли 3 неразрешимых вопроса: 1. Как заспавнить предмет через скрипт? 2. Как удалить персонажа из старого сюжета (например Шустрого с АТП убрать) 3. Как удалить голос Сидоровича после вступительного ролика? (Чтобы сразу можно было диалог начать)
trinax, Во-первых, объёмные посты под спойлер прячь. Во-вторых, к чему это здесь вообще? Это темя для вопросов по моддингу, а не выкладыванию своих (ли?) уроков.
l_GunslingeR_l, 1. >>Тынц<< 3. Есть мод под названием "No Sidr". Там и монолога нет, и дверь открыта сразу.
Сообщение отредактировал Wo1fRam - Пятница, 06.09.2013, 15:34
Играю я в sgm mod 2.2 и хочу убрать качение прицела....как это сделать......P.S. конфиги прицелов я знаю где, а вот что изменять нет...в инэте пишут...но не понятно
Играю я в sgm mod 2.2 и хочу убрать качение прицела....как это сделать......P.S. конфиги прицелов я знаю где, а вот что изменять нет...в инэте пишут...но не понятно
Получить кондицию первого объекта local condition = obj_1:condition() Установить эту кондицию второму объекту obj_2:set_condition(condition) Где obj_1 - первый костюм, а obj_2 - второй костюм
Что то не выходит. Как спавнился со 100% так и спавнится