В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
В файл bind_stalker.script в метод function actor_binder:use_inventory_item(obj) пишем
xr_s.use_inventory_item( obj:section() ) -- здесь мы вызываем колбэк
В call of chernobyl такого нет, есть только вот это:
Код
Line 6: npc:bind_object(actor_binder(npc)) Line 10: class "actor_binder" (object_binder) Line 12: function actor_binder:__init (obj) super(obj) Line 13: db.actor_binder = self Line 27: function actor_binder:net_spawn(data) Line 73: function actor_binder:net_destroy() Line 149: function actor_binder:reinit() Line 208: function actor_binder:update(delta) Line 285: function actor_binder:save(packet)
denis2000, Это я знаю, но разве на схему для физ. объекта нельзя цеплять калбэк, вот, например, в той же схеме ph_idle, hit_callback работает нормально, а в моей схеме для физ. объекта ничего не работает. Сначала подумал, что может быть этот калбэк должен вызываться откуда нибудь из другого места, к примеру из xr_logic. Там посмотрел - есть строки отвечающие за hit_callback, но это совсем для других схем, на подобии ph_hit и ph_on_hit. А для ph_idle нет, и что же это тогда получается?..
И вот ещё настройка объекта в сдк:
Добавлено (04.11.2017, 14:56) --------------------------------------------- yobakun, с СоС не разбирался, но в своём первом посте ты писал вот это:
Цитатаyobakun ()
function on_game_start() RegisterScriptCallback("actor_on_item_use",item_use) end
Сообщение отредактировал buffy - Суббота, 04.11.2017, 14:41
buffy, я так понял, он предлагает создать новый коллбэк специально для конкретных предметов чтобы не писать каждый раз проверку на секцию. Даже если дописать внутрь actor_on_item_use как тогда остальные предметы проверяться будут?
function reg_use_inv_item_callback( name, sect, func, userobj ) intercepts[name][sect][func]={userobj=userobj} end
function unreg_use_inv_item_callback( name, sect, func ) intercepts[name][sect][func]=nil end
function use_inventory_item( section ) if intercepts.use_inventory_item[section] == nil then return end for func,o in pairs( intercepts.use_inventory_item[section] ) do func( section, o.userobj ) end end
А вот это куда и зачем?
Код
function init() init_module_if_exists("use_item_callbacks") end
Судя по
Код
local flist = f:file_list_open_ex("$game_scripts$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*.script")
скрипты и так автоматом грузятся Дальше в campfire_manager
Код
function on_game_start() axr_main.reg_use_inv_item_callback( "use_inventory_item", "c_matches", c_matches, nil ) end
И
Код
function c_matches( section ) section:set_remaining_uses(section:get_remaining_uses()+1) -- log("rain: "..rainy_is()) get_hud():HideActorMenu() get_hud():HidePdaMenu() if not campfire_distance() then return elseif rainy_is() ~= 1 then SetHudMsg(game.translate_string("Погода хреновая, костёр не разжигается"),3) xr_sound.set_sound_play(db.actor:id(),"campfire_fail_rain") section:set_remaining_uses(section:get_remaining_uses()-1) -- local snd_obj = sound_object("interface\\inv_cf_fail_rain") -- snd_obj:play(db.actor,0,sound_object.s2d) return end local roll = math.random(1,2) if roll == 1 then campfire_on() section:set_remaining_uses(section:get_remaining_uses()-1) bind_campfire.use_campfire() else section:set_remaining_uses(section:get_remaining_uses()-1) SetHudMsg(game.translate_string("Спички отсырели"),3) xr_sound.set_sound_play(db.actor:id(),"campfire_fail") end end
В итоге при использовании спичек ничего не происходит.
Сообщение отредактировал yobakun - Суббота, 04.11.2017, 15:53
Всем доброго дня. Подскажите, где можно посмотреть требования к картам? Конкретно интересует инфа по кол-ву треугольников, разрешению текстур и какие карты поддерживает движок. Спасибо.
но разве на схему для физ. объекта нельзя цеплять калбэк, вот, например, в той же схеме ph_idle, hit_callback работает нормально, а в моей схеме для физ. объекта ничего не работает
Коллбек на хит для физ объектов обрабатывается (не поверите) bind_physic_object.hit_callback, если у тебя объект не на этом биндере, то и в логике ничего работать не будет.
buffy, Итак тип объекта выяснили, класс объекта известен. Теперь вопрос как регистрировали колбек и главное зачем если он итак уже автоматом регистрируется в bind_physic_object.script и даже целые схемы его обработки у физических объектов есть (ph_hit, ph_on_hit).
Сообщение отредактировал denis2000 - Суббота, 04.11.2017, 19:42
Приветствую. Стоит задача скомпилить локи с наличием инвалид фейсов. Думаю многие знают про специальные компиляторы, которые обходят данную проблему и позволяют скомпилить локацию. Там вылазило окошко с текстом "бла-бла-бла, локация содержит 100500 инвалидфейсов" и достаточно было нажать "Продолжить" и компиляция запускалась. Сейчас решил использовать эти же компиляторы, но теперь где должно появиться окошко с текстом и кнопкой "Продолжить" вылетает ошибка
Причем этот nodefault reached повторился более 50 раз и наконец вылезло окно о завершении программы. Такая фигня, как я заметил, появляется на винде 8-10. На хрюше и семерке было всё нормально. Что можно сделать с этой проблемой? Может какие то фиксы,компиляторы есть новые? Вариант с переустановкой винды не предлагать.
Сообщение отредактировал BeeRsek - Суббота, 04.11.2017, 19:54
WolfHeart, у x64 версии компиляторов - ставиться ключ "-skipinvalid", а x32 - без ключа, там специальный батник, который подменяет компилятор на компил с обходом (запускаем, жмякаем 1 или 2, зависит от того что нужно)
Добавлено (04.11.2017, 20:18) --------------------------------------------- BeeRsek, что-то такого компила не припомню.