В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
В этом случае нет необходимости придумывать новые таймеры их уже достаточно придумано в разнообразных модах: AMK, SGM, etc.
так а как сделать ?
как наложить ваш код
Код
if (s_time ~= nil and game.get_game_time():diffSec(s_time) > 2.6*level.get_time_factor()) or (s_time == nil) then s_time = game.get_game_time() ****основной код**** end
на мой
Код
function actor_on_weapon_jammed() if (math.random(1,100) > 50 and db.actor:character_community() == "actor_stalker") then sound_object("cutscenes\\stalker_"..math.random(1,7)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_bandit" then sound_object("cutscenes\\bandit_"..math.random(1,7)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_dolg" then sound_object("cutscenes\\dolg_"..math.random(1,6)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_freedom" then sound_object("cutscenes\\freedom_"..math.random(1,5)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_csky" then sound_object("cutscenes\\csky_"..math.random(1,4)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_ecolog" then sound_object("cutscenes\\ecolog_"..math.random(1,5)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_killer" then sound_object("cutscenes\\killer_"..math.random(1,4)):play(db.actor,0,sound_object.s2d) elseif db.actor:character_community() == "actor_army" then sound_object("cutscenes\\army_"..math.random(1,4)):play(db.actor,0,sound_object.s2d) end end
function on_game_start() RegisterScriptCallback("actor_on_weapon_jammed", actor_on_weapon_jammed) end
Подскажите пожалуйста, в OGF Viewer'е при загрузке модели в строке состояния пишет вот это
И на этом прога зависает, и так со многими. Модель битая?
Полагаю полигонаж запредельный, либо ошибки в геометрии которые прога не умеет переваривать Советую не пользоваться кустарными прогами, а поставить сдк и установить какой-либо 3д редактор начиная с milkshape заканчивая Autodesk Maya и Max'ом...
Вставить вместо строки "****основной код****" свой.
у меня вылетает при запуске когда так делаю
Цитатаdenis2000 ()
Вытащить скрипты таймеров из них и вставить в свой мод. Ну или найти уже адаптированные таймеры.
нашёл, не знаю как адаптировать
Код
local timer = time_global() local use_cooking = false local item = nil local pre_timer = nil
function on_game_start() RegisterScriptCallback("actor_on_item_use",item_use) end
function item_use(obj) if (obj:section() == "matches") then obj:set_remaining_uses(obj:get_remaining_uses()+1) campfire_on(obj) end end
-- Chance function rainy_is() local rain = level.rain_factor() if (rain ~= nil) and (rain > 0 and rain < 0.5) then local chance = math.random(1,2) return chance elseif (rain > 0.5) then local chance = math.random(1,3) -- Chance of turning on 1\3 return chance else local chance = 1 return chance end end
function a_timer() pre_timer = nil end
function s_timer() pre_timer = 1 local iTimer = time_global() + 30000 -- timer for save-scam blocking
local function chk_timer() return time_global() > iTimer end
level.add_call(chk_timer, a_timer) end
function campfire_on(matches) for i=1,65534 do local s = alife():object(i) if s then local o = level.object_by_id(s.id) if o then local cf = o:get_campfire() if cf and o:position():distance_to(db.actor:position()) < 1.5 then
local flist = getFS():file_list_open_ex("$game_saves$", bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*".. ui_load_dialog.saved_game_extension) local f_cnt = flist and flist:Size() or 0
local inc = 0 if (f_cnt > 0) then flist:Sort(FS.FS_sort_by_modif_down)
for it=0, f_cnt-1 do local file_name = flist:GetAt(it):NameFull():sub(0,-6):lower()
-- grab last modified quicksave increment count local d = tonumber( string.match(file_name,"campfire_autosave(%d+)") ) if (d) then inc = d break end end end
inc = inc >= axr_main.config:r_value("mm_options","quicksave_cnt",2,5) and 1 or inc + 1 if (pre_timer == nil) then get_console():execute("save campfire_autosave"..inc) s_timer() end
if not (cf:is_on()) then if (rainy_is() == 1) then level.add_pp_effector("surge_fade.ppe", 11, false) local snd_obj = sound_object("interface\\inv_matches") snd_obj:play(db.actor,0,sound_object.s2d) xr_sound.set_sound_play(db.actor:id(),"inv_matches") matches:set_remaining_uses(matches:get_remaining_uses()-1) cf:turn_on() level.change_game_time(0,0,5) break else matches:set_remaining_uses(matches:get_remaining_uses()-1) local text = game.translate_string("st_fail") SetHudMsg(text,3) end end end end end end end
в параметрах каждого предмета который игрок может взять в инвентарь есть 4 параметра отвечающие за иконку: inv_grid_width = 3 ;количество клеток по горизонтали которые будет занимать предмет в инвентаре inv_grid_height = 1 ;количество клеток по вертикали которые будет занимать предмет в инвентаре ;далее идут параметры вычисления нулевого пикселя иконки из файла текстуры. inv_grid_x = 6 ;координата по горизонтали в gamedata\textures\ui\ui_icon_equipment.dds inv_grid_y = 1 ;координата по вертикали в gamedata\textures\ui\ui_icon_equipment.dds для упрощения работы с иконками есть отличная программа S.T.A.L.K.E.R. Icon Editor, так же можно вычислить эту координату в любом графическом редакторе выставив сетку на пиксели так как вычисление идет по пикселям.
Раз никто не знает в чём дело, сам себе и отвечу. Попробовал в трёх разных модах и игровых папках, и только в одном нашёл пробиваемый фейк. Разобрал gamemtl.xr и посмотрел в чём дело. Выяснил, что бы кусты и фейк пробивало, значение надо выставить в 0 Колючка без изменений, при любых значениях глухая на прострел. По ходу это оригинальный баг игры.
а что зависит от родителей? И как их можно редактировать?
Это такие же секции как и сама секция ствола, только они являются дефолтными и из них ствол заимствует некоторые параметры, это сделано для того чтобы не писать лишний текст каждый раз.
ЦитатаTankodrom ()
Конфигуратор разве не вместе с руками модель двигает? И как пользоваться "Движковой фичей"?
Не помню что он там двигает, но в конфигах в разделе худа ствола есть координаты положения рук и ствола, в сдк это можно легко подогнать, либо же если есть DEBUG версия движка, или же если вы кодер и компилите исходники то просто снять в нескольких местах дефайны debug'а и воспользоваться hud_adj_mode выровняв положения в реальном времени игры и записать их в конфиги после.
Раз никто не знает в чём дело, сам себе и отвечу. Попробовал в трёх разных модах и игровых папках, и только в одном нашёл пробиваемый фейк. Разобрал gamemtl.xr и посмотрел в чём дело. Выяснил, что бы кусты и фейк пробивало, значение надо выставить в 0 wacko Колючка без изменений, при любых значениях глухая на прострел. По ходу это оригинальный баг игры.
Это не баг, так и задумано, 0 - полностью простреливаемый объект, 1 полностью не простреливаемый объект. Как альфа канал только здесь не 255 а 1.
Сообщение отредактировал Jargon - Воскресенье, 10.12.2017, 15:48
Jargon, не, я овсем не кодер XD Так, конфиги правлю, модели нет-нет вставляю) Окай, эту модель пока до лучших времен отложу. А про родительские параметры спросил потому что не отпускает меня идея с понижением дисперсии в экзе. Хотелось бы её сделать минимизируя движковые правки. М.б. в скриптах как-нить?