-
Публикаций
115 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные РСФСР
-
-
5 минут назад, Yara сказал:Я так понимаю, у тебя работает gulag_deadcity.script и ещё подключен gulag_deadcity2.script? Если да, то может функции в них перебивают друг друга - load_states / checkStalker / checkMonster.
Так про лагеря упрощенные речь, они же используют скрипт gulag_general.script а не эти, разве нет?
-
34 минуты назад, Yara сказал:Если нпс привязан к смарту, у которого нет работ или его communities отличается от группировки нпс, то он будет бродить по уровню. Те, что расставлены через сдк заспавнятся в любом случае, а вот через зонки [respawn] - только, если есть свободные места в смарте и подходит communities.
привязанные к смарту нпс тоже должны спавнятся по тому же инфо, которое включает смарт.
С одними группировками работает а с другими - нет почему-то.
Смарт и без заспавненных рядом привязанных нпс не заполняется со временем.. -
1 час назад, Yara сказал:Если не менялся smart_terrain_params.script, то используется smart_terrain_presets.ltx, а эти general_ устаревшие хвосты с билдов.
везде killer = experienced, veteran, master
freedom = experienced, veteran, master
Да и гулаги с наемниками нормально работают
а вот в генеральные не хотят
-
2 часа назад, Yara сказал:Лишний end всё поломал.
да, так и есть
А не подскажешь еще с проблемой - не работают генеральные лагеря на этой же локации если в них прописаны свобода или наемники. Они даже не спавнятся если их поставить в редакторе с припиской к смарту. Если поменять на долг или сталкеров - то все работает..
Спойлер[l09_deadcity]
stalker = experienced, veteran, master
csky = experienced, veteran, master
monolith = experienced, veteran
killer = experienced, veteran, master
ecolog = experienced, veteran
dolg = experienced, veteran, master
freedom = experienced, veteran, master
bandit = experienced, veteran, master
zombied = novice, experienced, veteran, master -
24 минуты назад, Yara сказал:Добавить уровень в level_groups (smart_terrain.script).
давно добавлен..
l09_deadcity = "group1",
и в level_groups в xr_gulag.script
Дополнено 3 минуты спустя1 час назад, imcrazyhoudini сказал:РСФСР Интереса ради можно было бы отключить скрипт оригинальный и оставить лишь твой, изменится ли что.
пробовал, удалял оригинальное население, скрипты с логикой и оставлял лишь один максимально простой смарт с кровососом - все бестолку.
Даже на новом с нуля уровне таких проблем небыло... -
33 минуты назад, imcrazyhoudini сказал:РСФСР вэйпоинты нормально подписаны?
Вообще ещё была утилита от лашников вроде которая позволяла отслеживать работает смарт или нет.да - имя смарта_home_1 - имя смарта_home_2
Дополнено 24 минуты спустяПытался еще в это жуткое скриптовое месиво вписывать или же переделывать по образцу - ничего не выходило, только эти смарты переставали дополнительно работать и все
Спойлер--------------------------------------------------------------------------
-- Stuff
--------------------------------------------------------------------------
function printf() end--------------------------------------------------------------------------
-- Member counts
--------------------------------------------------------------------------
local bandits_kamp_count = 6--------------------------------------------------------------------------
-- States
--------------------------------------------------------------------------
--------------------------------------------------------------------------
-- General
--------------------------------------------------------------------------
local t = {}
local gulags = {cit_bandits = {comm = {"bandit"}},
cit_killers = {comm = {"killer"}},
cit_beasts = {comm = false}}-- Job -------------------------------------------------------------------
function load_job(sj, gname, type, squad, groups)
local g = gulags[type]
if g then
g.job(sj, gname, type, squad, groups)
end
end-- State -----------------------------------------------------------------
function check_state_stub(gulag)
return 0
endfunction load_states(gname, type)
local g = gulags[type]if g then
return g.state or check_state_stub
endreturn nil
end
-- Dynamic ltx -----------------------------------------------------------
function load_ltx(gname, type)
local g = gulags[type]
if g then
return g.ltx
endreturn nil
end-- Check communities -----------------------------------------------------
local function checkCommon(npc_community, gulag_type, npc_rank, se_obj, stalker)
local g = gulags[gulag_type]
if g then
if g.comm then
if type(g.comm) == "function" then
return g.comm(npc_community, gulag_type, npc_rank, se_obj, stalker)
end
if type(g.comm) == "boolean" then
return g.comm == stalker
endlocal i, v = 0, 0
for i, v in pairs(g.comm) do
if npc_community == v then
return true
end
end
if i > 0 then
return false
end
end
return true
end
return false
endfunction checkStalker(npc_community, gulag_type, npc_rank, se_obj)
return checkCommon(npc_community, gulag_type, npc_rank, se_obj, true)
endfunction checkMonster(npc_community, gulag_type, npc_rank, se_obj)
return checkCommon(npc_community, gulag_type, npc_rank, se_obj, false)
end
--------------------------------------------------------------------------
-- Gulags
--------------------------------------------------------------------------
local combat_ignore = "combat_ignore_cond = {=cit_combat_ignore(cit_actor_is_free)}\n" --=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}, {=enemy_gulag(cit_kanaliz1:cit_kanaliz2:cit_kanaliz3:cit_rat_kanaliz1:cit_rat_kanaliz2)}\n"
local combat_ignore2 = "combat_ignore_cond = {=cit_combat_ignore(cit_actor_out_killers_base)}\n" --=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}, {=enemy_gulag(cit_kanaliz1:cit_kanaliz2:cit_kanaliz3:cit_rat_kanaliz1:cit_rat_kanaliz2)}\n"--------------------------------------------------------------------------
-- Killers
--------------------------------------------------------------------------
-- Predicates ------------------------------------------------------------
function k_predicate_l(data)
return data.profile_name == "cit_killer_leader"
endfunction k_predicate_e(data)
return data.profile_name == "cit_killer_exo"
endfunction k_predicate_es(data)
return data.profile_name == "cit_killer_exo_sniper"
endfunction k_predicate_v(data)
return data.profile_name == "cit_killer_veteran"
endfunction k_predicate_g(data)
return data.profile_name == "cit_killer_general"
end-- Jobs ------------------------------------------------------------------
gulags.cit_killers.job = function(sj, gname, type, squad, groups)
local i, v, j = 0, 0, 0
local prior, pred, gr = 0, 0, 0
local ltx = ""ltx = ltx.."[danger_killers]\n" ..
"ignore_distance = 50\n" ..
"danger_inertion_time = 60000\n" ..
"danger_expiration_time = 40000\n"-- leader
t = { section = "logic@" .. gname .. "_leader",
idle = 0,
prior = 16, state = {0},
squad = squad, group = groups[6],
in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "",
predicate = k_predicate_l
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_leader]\n" ..
"active = patrol@" .. gname .. "_leader_attack\n" ..
"combat_ignore = combat_ignore\n" .."[patrol@" .. gname .. "_leader_attack]\n" ..
"path_walk = leader_attack_walk\n" ..
"path_look = leader_attack_look\n" ..
"commander = true\n" ..
"show_spot = false\n" ..
"on_info = {+cit_heli_end} patrol@" .. gname .. "_leader\n" ..
"soundgroup = cit_killers_leader_sg\n" ..
--"danger = danger_killers\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[patrol@" .. gname .. "_leader]\n" ..
"path_walk = leader_walk\n" ..
"path_look = leader_look\n" ..
"commander = true\n" ..
"show_spot = false\n" ..
--"on_info = {+cit_jail_guard2_talk_to_guard1 -cit_heli_end} patrol@" .. gname .. "_leader_attack\n" ..
"soundgroup = cit_killers_leader_sg\n" ..
--"danger = danger_killers\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"-- leader guards
for i = 1, 2 do
t = { section = "logic@" .. gname .. "_leader_guard" .. i,
idle = 0,
prior = 15, state = {0},
squad = squad, group = groups[6],
in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "",
predicate = k_predicate_e
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_leader_guard" .. i .. "]\n" ..
"active = patrol@" .. gname .. "_base_patrol" .. i .. "_attack\n" ..
"combat_ignore = combat_ignore\n" .."[patrol@" .. gname .. "_base_patrol" .. i .. "_attack]\n" ..
"path_walk = leader_attack_walk\n" ..
"path_look = leader_attack_look\n" ..
"formation = line\n" ..
"show_spot = false\n" ..
"on_info = {+cit_heli_end} patrol@" .. gname .. "_base_patrol" .. i .. "\n" ..
"soundgroup = " .. gname .. "_leader_sg\n" ..
--"danger = danger_killers\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[patrol@" .. gname .. "_base_patrol" .. i .. "]\n" ..
"path_walk = leader_walk\n" ..
"path_look = leader_look\n" ..
"formation = line\n" ..
"show_spot = false\n" ..
"soundgroup = " .. gname .. "_leader_sg\n" ..
--"danger = danger_killers\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- jail guard
t = { section = "logic@" .. gname .. "_jail_guard",
idle = 0,
prior = 2, state = {0}, -- 13
squad = squad, group = groups[5],
in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_v
}
table.insert(sj, t)ltx = ltx.."#include \"scripts\\cit\\cit_jail_guard1.ltx\"\n"
-- base guard
t = { section = "logic@" .. gname .. "_base_guard",
idle = 0,
prior = 12, state = {0}, -- 12
squad = squad, group = groups[6],
in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_v
}
table.insert(sj, t)ltx = ltx.."#include \"scripts\\cit\\cit_jail_guard2.ltx\"\n"
-- base patrol
t = { section = "logic@" .. gname .. "_base_patrol",
idle = 0,
prior = 11, state = {0},
squad = squad, group = groups[6],
in_rest = "cit_selmag_up_floor_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_v
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_base_patrol]\n" ..
"active = camper@" .. gname .. "_base_patrol\n" ..
"combat_ignore = combat_ignore\n" .."[camper@" .. gname .. "_base_patrol]\n" ..
"path_walk = base_patrol_walk\n" ..
"path_look = base_patrol_look\n" ..
"radius = 12\n" ..
"no_retreat = true\n" ..
"heli_hunter = {+cit_heli_start -cit_heli_end}\n" ..
--"danger = danger_killers\n" ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"-- snipers
for i = 1, 4 do
t = { section = "logic@" .. gname .. "_sniper" .. i,
idle = 0,
prior = 11, state = {0},
squad = squad, group = groups[8],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_es
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_sniper" .. i .. "]\n" ..
"active = camper@" .. gname .. "_sniper" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[camper@" .. gname .. "_sniper" .. i .. "]\n" ..
"path_walk = sniper" .. i .. "_walk\n" ..
"path_look = sniper" .. i .. "_look\n" ..
"sniper = true\n" ..
"def_state_campering = threat\n" ..
"def_state_campering_fire = threat_sniper_fire\n" ..
--"danger = danger_bandits\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- walkers between kamps
local start_kamp = {1, 2}
local kamp_change = {{2, 3, 1}, {4, 3, 2}}
local delays = {{18, 30, 20}, {25, 40, 20}}
local d, kc = 0, 0for i = 1, 2 do
t = { section = "logic@" .. gname .. "_free" .. i .. "_in_kamp",
idle = 0,
prior = 100 + i, state = {0}, -- 9
squad = squad, group = groups[9],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_e
}
table.insert(sj, t)d = delays
kc = kamp_change
ltx = ltx.."[logic@" .. gname .. "_free" .. i .. "_in_kamp]\n" ..
"active = walker@" .. gname .. "_free" .. i .. "_to_kamp" .. start_kamp .. "\n" ..
"combat_ignore = combat_ignore\n"for j, v in pairs(kc) do
ltx = ltx.."[walker@" .. gname .. "_free" .. i .. "_to_kamp" .. j .. "]\n" ..
"path_walk = near_kamp" .. j .. "_walk\n" ..
"path_look = kamp" .. j .. "\n" ..
"def_state_moving1 = patrol\n" ..
"def_state_moving2 = patrol\n" ..
"def_state_moving3 = patrol\n" ..
"on_signal = arrived | kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "\n" ..
"danger = danger_killers\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "]\n" ..
"center_point = kamp" .. j .. "\n" ..
"def_state_moving = patrol\n" ..
"on_timer = " .. d[j] .. "000 | walker@" .. gname .. "_free" .. i .. "_to_kamp" .. v .. "\n" ..
"soundgroup = " .. gname .. "_kamp" .. j .. "_sg\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end
end-- patrols in kamp
prior = {3, 5, 7}
delays = {25, 30, 60}
local kamps, k = {3, 2, 4}, 0
for i, v in pairs({2, 1, 1}) do
k = kamps
for j = 1, v do
t = { section = "logic@" .. gname .. "_kamp" .. k .. "_patrol",
idle = 0,
prior = prior, state = {0},
squad = squad, group = groups[k],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_g
}
table.insert(sj, t)
endltx = ltx.."[logic@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"active = patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
"combat_ignore = combat_ignore\n" .."[patrol@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"path_walk = kamp" .. k .. "_patrol_walk\n" ..
--"path_look = kamp" .. k .. "\n" ..
"formation = line\n" ..
"on_signal = arrived | kamp@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
combat_ignore2 ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[kamp@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"center_point = kamp" .. k .. "\n" ..
"on_timer = " .. delays .. "000 | patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
"soundgroup = " .. gname .. "_kamp" .. k .. "_sg\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- free stalkers
delays = {{90, 120}, {120, 100}, {75, 90}}
for i = 1, 3 do
t = { section = "logic@" .. gname .. "_free_stalker" .. i,
idle = 0,
prior = 1, state = {0}, --14
squad = squad, group = groups[5],
in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_v
}
table.insert(sj, t)d = delays
ltx = ltx.."[logic@" .. gname .. "_free_stalker" .. i .. "]\n" ..
"active = kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5_begin\n" ..
"combat_ignore = combat_ignore\n" .."[kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5_begin]\n" ..
"center_point = kamp5\n" ..
"on_info = {+cit_heli_scene_start} camper@" .. gname .. "_free_stalker" .. i .. "_attack %=hit_npc(1201:bip01_spine:0:0.1)%\n" ..
"soundgroup = " .. gname .. "_kamp5_sg\n" ..
"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[camper@" .. gname .. "_free_stalker" .. i .. "_attack]\n" ..
"path_walk = free_stalker" .. i .. "_attack_walk\n" ..
"path_look = free_stalker" .. i .. "_attack_look\n" ..
--"no_retreat = true\n" ..
"radius = 8\n" ..
"def_state_moving = assault\n" ..
"def_state_campering = hide\n" ..
"heli_hunter = true\n" .. --{+cit_heli_start} true, false\n" ..
"on_info = {+cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[walker@" .. gname .. "_free_stalker" .. i .. "]\n" ..
"path_walk = free_stalker" .. i .. "_walk\n" ..
"path_look = free_stalker" .. i .. "_look\n" ..
"def_state_moving1 = patrol\n" ..
"def_state_moving2 = patrol\n" ..
"def_state_moving3 = patrol\n" ..
"on_timer = " .. d[2] .. "000 | kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5\n" ..
--"on_info = {+cit_jail_guard1_close_door -cit_button_broken} kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5\n" ..
--"on_info2 = {+cit_heli_start -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5]\n" ..
"center_point = kamp5\n" ..
"on_timer = " .. d[1] .. "000 | walker@" .. gname .. "_free_stalker" .. i .. "\n" ..
--"on_info = {+cit_heli_start -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" ..
--"on_info2 = {+cit_jail_doctor_leave -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" ..
"soundgroup = " .. gname .. "_kamp5_sg\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- kamps
prior = {2, 4, 1, 6}
pred = {k_predicate_v, k_predicate_v, k_predicate_g, k_predicate_v}
for i, v in pairs({2, 2, 2, 1}) do
for j = 1, v do
t = { section = "logic@" .. gname .. "_kamp" .. i,
idle = 0,
prior = prior, state = {0},
squad = squad, group = groups,
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = pred
}
table.insert(sj, t)
endltx = ltx.."[logic@" .. gname .. "_kamp" .. i .. "]\n" ..
"active = kamp@" .. gname .. "_kamp" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[kamp@" .. gname .. "_kamp" .. i .. "]\n" ..
"center_point = kamp" .. i .. "\n" ..
"def_state_moving = run\n" ..
"soundgroup = " .. gname .. "_kamp" .. i .. "_sg\n" ..
--"danger = danger_killers\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- gate guards
pred = {k_predicate_e, k_predicate_v}
for i = 1, 2 do
t = { section = "logic@" .. gname .. "_gate2_guard" .. i,
idle = 0,
prior = 8, state = {0},
squad = squad, group = groups[9 + i],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = pred
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_gate2_guard" .. i .. "]\n" ..
"active = walker@" .. gname .. "_gate2_guard" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_gate2_guard" .. i .. "]\n" ..
"path_walk = gate2_guard" .. i .. "_walk\n" ..
"path_look = gate2_guard" .. i .. "_look\n" ..
"soundgroup = cit_gate2_sg\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- road patrols
for i = 1, 3 do
t = { section = "logic@" .. gname .. "_road_patrol" .. i,
idle = 0,
prior = 10, state = {0},
squad = squad, group = groups[7],
in_rest = "cit_selmag_up_floor_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = k_predicate_v
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_road_patrol" .. i .. "]\n" ..
"active = walker@" .. gname .. "_road_patrol" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" ..
--[[
"[camper@" .. gname .. "_road_patrol" .. i .. "]\n" ..
"path_walk = road_patrol" .. i .. "_walk\n" ..
"path_look = road_patrol" .. i .. "_look\n" ..
"no_retreat = true\n" ..
"radius = 25\n" ..
--]]
"[walker@" .. gname .. "_road_patrol" .. i .. "]\n" ..
"path_walk = road_patrol" .. i .. "_walk\n" ..
"path_look = road_patrol" .. i .. "_look\n" ..
"def_state_moving1 = patrol\n" ..
"def_state_moving2 = patrol\n" ..
"def_state_moving3 = patrol\n" .."heli_hunter = {+cit_heli_start -cit_heli_end}\n" ..
--"danger = danger_killers\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
endgulags.cit_killers.ltx = ltx
end
--------------------------------------------------------------------------
-- Bandits
--------------------------------------------------------------------------
-- Predicates ------------------------------------------------------------
function b_predicate_vb(data)
return data.profile_name == "cit_bandit_veteran_best"
endfunction b_predicate_v(data)
return data.profile_name == "cit_bandit_veteran"
endfunction b_predicate_g(data)
return data.profile_name == "cit_bandit_general"
endfunction b_predicate_d(data)
return data.profile_name == "cit_bandit_drunk"
end-- Jobs ------------------------------------------------------------------
gulags.cit_bandits.job = function(sj, gname, type, squad, groups)
local i, v, j = 0, 0, 0
local prior, pred, gr = 0, 0, 0
local ltx = ""ltx = ltx.."[danger_bandits]\n" ..
"ignore_distance = 30\n"-- leader
t = { section = "logic@" .. gname .. "_leader",
idle = 0,
prior = 17, state = {0},
squad = squad, group = groups[6],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
predicate = b_predicate_vb
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_leader]\n" ..
"active = walker@" .. gname .. "_leader\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_leader]\n" ..
"path_walk = leader_walk\n" ..
"path_look = leader_look\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"-- leader guards
for i, v in pairs({16, 15}) do
t = { section = "logic@" .. gname .. "_leader_guard" .. i,
idle = 0,
prior = v, state = {0},
squad = squad, group = groups[6],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_vb
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_leader_guard" .. i .. "]\n" ..
"active = walker@" .. gname .. "_leader_guard" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_leader_guard" .. i .. "]\n" ..
"path_walk = leader_guard" .. i .. "_walk\n" ..
"path_look = leader_guard" .. i .. "_look\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- walkers between kamps
local start_kamp = {1, 3, 4}
local kamp_change = {{3, 2, 4, 1}, {1, 4, 2, 3}, {3, 4, 1, 2}}
local delays = {{20, 30, 22, 28}, { 25, 10, 14, 12}, {11, 17, 19, 24}}
local d, kc = 0, 0for i = 1, 3 do
t = { section = "logic@" .. gname .. "_free" .. i .. "_in_kamp",
idle = 0,
prior = 9, state = {0},
squad = squad, group = groups[11],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_v
}
table.insert(sj, t)d = delays
kc = kamp_change
ltx = ltx.."[logic@" .. gname .. "_free" .. i .. "_in_kamp]\n" ..
"active = walker@" .. gname .. "_free" .. i .. "_to_kamp" .. start_kamp .. "\n" ..
"combat_ignore = combat_ignore\n"
for j, v in pairs(kc) do
ltx = ltx.."[walker@" .. gname .. "_free" .. i .. "_to_kamp" .. j .. "]\n" ..
"path_walk = near_kamp" .. j .. "_walk\n" ..
"path_look = kamp" .. j .. "\n" ..
"def_state_moving1 = patrol\n" ..
"def_state_moving2 = patrol\n" ..
"def_state_moving3 = patrol\n" ..
"on_signal = arrived | kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "\n" ..
--"danger = danger_bandits\n" ..
combat_ignore ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "]\n" ..
"center_point = kamp" .. j .. "\n" ..
"def_state_moving = patrol\n" ..
"on_timer = " .. d[j] .. "000 | walker@" .. gname .. "_free" .. i .. "_to_kamp" .. v .. "\n" ..
"soundgroup = " .. gname .. "_kamp" .. j .. "_sg\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end
end-- patrols in kamp
prior = {9, 2, 6}
local kamps, k = {1, 2, 4}, 0
delays = {40, 120, 60}
for i, v in pairs({2, 1, 1}) do
k = kamps
for j = 1, v do
t = { section = "logic@" .. gname .. "_kamp" .. k .. "_patrol",
idle = 0,
prior = prior, state = {0},
squad = squad, group = groups[k],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_v
}
table.insert(sj, t)
endltx = ltx.."[logic@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"active = patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
"combat_ignore = combat_ignore\n" .."[patrol@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"path_walk = kamp" .. k .. "_patrol_walk\n" ..
--"path_look = kamp" .. k .. "\n" ..
"formation = line\n" ..
"on_signal = arrived | kamp@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2 ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" ..
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .."[kamp@" .. gname .. "_kamp" .. k .. "_patrol]\n" ..
"center_point = kamp" .. k .. "\n" ..
"on_timer = " .. delays .. "000 | patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" ..
"soundgroup = " .. gname .. "_kamp" .. k .. "_sg\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- kamps
prior = {8, 2, 4, 5}
for i, v in pairs({2, 1, 1, 2}) do
for j = 1, v do
t = { section = "logic@" .. gname .. "_kamp" .. i,
idle = 0,
prior = prior, state = {0},
squad = squad, group = groups,
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_g
}
table.insert(sj, t)
endltx = ltx.."[logic@" .. gname .. "_kamp" .. i .. "]\n" ..
"active = kamp@" .. gname .. "_kamp" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[kamp@" .. gname .. "_kamp" .. i .. "]\n" ..
"center_point = kamp" .. i .. "\n" ..
"def_state_moving = run\n" ..
"soundgroup = " .. gname .. "_kamp" .. i .. "_sg\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- base guards
pred = {b_predicate_vb, b_predicate_v}
for i, v in pairs({13, 14}) do
t = { section = "logic@" .. gname .. "_base_guard" .. i,
idle = 0,
prior = v, state = {0},
squad = squad, group = groups[7],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = pred
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_base_guard" .. i .. "]\n" ..
"active = walker@" .. gname .. "_base_guard" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_base_guard" .. i .. "]\n" ..
"path_walk = base_guard" .. i .. "_walk\n" ..
--"path_look = base_guard" .. i .. "_look\n" ..
--"danger = danger_bandits\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end-- patrol in center
for i = 1, 2 do
t = { section = "logic@" .. gname .. "_center_patrol",
idle = 0,
prior = 10, state = {0},
squad = squad, group = groups[8],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_v
}
table.insert(sj, t)
endltx = ltx.."[logic@" .. gname .. "_center_patrol]\n" ..
"active = patrol@" .. gname .. "_center_patrol\n" ..
"combat_ignore = combat_ignore\n" .."[patrol@" .. gname .. "_center_patrol]\n" ..
"path_walk = center_patrol_walk\n" ..
--"path_look = center_patrol_look\n" ..
"formation = line\n" ..
"soundgroup = " .. gname .. "_center_patrol_sg\n" ..
--"danger = danger_bandits\n" ..
combat_ignore
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"-- gate guards
prior = {12, 7}
pred = {b_predicate_vb, b_predicate_v}
gr = {10, 9}
for i, v in pairs({3, 2}) do
for j = 1, v do
t = { section = "logic@" .. gname .. "_gate" .. i .. "_guard" .. j,
idle = 0,
prior = prior, state = {0},
squad = squad, group = groups[gr],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = pred
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_gate" .. i .. "_guard" .. j .. "]\n" ..
"active = walker@" .. gname .. "_gate" .. i .. "_guard" .. j .. "\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_gate" .. i .. "_guard" .. j .. "]\n" ..
"path_walk = gate" .. i .. "_guard" .. j .. "_walk\n" ..
"path_look = gate" .. i .. "_guard" .. j .. "_look\n" ..
"soundgroup = cit_gate" .. i .. "_sg\n" ..
combat_ignore2
--"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n"
--"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n"
end
end-- drunken
for i = 1, 2 do
t = { section = "logic@" .. gname .. "_drunken" .. i,
idle = 0,
prior = 1, state = {0},
squad = squad, group = groups[12],
in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "",
online = "{-cit_map_give}",
predicate = b_predicate_d
}
table.insert(sj, t)ltx = ltx.."[logic@" .. gname .. "_drunken" .. i .. "]\n" ..
"active = walker@" .. gname .. "_drunken" .. i .. "\n" ..
"combat_ignore = combat_ignore\n" .."[walker@" .. gname .. "_drunken" .. i .. "]\n" ..
"path_walk = drunken" .. i .. "_walk\n" ..
--"path_look = drunken" .. i .. "_look\n"..
"def_state_moving1 = walk\n" ..
"def_state_moving2 = walk\n" ..
"def_state_moving3 = walk\n" ..
"combat_ignore_cond = always\n"
endgulags.cit_bandits.ltx = ltx
end
--------------------------------------------------------------------------
-- Beasts
--------------------------------------------------------------------------
-- Predicates -------------------------------------------------------------- Jobs ------------------------------------------------------------------
gulags.cit_beasts.job = function(sj, gname, type, squad, groups)
local ltx = ""-- Проверяем наличие моб_хом.
local i = 1
while level.patrol_path_exists(gname .. "_home_" .. i) do
-- Необходимо вычитать количество работ из названия точки пути.
local way_name = gname .. "_home_" .. i
local ptr = patrol(way_name)
local wp_prop = utils.parse_waypoint_data(way_name, ptr:flags(0), ptr:name(0))
local job_count = 10
if wp_prop.count ~= nil then
job_count = wp_prop.count
endfor i = 1, job_count do
-- добавляем должность
t = { section = "logic@" .. way_name,
idle = 0,
prior = 1, state = {0}, squad = squad, group = groups[1],
position_threshold = 20,
in_rest = "", out_rest = gname .. "_restr"
}
table.insert(sj, t)
end-- добавляем описание должности в лтх.
local job_ltx = "[logic@" .. way_name .. "]\n" ..
"active = mob_home@" .. way_name .. "\n" .."[mob_home@" .. way_name .. "]\n" ..
"path_home = home_" .. i .. "\n"ltx = ltx..job_ltx
i = i + 1
endgulags.cit_beasts.ltx = ltx
end -
Проблема такая - не работают гулаги монстров на локации, что бы я ни делал.
Локация - мертвый город из билдов, но использующий файлы gulag_deadcity.ltx и gulag_deadcity.script которые остались в финалке. Тамошние гулаги работают, но так как они записаны малопонятными мне скриптовыми методами, без использования gulag_deadcity.ltx(он полностью пустой) то я просто создал gulag_deadcity2.ltx и gulag_deadcity2.script и вписал монстров привычным образом. На другой локации где точно такая же ситуация - это все работает.
лтх и скрипт в gulag_tasks.ltx и xr_gulag.script зарегестрированы
Спойлер
[logic@cit_bloodsucker_domik_day]
active = mob_home@cit_bloodsucker_domik_day[mob_home@cit_bloodsucker_domik_day]
path_home = home_1
home_min_radius = 10
home_max_radius = 20[logic@cit_bloodsucker_domik_night]
active = mob_home@cit_bloodsucker_domik_night[mob_home@cit_bloodsucker_domik_night]
path_home = home_2
home_min_radius = 20
home_max_radius = 40
[logic@cit_burers_okraina_day]
active = mob_home@cit_burers_okraina_day[mob_home@cit_burers_okraina_day]
path_home = home_1
home_min_radius = 10
home_max_radius = 20[logic@cit_burers_okraina_night]
active = mob_home@cit_burers_okraina_night[mob_home@cit_burers_okraina_night]
path_home = home_2
home_min_radius = 20
home_max_radius = 40[logic@cit_poltergeist_skotoblok1]
active = mob_home@cit_poltergeist_skotoblok1[mob_home@cit_poltergeist_skotoblok1]
path_home = home_1
home_min_radius = 20
home_max_radius = 40[logic@cit_poltergeist_skotoblok2]
active = mob_home@cit_poltergeist_skotoblok2[mob_home@cit_poltergeist_skotoblok2]
path_home = home_1
home_min_radius = 20
home_max_radius = 40[logic@cit_poltergeist_gorkom]
active = mob_home@cit_poltergeist_gorkom[mob_home@cit_poltergeist_gorkom]
path_home = home_1
home_min_radius = 20
home_max_radius = 40[logic@cit_rat_kanaliz1_day]
active = mob_home@cit_rat_kanaliz1_day[mob_home@cit_rat_kanaliz1_day]
path_home = home_1
home_min_radius = 10
home_max_radius = 20[logic@cit_rat_kanaliz1_night]
active = mob_home@cit_rat_kanaliz1_night[mob_home@cit_rat_kanaliz1_night]
path_home = home_2
home_min_radius =20
home_max_radius = 40[logic@cit_rat_kanaliz2_day]
active = mob_home@cit_rat_kanaliz2_day[mob_home@cit_rat_kanaliz2_day]
path_home = home_1
home_min_radius = 10
home_max_radius = 20[logic@cit_rat_kanaliz2_night]
active = mob_home@cit_rat_kanaliz2_night[mob_home@cit_rat_kanaliz2_night]
path_home = home_2
home_min_radius = 20
home_max_radius = 40Спойлерlocal t = {}
function load_job(sj, gname, type, squad, groups)
if type == "cit_bloodsucker_domik" then
t = { section = "logic@cit_bloodsucker_domik_day",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_bloodsucker_domik_day",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "cit_bloodsucker_domik_out"
}
table.insert(sj, t)
t = { section = "logic@cit_bloodsucker_domik_night",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_burers_okraina" then
t = { section = "logic@cit_burers_okraina_day",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_burers_okraina_day",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_burers_okraina_day",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "cit_burers_okraina_out"
}
table.insert(sj, t)
t = { section = "logic@cit_burers_okraina_day",
idle = 0,
prior = 5, state = {0},
online = true,
in_rest = "", out_rest = "cit_burers_okraina_out"
}
table.insert(sj, t)
t = { section = "logic@cit_burers_okraina_night",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_burers_okraina_night",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_poltergeist_skotoblok1" then
t = { section = "logic@cit_poltergeist_skotoblok1",
idle = 0,
prior = 5, state = {0},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_skotoblok1",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_skotoblok1",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_poltergeist_skotoblok2" then
t = { section = "logic@cit_poltergeist_skotoblok2",
idle = 0,
prior = 5, state = {0},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_skotoblok2",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_skotoblok2",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_poltergeist_gorkom" then
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {0},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {0},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {1},
online = true,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_poltergeist_gorkom",
idle = 0,
prior = 5, state = {2},
online = false,
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_rat_kanaliz1" then
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz1_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz1_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endif type == "cit_rat_kanaliz2" then
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_day",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = "cit_rat_kanaliz2_out"
}
table.insert(sj, t)
t = { section = "logic@cit_rat_kanaliz2_night",
idle = 0,
prior = 5, state = {1},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
endend
function load_states(gname, type)
if type == "cit_bloodsucker_domik" then
return function(gulag)
local actor = db.actor
if not actor then
return gulag.state
end
if not has_alife_info("cit_map_give") then
return 2 -- offline
elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
return 0 -- день
else
return 1 -- ночь
end
end
endif type == "cit_burers_okraina" then
return function(gulag)
local actor = db.actor
if not actor then
return gulag.state
end
if not has_alife_info("cit_map_give") then
return 2 -- offline
elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
return 0 -- день
else
return 1 -- ночь
end
end
endif type == "cit_poltergeist_skotoblok1" then
return function(gulag)
local actor = db.actor
if not actor then
return gulag.state
end
if not has_alife_info("cit_map_give") then
return 2 -- offline
elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
return 0 -- день offline
else
return 1 -- ночь
end
end
endif type == "cit_poltergeist_skotoblok2" then
return function(gulag)
local actor = db.actor
if not actor then
return gulag.state
end
if not has_alife_info("cit_map_give") then
return 2 -- offline
elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
return 0 -- день offline
else
return 1 -- ночь
end
end
endif type == "cit_poltergeist_gorkom" then
return function(gulag)
local actor = db.actor
if not actor then
return gulag.state
end
if not has_alife_info("cit_map_give") then
return 2 -- offline
elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then
return 0 -- день offline
else
return 1 -- ночь
end
end
endif type == "cit_rat_kanaliz1" then
return function(gulag)
if db.actor ~= nil then
if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
return 0 -- день
else
return 1 -- ночь
end
else
return gulag.state
end
end
endif type == "cit_rat_kanaliz2" then
return function(gulag)
if db.actor ~= nil then
if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
return 0 -- день
else
return 1 -- ночь
end
else
return gulag.state
end
end
end
end--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
return nil
endfunction checkStalker(npc_community, gulag_type, npc_rank, se_obj)
end
return false
endfunction checkMonster(npc_community, gulag_type)
if gulag_type == "cit_bloodsucker_domik" then
return npc_community == "bloodsucker"
endif gulag_type == "cit_burers_okraina" then
return npc_community == "burer"
endif gulag_type == "cit_poltergeist_skotoblok1" then
return npc_community == "poltergeist"
endif gulag_type == "cit_poltergeist_skotoblok2" then
return npc_community == "poltergeist"
endif gulag_type == "cit_poltergeist_gorkom" then
return npc_community == "poltergeist"
endif gulag_type == "cit_rat_kanaliz1" then
return npc_community == "rat"
endif gulag_type == "cit_rat_kanaliz2" then
return npc_community == "rat"
end
return false
endСпойлер[l09_deadcity]
stalker = experienced, veteran, master
csky = experienced, veteran, master
monolith = experienced, veteran, master
killer = experienced, veteran, master
ecolog = experienced, veteran
dolg = experienced, veteran, master
freedom = experienced, veteran, master
bandit = experienced, veteran, master
zombied = novice, experienced, veteran, masterboar = normal, strong
bloodsucker = normal, strong
flesh = normal, strong
dog = normal, strong
pseudodog = normal, strong
zombie = normal, strong
controller = normal, strong
chimera = normal, strong
fracture = normal, strong
tushkano = weak, normal, strong
rat = weak, normal, strong
snork = weak, normal
poltergeist = weak, normal, strong
burer = weak, normal
giant = weak, normal
pseudo_gigant = weak, normal
fracture = weak, normalв general_lair.ltx и general_lager.ltx примерно тоже самое, генеральные лагеря с монстрами на локации работают нормально, а вот с людьми - так себе, тоже проблемы есть
-
Три дня гналась за вами чтобы сказать как вы мне безразличны...
-
1
-
-
1 час назад, Yara сказал:В 2016 так:
выделить все объекты, затем в меню Edit -> Group. Выделить созданную группу, в меню Modify -> Center Pivot (чтобы пивот был относительно объектов, а не нулевых координат). После нужных операций - выделить группу и Edit -> Ungroup.
Подобное можно проделать в сдк.
работает, но не полностью - объекты передвигаю, но при экспорте в объекты - все сбрасывается.
Я передвигаю обычно объекты выделяя их грани\вертексы или полигоны целиком чтоб ничего не сбрасывалось, группа же распадается если попытаться выделить полигоны например - выделяются только полигоны одного объекта...
Дополнено 27 минуты спустяАаа, Freeze Transform сохраняет трансформацию..
-
Как в майе(у меня 2009) повернуть несколько объектов не объединяя их операцией Combine?
Нужно повернуть уровень целиком, но не парится с их разъединением на отдельные объекты -
давно не учавствует в разработке, двиглокопатель потому требуется
-
1
-
-
[smart_terrains] none = {-info} smart = {+info} Это будет работать? нпс под логикой
Дополнено 27 минуты спустянадо же, вроде работает..
-
3 часа назад, macron сказал:Так ты выложи ACDC-сборку уже готовую к распаковке. У кого перл работает, проверят. Только даже с рабочим перлом обычно возникает куча ошибок при первых запусках, каких-нибудь недостающих классов в инишках или ошибок в конфигах...
Вот, закинул левел спаун и папку с конфигами из билда
https://disk.yandex.ru/d/H9K_Kfok_xc2SA -
Только что, pirat сказал:а тулзой бардака в формат сдк не декомпильнуть весь уровень?
спаун билдов 2004 и ранее она не берет
-
В билде на болотах есть спаун с аномалиями, монстрами, сталкерами и прочим в отличие от их пустой версии из 1935. Однако надо пару ошибок исправить чтоб запустить их
-
Нужна помощь в распаковке файла level.spawn болот 1936 билда в текстовый формат. Может кто помочь? У самого perl не пашет вообще.
-
11 минут назад, Bowsette сказал:В рамках пост НГ посиделок могу повспоминать чьё-нибудь особенного относительно того билда который щупал, сколько лет то назад? 6-ть что-ли.
На тот момент это был самый близкий порт на ТЧ графоуни из дилда в саркофаге 2004 года с E3.
(но графон затем дотянул SA 0.8 и а через исходники натягал грандрендеринг мод т.е те кто ради особого шейдера могут сразу идти см. грандрендеринг)
Те кто ради каких-то ремейков лок в билдо русле, в теории если бы все локи бы расширились как Агропром и так вплоть до ЧАЭС, то наверно игра стоила бы свеч, обновленный Агропром ощущался как мини-опенворлд с A-life ситуациями. (но это тяжелый проект даже для команды True Stalker или Дезовейвов)
______________________Какие проблемы с проектом PL
1) расширение лок на старом двигле (хотя такое уже принято пилить на open-xray см. Живую Зону и True)
2) затворническое нежелания расширят команду
3) пучина лагодрома, ловли ошибок + оптимизация (малыми силами причина пункт 2.)4) неспособность выдать билдо-эстетику как у заглохшего дилдо-мода 1984, ну как получается в теории PL это расширенный билдо ТЧ, который типа с обновленными участками лок, которые лучше чем в эстетике того самого 1984 не преподнесешь, а лучше чтобы лучше чем там.
В соотношение сторон 4:3 конечно же.
В теории это помогло бы заскочить на рельсы донатного проекта по образцу чела из SOC upd и засветившись подтянуть еще людей(ну или обновить железо и ускорить через это все что можно ускорить).
BTTS (обратно в сталкера) достаточно близко подобрались в этой сфере билдо пердолинга к сути как это должно ощущаться т.е он более перспективный ( из выборки похожих проектов) даже не смотря на то что его пока подморозили, когда его разморозят он все равно обгонит очередной раз.
____________________
Можете посмотреть как преуспел какой-нибудь SOC UPD на фоне затянувшегося PZ и PL ворвавшись просто как орешник и скоростными темпами перерабатывающий в одно рыло столько лок подряд, да еще урвав себе под шумок Припять "Живой Зоны" как один из первых проектов кто её преподнесёт максимально графонисто, время спустя он уже натаскает ассетов на тему всех энергоблоков ЧАЭС из разных времён многие из которых уже и позабылись. Счастье PL что этот чел не фигачит сугубо в билдо стилистике, и горе PZ т.к очень близко по смыслу того каким в идеале мог бы стать PZ, если не терять темпов.
Если бы автор SOC UPD ухватился за билдоту, он бы наверняка на каком-нибудь open-xray выдал бы такого 1984, который бы затмил все вот эти долгие посиделки.
тема конечно холиварна, но себя достойна ( как в старые добрые времена на gameru.net)
это не совсем тсс-проект, ибо используется только стилистика билдов 2004 года, текстуры и некоторые модели. в первую очередь травы и деревьев. Билдолок там не вижу, как и прочих атрибутов сталкера.
Еще не видел работы с тсс-освещением в помещениях - sun-источников света, которые используются в ПЛ и ОЛР 3.0-
5
-
-
11 часов назад, Счастливчик сказал:С наступившим Вас уважаемые разработчики 2025 годом!
Хотел узнать, ведется ли разработка проекта и как много осталось сделать?
А то смотрю давно новостей не былоВедется, готово половина где-то
-
1
-
1
-
3
-
-
после переустановки системы (вин 7 х64) перестал запускаться. Тупо кликаешь на эксешник - ничего не происходит. NET х32 и х64 установлены
-
1
-
-
ЦитатаУбран просчет RGB и Sun компонентов освещения и оставлен только Hemi
правильно понимаю, что в бета-версии это не исправлено?
Неужели так сложно не вырезать это а хотя бы галочку оставить на включение выключение?-
1
-
-
В 11.06.2024 в 10:49, SudSaf сказал:Я увидел олр 3.0, мой сын увидит ПЛ
хорошие вещи быстро не делаются

-
1
-
1
-
1
-
-
В 13.04.2024 в 23:17, Stalkervernite сказал:Когда он выйдет?(
Нескоро еще

-
1
-
-
как вписать сюда четвертое оффлайновое состояние, чтобы были в нем до получения одного инфо и переходили в него после получения другого?
if type == "смарт" then
return function (gulag)
for k,v in pairs(gulag.Object) do
if v ~= true and v:best_enemy() ~= nil then
gulag.alarm_start = game.get_game_time()
return 2 -- тревога
end
end
if gulag.alarm_start == nil or
game.get_game_time():diffSec(gulag.alarm_start) > 300 then
if level.get_time_hours() >= 6 and level.get_time_hours() <= 22 then
return 0 -- день
else
return 1 -- ночь
end
else
return 2
end
end
end -
1 минуту назад, Diesel сказал:Кто уже пользуется таким рендером?
любой билдомод
получается, бесполезные компиляторы для меня

Paradise Lost
в Моды в разработке
Опубликовано
Идет, не волнуйся.
Большие новости будут в ближайшие несколько месяцев, как закончим один из этапов