В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
if type == "in" then for i=1,n do if victim:object(section) ~= nil then victim:transfer_item(victim:object(section), db.actor) else alife():create(section, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end ..........
makdm, СПС! Может подскажешь, как в инвентарный бокс спавнить айтемы. Написал для логики рестриктора так:
--------------------------------------------------------------------- -- =give_items_nps(item:number) где намбер это сид ящика или нпс. ---------------------------------------------------------------------
function give_items_nps(actor, npc, p) local item = p and p[1] local to_obj = level_object_by_sid(p[2]) alife():create(item, to_obj:position(), to_obj:level_vertex_id(), to_obj:game_vertex_id(), to_obj:id()) SendMessage("Выдаем предмет "..item) end
СМС приходит всегда, а спавн предмета через раз. Пробовал спавнить через диалог, тажа ф-ня.
function toz() local to_obj = level_object_by_sid(9719) -- сид ящика, он метрах в пяти стоит. alife():create("hunters_toz37",to_obj:position(),to_obj:level_vertex_id(),to_obj:game_vertex_id(),to_obj:id()) news_manager.send_tip(db.actor, "%c[255,0,255,0]ИНС_ТАСК!\\n%c[default]Заспавнил тоз!", 0, "trader", 3000) end
Сообщение отредактировал ins33 - Среда, 12.02.2014, 13:56
ins33, а ЗПшная функция (не знаю, есть ли в ТЧ) spawn_object_in не подходит?
Код
%=spawn_object_in(предмет:инвентори_бокс)%
Из xr_effects.script:
Код
function spawn_object_in(actor, obj, p) --' p[1] - секция кого спаунить --' p[2] - стори айди обьекта в который спавнить local spawn_sect = p[1] if spawn_sect == nil then abort("Wrong spawn section for 'spawn_object' function %s. For object %s", tostring(spawn_sect), obj:name()) end if p[2] == nil then abort("Wrong target_name for 'spawn_object_in' function %s. For object %s", tostring(target_name), obj:name()) end -- local box = alife():object(target_name) -- if(box==nil) then
printf("trying to find object %s", tostring(p[2]))
local target_obj_id = get_story_object_id(p[2]) if target_obj_id ~= nil then box = alife():object(target_obj_id) if box == nil then abort("There is no such object %s", p[2]) end alife():create(spawn_sect,vector(),0,0,target_obj_id) else abort("object is nil %s", tostring(p[2])) end end
Сообщение отредактировал FantomICW - Среда, 12.02.2014, 14:16
ins33, по идее должно бы спавнить всегда, при условии, что ящик в радиусе алайфа. Попробуй это вызывать из диалога или того же рестриктора:
Код
function toz() local invBox = level_object_by_sid(9719) if not invBox then news_manager.send_tip(db.actor, "НЕКУДА СПАВНИТЬ. Либо нет такого ящика, либо он оффлайн!", 0, "trader", 3000) return end local toz = alife():create("hunters_toz37", vector():set(), 0, 0, invBox:id()) if toz then news_manager.send_tip(db.actor, "СПАВН НЕ ПРОИЗОШЕЛ!", 0, "trader", 3000) return end invBoxPos = invBox:position() news_manager.send_tip(db.actor, "ВСЁ ОК! Предмет заспавнен в ящик по этим координатам: "..invBoxPos.x..", "..invBoxPos.y..", "..invBoxPos.z.."", 0, "trader", 3000) end
FantomICW, ЗП не пойдёт, т.к. в тч нет get_story_object_id! ColR_iT, При не большой правке, сбоя пока не было, чистый вариант молчит.
function toz() local invBox = level_object_by_sid(9719) if not invBox then news_manager.send_tip(db.actor, "НЕКУДА СПАВНИТЬ. Либо нет такого ящика, либо он оффлайн!", 0, "trader", 3000) return end local toz = alife():create("hunters_toz37",invBox:position(),invBox:level_vertex_id(),invBox:game_vertex_id(),invBox:id()) --alife():create("hunters_toz37", vector():set(), 0, 0, invBox:id()) if toz then -- news_manager.send_tip(db.actor, "СПАВН НЕ ПРОИЗОШЕЛ!", 0, "trader", 3000) invBoxPos = invBox:position() news_manager.send_tip(db.actor, "ВСЁ ОК! Предмет заспавнен в ящик по этим координатам: "..invBoxPos.x..", "..invBoxPos.y..", "..invBoxPos.z.."", 0, "trader", 3000) return end -- invBoxPos = invBox:position() -- news_manager.send_tip(db.actor, "ВСЁ ОК! Предмет заспавнен в ящик по этим координатам: "..invBoxPos.x..", "..invBoxPos.y..", "..invBoxPos.z.."", 0, "trader", 3000) end