В данной теме вы можете задавать любые вопросы касательно 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 - содержит секции конфигов уникального оружия и костюмов.
? И как потом работать с этой таблицей в net_spawn и net_destroy? Зараннее спасибо!
Добавлено (27.06.2016, 17:47) --------------------------------------------- ins33, вот код из этого скрипта
Код
--[[------------------------------------------------------------------------------------------------ База данных живых онлайновых объектов, зон и рестрикторов, актёра Чугай Александр --------------------------------------------------------------------------------------------------]]
zone_by_name = {} script_ids = {} storage = {} actor = nil actor_proxy = actor_proxy.actor_proxy() heli = {} camp_storage = {} story_by_id = {} smart_terrain_by_id = {} info_restr = {} strn_by_respawn = {} heli_enemies = {} heli_enemy_count = 0 anim_obj_by_name = {} goodwill = {sympathy = {}, relations = {}} story_object = {} signal_light = {} offline_objects = {} anomaly_by_name = {} level_doors = {} -- Содержит список всех дверей на уровне (чтобы нпс могли по нему пробегаться и открывать двери, рядом с которыми они стоят. no_weap_zones = {} spawned_vertex_by_id= {}
function add_enemy( obj ) heli_enemies[heli_enemy_count] = obj heli_enemy_count = heli_enemy_count + 1 end
function delete_enemy( e_index ) heli_enemies[e_index] = nil end
function add_obj( obj ) printf("adding object %s",obj:name()) storage[obj:id()].object = obj end
function del_obj( obj ) storage [obj:id()] = nil end
function add_zone( zone ) zone_by_name[zone:name()] = zone end
function del_zone( zone ) zone_by_name[zone:name()] = nil end
function add_anomaly( anomaly ) anomaly_by_name[anomaly.object:name()] = anomaly end
function del_anomaly( anomaly ) anomaly_by_name[anomaly.object:name()] = nil end
function add_actor( obj ) actor = obj actor_proxy:net_spawn( obj ) add_obj( obj ) end
function del_actor() del_obj( actor ) actor_proxy:net_destroy() actor = nil end
function add_heli(obj) heli[obj:id()] = obj end function del_heli(obj) heli[obj:id()] = nil end
function add_smart_terrain( obj ) smart_terrain_by_id[obj.id] = obj end
function del_smart_terrain( obj ) smart_terrain_by_id[obj.id] = nil end
function add_anim_obj(anim_obj, binder) anim_obj_by_name[anim_obj:name()] = binder add_obj(anim_obj) end
function del_anim_obj(anim_obj) anim_obj_by_name[anim_obj:name()] = nil del_obj(anim_obj) end
Добавлено (27.06.2016, 20:54) --------------------------------------------- Сумел таки адаптировать авто для ЗП, заспавнил буханку ф-цией spawn_object, но тут вопросик - а как назначить ей эксклюзивную логику (надо чтоб запускалась только если у ГГ есть определенный предмет - для каждого авто он свой будет)? Зараннее спасибо! --------------------------------------------------------
И еще уточнить хотел: для уборки трупов монстров достаточно в биндере монстров этой строки (кусок кода)
Код
function generic_object_binder:death_callback(victim, who) printf("stop_dead_id"..self.object:id())
Rindoshiz, all.spawn не читается SDK, при декомпиляции локации конвертер читает level.spawn из папки с уровнем. Создается level.spawn при компиляции в SDK нажатием кнопки Make Game. А all.spawn, в свою очередь, уже создается компилятором xrAI, полученный файл level_name.spawn в папке spawns переименовывают в all.spawn и он уже читается игрой. По твоему вопросу. SDK может жаловаться на отсутствующие секции, остальные проблемы не припомню.
Вечер добрый! Подскажите пожалуйста: почему в 3DMax некоторые из добавленных на террейн полигонов "зеленеют". Добавляю два полигона, причем рядом, стык в стык, один нормальный, а второй "зеленый" да еще и в полосочку.
Сообщение отредактировал ur3icf - Понедельник, 27.06.2016, 23:11
ins33, с артами нет пока. А по логике я не совсем то имел ввиду: мне нужно конкретно этому (заспавненного через скрипт), назначить индивидуальный файл логики.
function is_torch_enable() local torch = db.actor:object( "device_torch" ) if torch~=nil and torch:torch_enabled() then return true end return false end
_S_k_i_F_, Тут без пакетов не обойтись. Выше приводил пример спавна используя m_netpk.script >>пост<<
А можно используя ф-ии АМК (не проверял)
Код
local obj=alife():create("sektion_name",vector():set(x, y, z),lv, gv) local params=amk.read_stalker_params(obj) params.custom="[logic]\ncfg = scripts\\new\\leila_ohr1.ltx" params.sid=30151 amk.write_stalker_params(params,obj)
Как настроить пнв? Хочется что бы он в темноте помогал видеть, а не тупо цвет экрана менял. Возможна правка через файл, или только сам эффект надо менять?
Допиливая скрипт воздействия артов из рюкзака столкнулся с проблемой: если в рюкзаке есть арты с суммой вывода радиации 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