SoC. Гулаги (динамические LTX)
Материал из S.T.A.L.K.E.R. Inside Wiki
При создании гулага, не многие знают, что практически всю настройку логики гулагов, можно производить в файле "script". Такой способ построения достигается за счёт динамических ltx. Попробую описать, каким образом это достигается. Я думаю, многие заметили в файлах с гулагами такую функцию:
--'------------------------------------------------------------------------ --' Dynamic ltx --'------------------------------------------------------------------------ function load_ltx(gname, type) return nil end
Это именно та функция, которая и отвечает за динамические ltx. В данном случае, она отключена. Разберём простейший способ построения динамических ltx.
Создаём стандартным способом "smart_terrain" в файле "all.spawn" и гулаг в файле "gulag_уровень.script". Назначим ему имя, например "kakashki". Задаём ему несколько заданий. Например, зададим 3 кампа и двух уолкеров:
if type == "kakashki" then
for i = 1, 3 do
t = { section = "logic@kakashki_kamp",
idle = 0,
prior = 8-i, state = {0,1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
for i = 1, 2 do
t = { section = "logic@kakashki_walker_"..i,
idle = 0,
prior = 9-i, state = {0,1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
end
Так как мы собираемся использовать динамические ltx, то дальнейшая настройка заданий будет производиться не в конфигурационных файлах, а непосредственно в этом же файле. То есть в упомянутой выше функции "load_ltx". Для этого находим нужную функцию "load_ltx", и в ней создаём динамический ltx и прописываем требуемые схемы логики:
--'------------------------------------------------------------------------
--' Dynamic ltx
--'------------------------------------------------------------------------
function load_ltx(gname, type)
if type == "kakashki" then
local ltx = "[logic@kakashki_kamp]\n"..
"active = kamp@kakashki\n"..
"[kamp@kakashki]\n"..
"center_point = kamp\n"..
"[logic@kakashki_walker_1]\n"..
"active = walker@kakashki_1\n"..
"[walker@kakashki_1]\n"..
"path_walk = walk_1\n"..
"path_look = look_1\n"..
"[logic@kakashki_walker_2]\n"..
"active = walker@kakashki_2\n"..
"[walker@kakashki_2]\n"..
"path_walk = walk_2\n"..
"path_look = look_2\n"
return ltx
end
return nil
end
Где, кавычки обязательны, {\n} назначает новую строку в динамическом ltx, и {..} ставится для привязки строк между собой. В последней строке схем, двоеточие ставить не нужно, так как привязывать больше нечего. Переменная "ltx" может иметь любое другое имя.
Теперь создаём вэйпоинты путей, в файле "all.spawn", и можно смело идти проверять.
Продолжение следует.
Автор: Singapur22