В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
Допиливая скрипт воздействия артов из рюкзака столкнулся с проблемой: если в рюкзаке есть арты с суммой вывода радиации 52% и один с радиоактивным действием +5% по идеи должно в сумме быть -47%. А по факту, наносится хит +5%.
Код
function test() local ar = {"af_cristall_flower",*} for ar=1,13,1 do local obj = db.actor:object(ar) if obj and string.find(obj:name(),"af_") then local osect = obj:section() local radiation = ltx:r_string(osect, "radiation_restore_speed") local actrad = db.actor.radiation + radiation if radiation then db.actor.radiation = actrad end end end end
Если выкинуть арт из рюкзака,то начинает выводится радиация, но на порядок меньше чем 52%. Подскажите, как это исправить.
Вывел инфу в консоль 3 арта:
1 артефакт: ! Cannot find saved game ~[ex_test] Здоровье: 0.0003 ! Cannot find saved game ~[ex_test] Кровотечение: 0.0028 ! Cannot find saved game ~[ex_test] Радиация: -0.0052 ! Cannot find saved game ~[ex_test] Выносливость: 0.01
второй арт: ! Cannot find saved game ~[ex_test] Здоровье: 0.0 ! Cannot find saved game ~[ex_test] Кровотечение: 0.0 ! Cannot find saved game ~[ex_test] Радиация: 0.0005 ! Cannot find saved game ~[ex_test] Выносливость: 0.0
третий арт: ! Cannot find saved game ~[ex_test] Здоровье: 0.0003 ! Cannot find saved game ~[ex_test] Кровотечение: 0.0028 ! Cannot find saved game ~[ex_test] Радиация: -0.0052 ! Cannot find saved game ~[ex_test] Выносливость: 0.01
2 арта
! Cannot find saved game ~[ex_test] Здоровье: 0.0003 ! Cannot find saved game ~[ex_test] Кровотечение: 0.0028 ! Cannot find saved game ~[ex_test] Радиация: -0.0052 ! Cannot find saved game ~[ex_test] Выносливость: 0.01 ! Cannot find saved game ~[ex_test] Здоровье: 0.0003 ! Cannot find saved game ~[ex_test] Кровотечение: 0.0028 ! Cannot find saved game ~[ex_test] Радиация: -0.0052 ! Cannot find saved game ~[ex_test] Выносливость: 0.01
НПНВ работает на основе файла постпроцессинга (постобработки изображения) ppe, который редактируется Postprocess Editor-ом из комплекта SDK. Там есть такая текстура - градиент, например grad_nightvision_1.dds Которая и задает кривую преобразования яркости пикселя.
ЦитатаCiBeRSiRiUs ()
Как увеличить дальность отрисовки травы?
Ищи правки движка на эту тему. Конкретно правки рендеров на дальность отрисовки травы.
ЦитатаCiBeRSiRiUs ()
Как сделать тише звук анамалии
Отредактировать громкость звуков в Sound Editore SDK.
Сообщение отредактировал denis2000 - Вторник, 28.06.2016, 09:35
Всем привет. Надо сделать такой артефакт, который уберет скопление аномалий. Как его заспавнить? И аномалии тогда спавнить через СДК или другим каким-нибудь способом?
strchi, я в солянку не играл, поэтому сказать не могу. Надо в одном месте сделать скопление аномалий, потом туда кинуть артефакт и, вуаля, аномалий нет.
ins33, не то, чтобы не правильно, просто можно действительно проще:
Код
for i = 1, #ar do
Но это будет справедливо, если у тебя массив не ассоциативный, а обычный (индексированный) как у тебя в примере. P.S. А можно вопрос - зачем такой мазохизм? Ещё при мне год назад Real Wolf (L.W.C. Team) делал правки движка с действием артов из рюкзака. Не проще ли будет использовать их? P.P.S. Кстати, по поводу работы или "не работы" твоей реализации. Что-то мне подсказывает radiation_restore_speed не показывает абсолютную величину изменения радиации, а является каким-то коэффициентом для движка. Возможно причина в этом.
Сообщение отредактировал BozKurt - Вторник, 28.06.2016, 13:20
BozKurt, Привет. Это для ЗП. Правки уже тестил 0x101C9A71 6, 0x101C9B6F 3. И, как ни странно, тут тоже +5% прирост радиации в разы сильней, чем снятие 52%. Плюс в моде есть шлемы, и если они будут работать из рюкзака, то это будет странно даже для зоны.
function on_use_item(sect) local item_name = sect:section() if item_name == "af_medusa" then local timeact = time_global() local particle = particles_object("anomaly2\\gravity_idle") local pos = db.actor.position() local x = pos.x local y = pos.y + 3.0 local z = pos.z if db.actor:object("oskolki_bylighnika") ~= nil then news_manager.send_tip(db.actor, "Внимание, пробуждение артефакта прошло успешно! Переместите артефакт на пояс!", nil, nil, 5000) xr_effects.remove_item(nil, nil, {"af_medusa"}) xr_effects.remove_item(nil, nil, {"oskolki_bylighnika"}) give_object_to_actor("af_medusa_act") particle:play_at_pos(vector():set(x,y,z)) if timeact >= timeact + 20 then xr_effects.remove_item(nil, nil, {"af_medusa_act"}) give_object_to_actor("af_medusa_off") end end if db.actor:object("oskolki_bylighnika") == nil then news_manager.send_tip(db.actor, "Внимание, осколки булыжника не обнаружены! Пробуждение не возможно", nil, nil, 5000) give_object_to_actor("af_medusa") end end end
function give_object_to_actor(obj,count) if count==nil then count=1 end for i=1, count do alife():create(obj,db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) end end
вот ф-ция use_inventory_item из bind_stalker
Код
function actor_binder:use_inventory_item(obj) if(obj) then m_wpn_addons.use_item(obj) local s_obj = alife():object(obj:id()) if(s_obj) and (s_obj:section_name()=="drug_anabiotic") then xr_effects.disable_ui_only(db.actor, nil) level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback") level.add_pp_effector("surge_fade.ppe", 11, false) give_info("anabiotic_in_process") _G.mus_vol = get_console():get_float("snd_volume_music") _G.amb_vol = get_console():get_float("snd_volume_eff") get_console():execute("snd_volume_music 0") get_console():execute("snd_volume_eff 0") else if (spalnik) then spalnik.use_inventory_item(s_obj) end end end if obj~=nil then medusa_callbacks.on_use_item(obj) end end