В данной теме вы можете задавать любые вопросы касательно 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 по основным вопросам моддинга - обращаемся в ЛС.
Тортик-ложь, Открой модель любым текстовым редактором, и в нём меняй путь к текстурам, Их там несколько. И вроде обязательно сохранить в имени и пути количество символов.
Тортик-ложь, всё дело в all.spawn, в all.spawn прописываются пути к моделям которые спавнятся на локациях (не считая тайников) Тебе нужно заменить стандартную модель, и всё, либо же распаковать all.spawn сменить пути к модели (придётся по 100 раз менять пути) и заново запаковать
Сообщение отредактировал smi345 - Суббота, 15.03.2014, 17:45
respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9 Цифры после запятой, означают отношение одной секции к другой.
вот это вообще не понял, о каком отношении идёт речь?
Добавлено (16.03.2014, 07:03) --------------------------------------------- Создал первый респанер на новой локе, для рабочего смарта. Респавн происходит, НО, модели нпс он берёт от балды, и всегда один и тот-же ЧНовец, спавнится во множественном числе. Хорошо, что имена рандомные остаются. Помогите исправить этот баг. Смарт:
[12865]
; cse_abstract properties section_name = smart_terrain name = predbannik_citi position = -470.06796264648,-0.82150453329086,-183.08558654785 direction = 0,0,0 version = 118 script_version = 6
[predbannik] stalker = novice, experienced, veteran, master voy = novice, experienced, veteran, master ; это для следующего респавнера, но учитывая, что это на данный момент лишнее, всё равно у этой группировки нет визуала ЧН!
Сообщение отредактировал ins33 - Воскресенье, 16.03.2014, 06:47
Всем привет, наткнулся на странную и не понятную мне проблему. В игре встретил нечто (можно посмотреть на прикреплённой картинке), где-то минут 7 всё плавало и лагало, когда я направлял свой взор в сторону предполагаемого источника, искажение становилось в этом случае максимальным. После выстрела происходило небольшое зависание на две секунды и потом снова FPS восстанавливалось, так же пули не вылетали из ствола, убить НПС получалось только если стрелять в упор. Меню, инвентарь и прочие GUI элементы не отображались. После того как я свернул-развернул игру всё вернулось на свои места. Тем не менее становится интересно чем это могло быть вызвано, как этого не допустить впредь или как вызвать искусственно.
Всем привет. Есть 2 вопроса по скриптам ТЧ. 1 вопрос: Как скриптово останавливать и запускать тамер? 2 вопрос: Можно ли скриптами задавать параметры иммунитета актора?
Сообщение отредактировал Mel - Воскресенье, 16.03.2014, 16:11
Всем привет. Есть 2 вопроса по скриптам ТЧ. 1 вопрос: Как скриптово останавливать и запускать тамер? 2 вопрос: Можно ли скриптами задавать параметры иммунитета актора?
Я не знаю как останавливать таймер пока он идёт, можно просто поставить на его окончание проверку, которая включит или отключит действие забинженое на него. А запускать так:
amk.g_start_timer("dialog",0,0,1)
Но это если ты используешь библиотеку от AMK.
Ответ на второй вопрос. Не могу утверждать, но скорее всего это сделать нельзя. Хотя велика вероятность, что я могу ошибаться.
local timers={} local g_timers={} local timer_trigger=nil
function actor_update(delta) if not timer_trigger then timer_trigger=game.time() end if timer_trigger<=game.time() then timer_trigger=game.time()+1000 check_timers() end end
function start_timer(name,delay,action) if not delay then return false end
if not action then action = "" end
local time = game.time() --time in seconds since 1970 local a=1 while db.storage[db.actor:id()].pstor["xt"..a] do a=a+1 if a>100 then return false end end save_variable("xt"..a, name) save_variable("xd"..a, time+delay*1000*system_ini():r_float("alife","time_factor")) save_variable("xp"..a, action)
return true end
function g_start_timer(name,delay_d,delay_h,delay_m,action) local time = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes if delay_d==nil or delay_h==nil or delay_m==nil then return false end
if action==nil then action = "" end
local a=1 while db.storage[db.actor:id()].pstor["gt"..a] do a=a+1 if a>100 then return false end end
function check_timers() local tmp for a=1,100,1 do tmp=load_variable("xt"..a,nil) if tmp~=nil then __timer_found(a) end end
for a=1,100,1 do tmp=load_variable("gt"..a,nil) if tmp~=nil then __g_timer_found(a) end end end
function __timer_found(idx) local time = game.time() --time in seconds since 1970 local name,params if load_variable("xd"..idx, nil)<=time then name=load_variable("xt"..idx, nil) params=load_variable("xp"..idx, nil) del_variable("xt"..idx) del_variable("xd"..idx) del_variable("xp"..idx) oau_reason=name.." "..params __do_timer_action(name,params) return true end return false end
function __g_timer_found(idx) local gtime = level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes local name,params if load_variable("gd"..idx, nil)<=gtime then name=load_variable("gt"..idx, nil) params=load_variable("gp"..idx, nil) del_variable("gt"..idx) del_variable("gd"..idx) del_variable("gp"..idx) oau_reason=name.." "..params __do_timer_action(name,params) return true end return false end
function __do_timer_action(select_string,params_string) if select_string=="name_taimer" then --имя таймера my_file.my_function() --функция которая сработает по истичению end end
function save_variable(variable_name, value) if value==nil then amk.mylog("saving nil into "..variable_name) del_variable(variable_name) else xr_logic.pstor_store(db.actor, variable_name, value) end end
function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end
function del_variable(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end
Ещё нужно добавить апдейты в bind_stalker:
В файле bind_stalker.script в функцию function actor_binder:update(delta) добавляем (перед последним end) amk.actor_update(delta)
Сообщение отредактировал MoDoStRoY - Воскресенье, 16.03.2014, 17:29