В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
ColR_iT, Чуть внимательней порывшись в скриптах ТЧ, нашёл забавный момент. npc_friendly корректно работает в схеме mob_home, но только при вызове из гулага:
function load_ltx_snork2(gname, type) local i, res = 0, "" for i = 1, 10 do res = res .. "[logic@" .. gname .."_".. i .. "]\n" .. "active = mob_home@" .. gname .. i .. "\n" ..
"[mob_home@" .. gname .. i .. "]\n" .. "path_home = home" .. i .. "\n" .. "npc_friendly = true\n".. "path_look = look" .. i .. "\n" end return res end
При этом, если вызывать npc_friendly в схеме mob_home из логики, то схема действительно не работает.
ins33, ты можешь сколько угодны "рыться" в скриптах, но это тебе ничего не даст. Если параметр не прописан в схеме - он не будет работать не в гулаге, не в custom_data, при этом в конечном итоге это одно и тоже, только способ назначения логики разный. Повторюсь - оверрайды для монстров работают только в двух схемах mob_kicker и mob_walker. MoDoStRoY, тогда ясно, почему ты сказал:
Цитата (MoDoStRoY)
Но эта функция выводит на худ, а нужно в GUI окно.
Почитай вот это: >>ClicK Me<<, это поможет тебе определить понятия слов касательно игры S.T.A.L.K.E.R.
ColR_iT, Подключить оверрайд оказалось не так просто:
---------------------------------------------------------------------------------------------------- -- Mob Home ---------------------------------------------------------------------------------------------------- -- Разработчик: Jim ----------------------------------------------------------------------------------------------------
local def_min_radius = 20 local def_max_radius = 40
class "mob_home"
---------------------------------------------------------------------------------------------------- -- CONSTRUCTION SCHEME ---------------------------------------------------------------------------------------------------- function mob_home:__init(obj, storage) self.object = obj self.st = storage end
---------------------------------------------------------------------------------------------------- -- RESET SCHEME ---------------------------------------------------------------------------------------------------- function mob_home:reset_scheme() --[[ Добавлено: Haron Описание: Теперь можно задавать радиусы home_min_radius и home_max_radius во флагах пути path_home. Для этого введены флаги minr, maxr. Они должны быть прописаны в первой точке пути. У радиусов заданых в секции приоритет больший чем для тех что заданы во флагах, т.е. если задано и там и там, то берутся значения из секции (сделано для обратной совместимости). --]] local minr, maxr = def_min_radius, def_max_radius local ptr = patrol(self.st.home) local path_info = utils.parse_waypoint_data(self.st.home, ptr:flags(0), ptr:name(0)) local r = 0
if self.st.home_min_radius then minr = self.st.home_min_radius else r = path_info.minr if r then r = tonumber® if r then minr = r end end end
if self.st.home_max_radius then maxr = self.st.home_max_radius else r = path_info.maxr if r then r = tonumber® if r then maxr = r end end end
-- check min and max radius if minr > maxr then _G.abort("Mob_Home : Home Min Radius MUST be < Max Radius. Got: min radius = %d, max radius = %d.", minr, maxr) end
self.object:set_home(self.st.home, minr, maxr, self.st.aggressive) end
if mob_alife_mgr.alife_control(self.object, actor, self.storage.alife_mode) then -- Добавил return end
if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then return end end
function mob_home:deactivate() self.object:remove_home() end
---------------------------------------------------------------------------------------------------- -- ADD_TO_BINDER ---------------------------------------------------------------------------------------------------- function add_to_binder(npc, ini, scheme, section, storage) printf("DEBUG: add_to_binder: npc:name()='%s', scheme='%s', section='%s'", npc:name(), scheme, section)
local new_action = mob_home(npc, storage)
-- Зарегистрировать все actions, в которых должен быть вызван метод reset_scheme при изменении настроек схемы: xr_logic.subscribe_action_for_events(npc, storage, new_action) end
---------------------------------------------------------------------------------------------------- -- SET_SCHEME ---------------------------------------------------------------------------------------------------- function set_scheme(npc, ini, scheme, section, gulag_name) local storage = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
function stalker_kp_host:__init(owner) super() self.owner = owner self:InitControls() self:InitCallBacks() end
function stalker_kp_host:__finalize() end
function stalker_kp_host:InitControls() --self:SetWndRect(50,50,550,450) self:SetWndRect(Frect():set(0,0,1024,768))
local xml = CScriptXmlInit() xml:ParseFile("ui_pda_test.xml")
xml:InitStatic("kp_host_background", self) --self:Register(xml:Init3tButton("kp_btn_info", self),"btn_info") self:Register(xml:Init3tButton("pda_btn_back", self),"btn_back") end
function stalker_kp_host:InitCallBacks() --self:AddCallback("btn_info", ui_events.BUTTON_CLICKED, self.info, self) self:AddCallback("btn_back", ui_events.BUTTON_CLICKED, self.on_quit, self) end
function stalker_kp_host:info() local info = ES_main_window(get_hud()) self:GetHolder():start_stop_menu(self, true) level.start_stop_menu(ES_main_window, true) end
function stalker_kp_host:on_quit() self:GetHolder():start_stop_menu(self, true) end
Кнопка "Информация" будет выводить в поле текст с информацией о текущей версии OC и прошивки.
Добавлено (31.07.2013, 18:46) --------------------------------------------- И кстати говоря, в твоей функции выводиться только 1 рандомное значение переменной text, а нужно составить текст из нескольких рандомных частей.
Это то,что я прописал в script_sound.ltx: [sold_keys_start_seq] stalker = 0,scenario\agroprom\sold_keys_start
Всё! С фрапсом никак не подружусь.Но губами зольд шевелит. И звук есть,как видишь.Ну а настраивать более серьёзно логику - это более серьёзно. Может тебе звук пока одиночный(не рандомный сделать),как в этом случае? ФРАПС
. Почему? ColR_iT написал же,что в mob_walker оверайды работают. Из любопытства проверил, вроде действительно работают,по крайней мере: braindead = true.Единственное путь не стал прописывать(одна точка). А так...
Всем привет, делаем с командой мод, и хотим сделать инвентарь типа как в моде Requital /Lost World Troops of Doom, так же и в чн и в зп сделано, интересует только то что показано на скрине, объясните пожалуйста как так сделать или скиньте их файл и объясните пожалуйста=)
Сообщение отредактировал aligator_M - Среда, 31.07.2013, 22:34