В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
Uyman358, в файле zone_map.xml (zone_map_16.xml для ш/ф) в теге level_frame, где прописаны координаты, по оси "y" введи, например "9999". Т.о. ты выведешь статик за пределы экрана. Туже операцию нужно провести с тегами "background" и "compass".
Тебе нужно прописать твоего НПС в файл npc_profile.xml по аналогии.
это обширная тема. Прописывал везде, как в туторах указано, а вылет был. Пока все,, что прописал, не удалил, вылет и был
Добавлено (20.12.2012, 15:55) --------------------------------------------- Кто-нибудь, скиньте, если не трудно, хороший тутор на эту тему. Чтоб весь процесс от корки до корки. Программой пользовался, фигня была та же
Дальше идем в gamedata\scripts и находим там к примеру gulag_escape.script
В нем ищем
function load_job(sj, gname, type, squad, groups)
и вписываем
if type == "lager_pod_mostom" then t = { section = "logic@lager_pod_mostom_men_kamp1", idle = 0, prior = 5, state = {0, 1}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end
ищем
function load_states(gname, type)
и пишем
if type == "lager_pod_mostom" then return function (gulag) return 0 end end
дальше нужно указать группировку
ищем
function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
дописываем
if gulag_type == "lager_pod_mostom" then return npc_community == "stalker" end --------------------------------------------------------------------- !!!!!!!!!! Кстати для тех кто поменял на кордоне группировку воякам под мостом на другую и у кого они разбежались!!!!!!!!!!!!
Нужно еще и в gulag_escape.script
заменить if gulag_type == "esc_bridge" then return npc_community == "military" end на к примеру if gulag_type == "esc_bridge" then return npc_community == "military" return npc_community == "banit" end
--------------------------------------------------------------------- Идем дальше открываем config\misc gulag_escape.ltx
и вписываем логику кампа(сидят у костра)
[logic@lager_pod_mostom_men_kamp1] active = kamp@lager_pod_mostom_men_kamp1
[kamp@lager_pod_mostom_men_kamp1] center_point = kamp
И последнее, снова идем в алл.спавн, но на этот раз уже в way_escape.ltx
Добавлено (20.12.2012, 16:58) --------------------------------------------- Но гдето сдесь ошибка, кто в этом понимает если не сложно просмотрите пожалуйста.
Сообщение отредактировал wikreznow - Четверг, 20.12.2012, 16:56
Arist, может проблема в том чтоя делаю вот этот шаг "Дальше идем в gamedata\scripts и находим там к примеру gulag_escape.script" в gulag_escape.script хоть локация у меня новоподключонная, может для новой локации нужно создать новый gulag_... .script?
3Д макс какого года наиболее удобен для работы со статическими обьектами (ну или как правильно), в частности с террейнами и другими обьектами локаций? Интересует наличие нужных плагинов и отсутствие различных глюков,зависаний и т.п.
Сообщение отредактировал BeeRsek - Четверг, 20.12.2012, 20:01
function create_level_changer( p_story_id, -- STORY_ID нового level_changer (понадобится нам позже) p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer p_gvertex_id, -- game_vertext_id
p_dest_lv, -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока p_dest_gv, -- game_vertex_id p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок p_dest_dir, -- направрение взгляда игрока p_dest_level, -- название уровня, например "L11_Pripyat" p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход) ) local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)
local packet = net_packet() obj:STATE_Write(packet)
-- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32()
-- свойства cse_shape local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local axis_x_x = packet:r_float() local axis_x_y = packet:r_float() local axis_x_z = packet:r_float() local axis_y_x = packet:r_float() local axis_y_y = packet:r_float() local axis_y_z = packet:r_float() local axis_z_x = packet:r_float() local axis_z_y = packet:r_float() local axis_z_z = packet:r_float() local offset_x = packet:r_float() local offset_y = packet:r_float() local offset_z = packet:r_float() end end
-- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8()
-- свойства cse_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_u32() local dest_position = packet:r_vec3() local dest_direction = packet:r_vec3() local dest_level_name = packet:r_stringZ() local dest_graph_point = packet:r_stringZ() local silent_mode = packet:r_u8()
packet:w_u16(p_dest_gv) -- destination game_vertex_id packet:w_s32(p_dest_lv) -- destination level_vertex_id packet:w_vec3(p_dest_pos) -- destination position packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда) packet:w_stringZ(p_dest_level) -- destination level name packet:w_stringZ("start_actor_02") -- some string, always const packet:w_u8(p_silent) -- 1 for silent level changing
packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) news_manager.send_tip(db.actor, "Новый путь", nil, nil, 20000) end
function имя() if (not has_alife_info( "поршень" )) then ins_tropy.create_level_changer(20017, db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(), 728, --gv 1529, --lv vector():set(-91.06703, 21.6, -32.827118), -- координаты куда перекинет. vector():set( 0.0,0.0,0.0 ),"l07_military",0) db.actor:give_info_portion("поршень") end end
function del_имя() local sim = alife() local se_obj = sim:story_object(20017) if se_obj then sim:release(se_obj, true) end local actor = db.actor end
20017 в данном примере ид перехода, и его надо прописать в стори_ид.
Ребят, тут такой вопрос, в общем можно ли сделать, чтобы для первого рендера грузилась одна погода, а для второго рендера грузилась другая погода? Можно? Если можно, то пожалуйста по обширней объясните, а то я толком ничего не знаю
Добавлено (21.12.2012, 12:58) --------------------------------------------- Если что, то мне нужно для ТЧ