Перейти к контенту
Halford

[SoC] Ковыряемся в файлах

Рекомендуемые сообщения

Адаптирую blowout mod 1.0:

 


Что правил(сначала оригинал, потом мои правки)
ogsm_funcs.script:

function __do_timer_action(select_string,params_string)

-- Начало алгоритма выброса --

-- 1. Настало время выброса.
    if select_string=="bl1" then
        if ogsm_surge then
            if (level.name() ~= "l03u_agr_underground") and (level.name() ~= "l08u_brainlab") and (level.name() ~= "l10u_bunker") and (level.name() ~= "l04u_labx18") and (level.name() ~= "l12u_sarcofag") and (level.name() ~= "l12u_control_monolith") and (level.name() ~= "l12_stancia") and (level.name() ~= "l12_stancia_2") then
                if sleep_manager and sleep_manager.is_sleep_active() then sleep_manager.stopper() end
                start_timer("bl2",1)
            else
                g_start_timer("bl1",0,1,0)
            end
        else
            g_start_timer("bl1",0,10,0)
        end
    end

 

function __do_timer_action(select_string,params_string)

-- Начало алгоритма выброса --

-- 1. Настало время выброса.
    if select_string=="bl1" then
        if ogsm_surge then
            if (level.name() ~= "l01_dead_city") and (level.name() ~= "l02_yantar") and (level.name() ~= "l03_bar") and (level.name() ~= "l05_military") and (level.name() ~= "l06_milrad") and (level.name() ~= "l07_radar") and (level.name() ~= "l08_generators") then
                if sleep_manager and sleep_manager.is_sleep_active() then sleep_manager.stopper() end
                start_timer("bl2",1)
            else
                g_start_timer("bl1",0,1,0)
            end
        else
            g_start_timer("bl1",0,10,0)
        end
    end

Как я понимаю, здесь указываются локации где выброс идти не будет. У меня пока что одна локация на которой будет идти, потом расширю.

ogsm_hideout.script:

function is_in_specific_zone(npc)
    if npc_in_zone(npc,"l01_escape",-256,-246,-137,-132,-25,-20) or        -- Бункер Сидора
       npc_in_zone(npc,"l03_agroprom",-198.31,-195.66,85.4,96.54,2,5.3) or    -- Вагон дезертира
       npc_in_zone(npc,"l04_darkvalley",30,50,-60,-25,-4,0) or            -- Тюрьма в Темной долине
       npc_in_zone(npc,"l05_bar",123,140,18,30,-6,0) or                 -- Бар
       npc_in_zone(npc,"l05_bar",118,121,34,41,-4,1) or                 -- Охранник Бара
       npc_in_zone(npc,"l05_bar",149,158,67,74,0,4) or                 -- Приемная Арни
       npc_in_zone(npc,"l05_bar",136,168,73,134,-22,-10) or            -- Арена
       npc_in_zone(npc,"l05_bar",208,234,120,139,-6,2) or                -- База Долга
       npc_in_zone(npc,"l06_rostok",-90,-87,125,151,0,6) or             -- Блокпост наемников
       npc_in_zone(npc,"l07_military",-27,-16,-33,-14,-9,0) or             -- База Свободы
       npc_in_zone(npc,"l08_yantar",23,40,-282,-269,-16,0) or            -- Бункер ученых
       npc_in_zone(npc,"l08_yantar",-265,-22,-218,-6,-20,-11) or            -- Кишка
       npc_in_zone(npc,"l11_pripyat",-16,-2,188,204,-5,0) then            -- Подвал ДК
        return true
    end
    return false
end

function is_in_hide(npc)
    if npc_in_zone(npc,"l01_escape",-211,-198,-132,-125,-23,-20) or     -- Подвал 1 в лагере новичков
       npc_in_zone(npc,"l01_escape",-216,-209,-133,-120,-24,-20) or     -- Подвал 2 в лагере новичков
       npc_in_zone(npc,"l02_garbage",-112,-57,-6,25,-9,90) or        -- Ангар на Свалке
       npc_in_zone(npc,"l05_bar",206,213,50,68,0,4) or            -- Магазин Петренко
       npc_in_zone(npc,"l06_rostok",-285,-235,78,112,-7,0) or         -- Тоннель Фримена
       npc_in_zone(npc,"l10_radar",639,664,167,189,-45,-37) or         -- Секретная база Монолита
       npc_in_zone(npc,"l10_radar",86.73,153,-27,-21.70,-10,-4.6) or     -- Вход в бункер
       npc_in_zone(npc,"l11_pripyat",-18,-12,58,83,-6,-3) or        -- Подземный переход
       npc_in_zone(npc,"l11_pripyat",167,173,58,83,-6,-3) or        -- Подземный переход
       npc_in_zone(npc,"l11_pripyat",-24,55,116,122,-4,0) then        -- Канализация
        return true
    else
        local hide = get_nearest_hide(npc)
        if hide then
            if utils.npc_in_zone(npc, hide.obj) then
                return true
            end
        end
    end
    return false
end

 

function is_in_specific_zone(npc)
    end
function is_in_hide(npc)
end

 

Вот тут какие-то специфические зоны, не совсем понимаю + какие-то числа, тоже не совсем понимаю... Решил удалить всё.

 

function first_run()

------------------
-- Escape Hides --
------------------

-- Бункер Сидора
spawn_restrictor("l01_escape", vector():set(-249.9,-24.8,-134.4), 10136, 7, "fake_", 3)
-- Лагерь новичков
spawn_restrictor("l01_escape", vector():set(-206.5,-22.53,-128.1), 46582, 58, "stalker", 3)
spawn_restrictor("l01_escape", vector():set(-211.4,-23.17,-129.5), 41963, 59, "stalker", 3)
-- Ферма
spawn_restrictor("l01_escape", vector():set(-8.4,0.64,258.3), 268724, 183, "stalker", 4)
-- Заброшенный дом рядом с Лисом
spawn_restrictor("l01_escape", vector():set(133.0,0.22,339.5), 437657, 232, "stalker_bandit", 3)
-- АТП
spawn_restrictor("l01_escape", vector():set(109.9,-7.48,7.7), 411371, 118, "stalker_bandit", 5)
-- Блокпост
spawn_restrictor("l01_escape", vector():set(-119.7,-30.04,-386.4), 133789, 27, "military", 4)
spawn_restrictor("l01_escape", vector():set(-140.7,-29.68,-361.2), 109717, 18, "military", 4)
-- Мельница
spawn_restrictor("l01_escape", vector():set(13.3,2.7,98.7), 290783, 92, "military", 3)

-------------------
-- Garbage Hides --
-------------------

-- Ангар - восточная часть
spawn_restrictor("l02_garbage", vector():set(-61.6,0.75,9.1), 135489, 330, "stalker", 6)
-- Изгородь
spawn_restrictor("l02_garbage", vector():set(66.5,0.6,144.9), 237602, 364, "bandit", 2)
-- Ангар - западная часть
spawn_restrictor("l02_garbage", vector():set(-102.9,0.44,11.9), 110339, 328, "bandit", 6)

--------------------
-- Agroprom Hides --
--------------------

-- Строение в районе Крота
spawn_restrictor("l03_agroprom", vector():set(16.8,0,14), 256750, 693, "stalker_bandit_military", 6)
-- Убежище Крота
spawn_restrictor("l03_agroprom", vector():set(39.9,2.5,-10.5), 278041, 693, "stalker", 6)
-- Казармы у подземелья
spawn_restrictor("l03_agroprom", vector():set(-158.2,1.1,-151.2), 79088, 693, "military", 5)
-- Казармы у НИИ
spawn_restrictor("l03_agroprom", vector():set(-153.3,1.1,-166.6), 84356, 693, "military", 5)
-- Строение у НИИ
spawn_restrictor("l03_agroprom", vector():set(-179.9,0,-187.6), 56704, 693, "military", 6)
-- НИИ Агропром
spawn_restrictor("l03_agroprom", vector():set(-145.6,0,-200.9), 92513, 693, "military", 6)

----------------------
-- Darkvalley Hides --
----------------------

-- Строения над входом в Х18
spawn_restrictor("l04_darkvalley", vector():set(146.3,0.22,-263.2), 345170, 813, "bandit_military_dolg", 15)
spawn_restrictor("l04_darkvalley", vector():set(128.1,0.14,-294), 325149, 813, "bandit_military_dolg", 7)
-- Ферма
spawn_restrictor("l04_darkvalley", vector():set(-135.1,0.97,-511), 22718, 813, "stalker", 8)
-- Бензоколонка
spawn_restrictor("l04_darkvalley", vector():set(101.5,0.7,-7.7), 297166, 813, "stalker_", 6)
-- Подвал рядом с ямой
spawn_restrictor("l04_darkvalley", vector():set(34.3,-2.93,-0.7), 216848, 813, "bandit_dolg", 4)
-- Элеватор
spawn_restrictor("l04_darkvalley", vector():set(-7,0.11,-57.4), 165893, 813, "bandit", 4)
-- Комната Борова
spawn_restrictor("l04_darkvalley", vector():set(39.2,4.54,-84), 223238, 813, "bandit", 5)
-- Холл
spawn_restrictor("l04_darkvalley", vector():set(37.1,0.375,-66.5), 220567, 813, "bandit", 5)
-- Над тюрьмой
spawn_restrictor("l04_darkvalley", vector():set(40.6,1.01,-31.5), 225406, 813, "bandit", 7)

---------------
-- Bar Hides --
---------------

-- Бункер на заставе
spawn_restrictor("l05_bar", vector():set(214.2,-1.57,-18.9), 52736, 1233, "stalker_dolg", 3)
-- Иди своей дорогой, сталкер...
spawn_restrictor("l05_bar", vector():set(178.5,0.09,49.0), 44766, 1233, "stalker_dolg", 6)
-- Магазин Петренко
spawn_restrictor("l05_bar", vector():set(210.0,0.42,61.6), 51205, 1233, "dolg", 5)
-- База Долга
spawn_restrictor("l05_bar", vector():set(224.0,-5.26,130.9), 56342, 1233, "fake_", 8)
-- Предбанник Арены
spawn_restrictor("l05_bar", vector():set(142.8,0.09,93.1), 38428, 1233, "stalker_dolg", 6)
-- Строения у Бара
spawn_restrictor("l05_bar", vector():set(112.7,0.097,68.6), 33337, 1233, "stalker_dolg", 6)
spawn_restrictor("l05_bar", vector():set(144.9,-0.012,40.6), 38939, 1233, "stalker_dolg", 6)
-- Бар
spawn_restrictor("l05_bar", vector():set(131.6,-4.83,23.8), 36240, 1233, "fake_", 10)

------------------
-- Rostok Hides --
------------------

-- Блокпост наемников
spawn_restrictor("l06_rostok", vector():set(-88.9,0,137.2), 46715, 1311, "stalker_dolg_killer_ecolog", 2)
spawn_restrictor("l06_rostok", vector():set(-82.6,1.95,156.8), 48150, 1311, "stalker_dolg_killer_ecolog", 3)
-- Ангар с пси-зоной
spawn_restrictor("l06_rostok", vector():set(-191.8,0,130.9), 28448, 1311, "stalker_dolg_killer_ecolog", 6)
-- Тоннель Фримена
spawn_restrictor("l06_rostok", vector():set(-280,-6,109.2), 1769, 1311, "ecolog", 3)
-- Засады наемников
spawn_restrictor("l06_rostok", vector():set(-242.9,0,140), 12634, 1311, "killer", 2)
spawn_restrictor("l06_rostok", vector():set(-228.2,0.13,141.4), 19047, 1311, "killer", 2)
spawn_restrictor("l06_rostok", vector():set(-250.6,1.43,14), 9490, 1311, "killer", 2)

--------------------
-- Military Hides --
--------------------

-- База Долга
spawn_restrictor("l07_military", vector():set(-191.8,-13,39.9), 133097, 1546, "dolg", 4)
-- Деревня кровососов
spawn_restrictor("l07_military", vector():set(-228.9,-21.78,196.7), 102257, 1546, "freedom", 4)
-- Стоянка нейтралов
spawn_restrictor("l07_military", vector():set(-71.4,-16.83,242.9), 240966, 1546, "stalker", 3)
-- Барьер
spawn_restrictor("l07_military", vector():set(84.7,-7,341.6), 382116, 1546, "freedom", 3)
-- Хутор Павлика
spawn_restrictor("l07_military", vector():set(-190.4,-16,371), 134714, 1546, "killer_freedom", 4)
-- Штаб Свободы
spawn_restrictor("l07_military", vector():set(-21.7,-4.12,-23.8), 285439, 1546, "fake_", 6)
-- Казармы
spawn_restrictor("l07_military", vector():set(9.1,-7.28,16.1), 316470, 1546, "freedom", 6)
spawn_restrictor("l07_military", vector():set(57.4,-8.054,16.8), 356438, 1546, "freedom", 6)
-- Кухня
spawn_restrictor("l07_military", vector():set(-77,-11.34,30.1), 235657, 1546, "freedom", 6)

------------------
-- Yantar Hides --
------------------

-- Бункер ученых
spawn_restrictor("l08_yantar", vector():set(31.5,-11.68,-272.3), 54643, 1459, "fake_", 6)

-----------------
-- Radar Hides --
-----------------

-- Секретная база Монолита
spawn_restrictor("l10_radar", vector():set(650.955,-43.887,182.48), 226701, 1868, "dolg_freedom_stalker_military_monolith", 7)
-- Вход в бункер
spawn_restrictor("l10_radar", vector():set(147.35,-9.277,-24.21), 52689, 1868, "dolg_freedom_stalker_military_monolith", 4)
-- Казармы на Радаре
spawn_restrictor("l10_radar", vector():set(33.6,-3.38,-42), 21487, 1868, "dolg_freedom_stalker_military_monolith", 4)

-------------------
-- Pripyat Hides --
-------------------

-- Подземная автостоянка
spawn_restrictor("l11_pripyat", vector():set(85.4,-7.39,20.3), 196856, 2269, "stalker_military_freedom_dolg_killer", 15)
-- Сберкасса
spawn_restrictor("l11_pripyat", vector():set(60.2,-1.74,33.6), 172091, 2269, "stalker_military_freedom_dolg_killer", 4)
-- Милиция
spawn_restrictor("l11_pripyat", vector():set(-35.7,-1.68,34.3), 63044, 2269, "stalker_military_freedom_dolg_killer", 6)
-- Сельхозуправление
spawn_restrictor("l11_pripyat", vector():set(-51.1,0,140), 48522, 2269, "stalker_military_freedom_dolg_killer", 12)
-- Подвал Дома культуры
spawn_restrictor("l11_pripyat", vector():set(-5.6,-5.169,193.2), 95262, 2269, "fake_", 6)
-- Подземные переходы
spawn_restrictor("l11_pripyat", vector():set(-15.4,-5.55,69.3), 83833, 2269, "stalker_military_freedom_dolg_killer", 3)
spawn_restrictor("l11_pripyat", vector():set(170.8,-5.55,69.3), 253270, 2269, "stalker_military_freedom_dolg_killer", 3)
-- Канализация
spawn_restrictor("l11_pripyat", vector():set(19.6,-3.634,121.1), 125990, 2269, "stalker_military_freedom_dolg_killer", 2)

end

 

function first_run()

------------------
-- Swamp Hides --
------------------

-- Дом Доктора
spawn_restrictor("l04_swamp", vector():set(192.7744140625,2.8159973621368,-39.758411407471), 370218, 198, "stalker", 5)

end
 

Вот тут вроде как устанавливаются укрытия для всех. Удалил все, оставил тестовый.

function evaluator_blowout:evaluate()
    if not self.object:best_enemy() and 
       db.Flag2==1 and db.Dead2==0 and 
       not (level.name()=="l11_pripyat" and self.object:character_community() == "monolith") and
       not is_in_hide(self.object) and not is_in_specific_zone(self.object) then
        self.st.blowout = true
    else
        self.st.blowout = false
    end
    return self.st.blowout == true
end

function evaluator_blowout:evaluate()
    if not self.object:best_enemy() and 
       db.Flag2==1 and db.Dead2==0 and 
       not (level.name()=="l08_generators" and self.object:character_community() == "monolith") and
       not is_in_hide(self.object) and not is_in_specific_zone(self.object) then
        self.st.blowout = true
    else
        self.st.blowout = false
    end
    return self.st.blowout == true
end

Тут тоже не особо понимаю, просто сменил локацию.

ogsm_surge.script:
 

function hit_actor()

local psy_hit = hit()
psy_hit.direction = vector():set(0,0,0)
psy_hit.impulse = 0
psy_hit.draftsman = db.actor

if level.name() == "l01_escape" then
    psy_hit.power = 0.0005
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l02_garbage" then
    psy_hit.power = 0.0008
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l03_agroprom" then
    psy_hit.power = 0.001
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l04_darkvalley" then
    psy_hit.power = 0.0012
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l05_bar" then
    psy_hit.power = 0.0015
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l06_rostok" then
    psy_hit.power = 0.002
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
end

if level.name() == "l08_yantar" then
    psy_hit.power = 0.003
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
    psy_hit.power = 0.0001
      psy_hit.type = hit.shock
    db.actor:hit(psy_hit)
end

if level.name() == "l07_military" then
    psy_hit.power = 0.005
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
    psy_hit.power = 0.0002
      psy_hit.type = hit.shock
    db.actor:hit(psy_hit)
end

if level.name() == "l10_radar" then
    psy_hit.power = 0.008
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
    psy_hit.power = 0.0004
    psy_hit.type = hit.shock
    db.actor:hit(psy_hit)
end

if level.name() == "l11_pripyat" then
    psy_hit.power = 0.01
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
    psy_hit.power = 0.0007
    psy_hit.type = hit.shock
    db.actor:hit(psy_hit)
end

end

 

function hit_actor()

local psy_hit = hit()
psy_hit.direction = vector():set(0,0,0)
psy_hit.impulse = 0
psy_hit.draftsman = db.actor

if level.name() == "l04_swamp" then
    psy_hit.power = 0.15
    psy_hit.type = hit.radiation
    db.actor:hit(psy_hit)
    psy_hit.power = 0.15
    psy_hit.type = hit.shock
    db.actor:hit(psy_hit)
end

end


Ну тут понятно - наносится урон при выбросе вне укрытия. Убрал лишние, добавил своё.
 

function proceed_art_spawn(section, count)

local lv

local level_vertexes={
l01_escape = {lvid=595580, gvid=44},
l02_garbage = {lvid=384039, gvid=265},
l03_agroprom = {lvid=438379, gvid=693},
l04_darkvalley = {lvid=392517, gvid=813},
l05_bar = {lvid=99538, gvid=1233},
l06_rostok = {lvid=69283, gvid=1311},
l07_military = {lvid=915663, gvid=1546},
l08_yantar = {lvid=141470, gvid=1438},
l10_radar = {lvid=796328, gvid=1868},
l11_pripyat = {lvid=295965, gvid=2269}
}

if level.name() == "l07_military" or level.name() == "l10_radar" then lv = 200000 + math.random(-100000,100000)
else lv = math.random(level_vertexes[level.name()]["lvid"]) end

local gv = level_vertexes[level.name()]["gvid"]

for ind = 1, count do
    alife():create(section, level.vertex_position(lv), lv, gv)
end

end
 

function spawn_arts()
local level_name = level.name()

if level_name ==  "l01_escape" then
    proceed_art_spawn("af_medusa", 1)
    proceed_art_spawn("af_vyvert", 1)
    proceed_art_spawn("af_blood", 1)
    proceed_art_spawn("af_electra_sparkler", 1)
end

if level_name ==  "l02_garbage" or level_name ==  "l03_agroprom" then
    proceed_art_spawn("af_cristall_flower", 1)
    proceed_art_spawn("af_gravi", 1)
    proceed_art_spawn("af_rusty_thorn", 1)
    proceed_art_spawn("af_mincer_meat", 1)
end

if level_name ==  "l04_darkvalley" then
    proceed_art_spawn("af_dummy_glassbeads", 1)
    proceed_art_spawn("af_electra_flash", 1)
    proceed_art_spawn("af_fuzz_kolobok", 1)
    proceed_art_spawn("af_fireball", 1)
end

if level_name ==  "l05_bar" or level_name ==  "l06_rostok" then
    proceed_art_spawn("af_dummy_pellicle", 1)
    proceed_art_spawn("af_ameba_slime", 1)
    proceed_art_spawn("af_soul", 1)
    proceed_art_spawn("af_rusty_kristall", 1)
end

if level_name ==  "l07_military" then 
    proceed_art_spawn("af_dummy_battery", 1)
    proceed_art_spawn("af_rusty_sea-urchin", 1)
    proceed_art_spawn("af_electra_moonlight", 1)
    proceed_art_spawn("af_ameba_slug", 1)
end

if level_name ==  "l08_yantar" then
    proceed_art_spawn("af_dummy_battery", 1)
    proceed_art_spawn("af_dummy_dummy", 1)
    proceed_art_spawn("af_night_star", 1)
    proceed_art_spawn("af_gold_fish", 1)
end

if level_name ==  "l10_radar" then
    proceed_art_spawn("af_dummy_spring", 1)
    proceed_art_spawn("af_rusty_sea-urchin", 1)
    proceed_art_spawn("af_electra_moonlight", 1)
    proceed_art_spawn("af_ameba_mica", 1)
end

if level_name ==  "l11_pripyat" then
    proceed_art_spawn("af_dummy_spring", 1)
    proceed_art_spawn("af_night_star", 1)
    proceed_art_spawn("af_dummy_glassbeads", 1)
    proceed_art_spawn("af_fuzz_kolobok", 1)
end
 
end

 

function proceed_art_spawn(section, count)

local lv

local level_vertexes={
l04_swamp = {lvid=370218, gvid=198}
}

if level.name() == "l01_dead_city" or level.name() == "l02_yantar" then lv = 200000 + math.random(-100000,100000)
else lv = math.random(level_vertexes[level.name()]["lvid"]) end

local gv = level_vertexes[level.name()]["gvid"]

for ind = 1, count do
    alife():create(section, level.vertex_position(lv), lv, gv)
end

end


-- Вызов спавна артефактов для каждого уровня
function spawn_arts()
local level_name = level.name()

if level_name ==  "l04_swamp" then
    proceed_art_spawn("af_lil_sun", 1)
end
 
end

 

Тут как понимаю, спавнятся артефакты. Удалил лишнее. В строке if level.name() == "l01_dead_city" or level.name() == "l02_yantar" then lv = 200000 + math.random(-100000,100000) поменял локации, но не понимаю что означает функция.


 

 

function update_surge()
local level_name = level.name()
if (level_name ~= "l03u_agr_underground") and (level_name ~= "l08u_brainlab") and (level_name ~= "l10u_bunker") and (level_name ~= "l04u_labx18") and (level_name ~= "l12u_sarcofag") and (level_name ~= "l12u_control_monolith") and (level_name ~= "l12_stancia") and (level_name ~= "l12_stancia_2") then

db.FlagEsc = 0

if level_name == "l01_escape" then
    if actor_in_zone(-211,-198,-132,-125,-23,-20) == 1 or            -- Подвал 1 в лагере новичков
       actor_in_zone(-256,-246,-137,-132,-25,-20) == 1 or            -- Бункер Сидора
       actor_in_zone(-216,-209,-133,-120,-24,-20) == 1 then        -- Подвал 2 в лагере новичков
        db.FlagEsc = 1
    end
end

if level_name == "l02_garbage" then
    if actor_in_zone(-112,-57,-6,25,-9,90) == 1 then            -- Ангар на Свалке
        db.FlagEsc = 1
    end
end

if level_name == "l03_agroprom" then
    if actor_in_zone(-198.31,-195.66,85.4,96.54,2,5.3) == 1 then    -- Вагон дезертира
        db.FlagEsc = 1
    end
end

if level_name == "l04_darkvalley" then
    if actor_in_zone(30,50,-60,-25,-4,0) == 1 then                -- Тюрьма в Темной долине
        db.FlagEsc = 1
    end
end

if level_name == "l05_bar" then
    if actor_in_zone(123,140,18,30,-6,0) == 1 or                 -- Бар
       actor_in_zone(206,213,50,68,0,4) == 1 or                 -- Магазин Петренко
       actor_in_zone(149,158,67,74,0,4) == 1 or                 -- Приемная Арни
       actor_in_zone(136,168,73,134,-22,-10) == 1 or            -- Арена
       actor_in_zone(208,234,120,139,-6,2) == 1 then            -- База Долга
        db.FlagEsc = 1
    end
end

if level_name == "l06_rostok" then
    if actor_in_zone(-90,-87,125,151,0,6) == 1 or                -- Блокпост наемников
       actor_in_zone(-285,-235,78,112,-7,0) == 1 then            -- Тоннель Фримена
        db.FlagEsc = 1
    end
end

if level_name == "l07_military" then
    if actor_in_zone(-27,-16,-33,-14,-9,0) == 1 then             -- База Свободы
        db.FlagEsc = 1
    end
end

if level_name == "l08_yantar" then
    if actor_in_zone(23,40,-282,-269,-16,0) == 1 or                -- Бункер ученых
       actor_in_zone(-265,-22,-218,-6,-20,-11) == 1 then            -- Кишка
        db.FlagEsc = 1
    end
end

if level_name == "l10_radar" then
    if actor_in_zone(639,664,167,189,-45,-37) == 1 or            -- Секретная база Монолита
       actor_in_zone(86.73,153,-27,-21.70,-10,-4.6) == 1 then        -- Вход в бункер
        db.FlagEsc = 1
    end
end

if level_name == "l11_pripyat" then
    if actor_in_zone(-18,-12,58,82,-6,-3) == 1 or                 -- Подземный переход
       actor_in_zone(167,173,58,83,-6,-3) == 1 or                 -- Подземный переход
       actor_in_zone(-16,-2,188,204,-5,0) == 1 or                -- Подвал ДК
       actor_in_zone(-24,55,116,122,-4,0) == 1 then                -- Канализация
        db.FlagEsc = 1
    end
end


for k,v in pairs(ogsm_hideout.restrictor_list) do
    local obj = level.object_by_id(v.id)
    if obj and utils.npc_in_zone(db.actor, obj) then
        db.FlagEsc = 1
    end
end

if db.Dead2 == 1 and db.FlagEsc == 0 then
    g_R_Vibros:Run()
    hit_actor()
    play_sounds()
    level.add_pp_effector("dead_zone.ppe", 1001, false)
    level.set_pp_effector_factor(1001, 0.2)
end

if db.FlagEsc == 1 then
    g_R_Vibros:Stop()
end

end
end

 

function update_surge()
local level_name = level.name()
if (level_name() ~= "l01_dead_city") and (level_name() ~= "l02_yantar") and (level_name() ~= "l03_bar") and (level_name() ~= "l05_military") and (level_name() ~= "l06_milrad") and (level_name() ~= "l07_radar") and (level_name() ~= "l08_generators") then

db.FlagEsc = 0

--if level_name == "l01_escape" then
--    if actor_in_zone(-211,-198,-132,-125,-23,-20) == 1 or            -- Подвал 1 в лагере новичков
--       actor_in_zone(-256,-246,-137,-132,-25,-20) == 1 or            -- Бункер Сидора
--       actor_in_zone(-216,-209,-133,-120,-24,-20) == 1 then        -- Подвал 2 в лагере новичков
--        db.FlagEsc = 1
--    end
--end
end


for k,v in pairs(ogsm_hideout.restrictor_list) do
    local obj = level.object_by_id(v.id)
    if obj and utils.npc_in_zone(db.actor, obj) then
        db.FlagEsc = 1
    end
end

if db.Dead2 == 1 and db.FlagEsc == 0 then
    g_R_Vibros:Run()
    hit_actor()
    play_sounds()
    level.add_pp_effector("dead_zone.ppe", 1001, false)
    level.set_pp_effector_factor(1001, 0.2)
end

if db.FlagEsc == 1 then
    g_R_Vibros:Stop()
end

end
end

Здесь... Наверное, зоны в которых выбросы не могут быть вызваны, тоже самое с локациями. Зоны - убрал, локации - поменял.
Вот и всё. Надеюсь, вы дочитали) В игре вот такое(смотрите фото):
Что не так сделал?
Ссылка на файлы(оригинал и правки): https://yadi.sk/d/pWDJ8xF53aAHvJ

ss_houdini_08_12_18_21_27_09_l04_swamp.j

Изменено пользователем Houdini_one

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
В 12.08.2018 в 14:12, Houdini_one сказал:

Можно как-то перенести из ЧН функцию которая отменяет задание?

И ещё можно как-то закрыть переходы до получения инфопоршня?

Как уже выше сказали, именно "отменить" нельзя, но если не принципиально - то просто провалить его, выдав\выполнив заранее прописанную в условиях задания инфо-порцию\ф-цию.

"Закрыть" переход в общем не сложно - сложно сделать так, чтоб ГГ не мог пройти через отключенный переход. А то за ними обычно край локации\террейна, со всеми вытекающими...

Ссылка на комментарий
1 час назад, AndreySol сказал:

сложно сделать так, чтоб ГГ не мог пройти через отключенный переход

Телепорт в подземелье с мутантами - не?

Ссылка на комментарий
1 час назад, AndreySol сказал:

ГГ не мог пройти через отключенный переход

Если смотреть как сделано в ЧН, его возвращает назад на way-point, по типу того если отказываешься перейти на другую локацию, тебя разворачивает в другую сторону. Да и закрыть отключённый переход я могу - в сдк тоже работаю. Но в приоритете это конечно же есть ли возможность отключить этот переход, чтобы потом он включился, вот.

 

1 час назад, AndreySol сказал:

провалить

Всё же провалить это не совсем то. Даже в некоторых модах которые восстанавливают старый сюжет такой забавный случай который меня всегда бесил: ГГ узнаёт от Доктора что он Стрелок, задание проваливается, хотя по сути оно отменяется, ведь если после этого гг себя, хм, застрелит - то задание выполнено. Вот. Ну это уже рассуждения, а тут такого не любят. Нельзя так нельзя, будем ограничиваться чем есть...

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
20 часов назад, Houdini_one сказал:

Адаптирую blowout mod 1.0:

К чему адаптируете? У меня такое как на ваше скриншоте было когда я адаптировал выброс к РМА моду, как оказалось - в РМА есть скрипт восстановления солнца, в выбросе он то же есть и они конфликтуют. Отключение онного в РМА решило проблему.:az1000106:

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

Здрасьте.

 

В каком файле описан счетчик предметов в инвентаре (число в левом верхнем углу каждой клетки) и можно ли в ТЧ сделать подложку для счетчика как в ЧН/ЗП?

 

https://c2.staticflickr.com/2/1779/42207967150_76edaa9e60_o.png

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
3 часа назад, UriZzz сказал:

К чему адаптируете?

К себе в мод) Удалил строку восстановления солнца, теперь начало вылетать, на форуме не нашёл ничего общего:


Expression    : fatal error
Function      : CEnvironment::SetWeather
File          : E:\stalker\sources\trunk\xr_3da\Environment.cpp
Line          : 151
Description   : <no expression>
Arguments     : ! Empty weather name

Перевёл в гугле: "Название пустой погоды".
Только я не совсем понял что оно означает... Погода норм работала до этого. Есть у кого мысли?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
2 часа назад, Norman Eisenherz сказал:

подложку

Убрать альфа канал скорее всего нужно, либо же добавить подкладку. Смотри в папке textures\ui, найдёшь файл нужный.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

1. Нужная текстура – "ui_grid.dds", но изменения отображаются позади предметов и в каждой ячейке, что не подходит для предметов с габаритами больше 1x1.

2. Где-то в "config\ui\" должен быть этот счетчик, но в какой секции – не знаю. Менял цвет всего текста в "config\ui\inventory_new.xml" и "maingame.xml" – текст счетчика все равно белый.

 

Кто-нибудь пытался такое изменение вносить?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
2 hours ago, lordmuzer said:

Для ТЧ это нельзя поменять. В движке просто текст выводиться поверх ячейки.

Ну, это тоже полезная информация.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
6 часов назад, Houdini_one сказал:

Удалил строку восстановления солнца, теперь начало вылетать

Прекрасно, а теперь верните его назад.

Что бы узнать какой скрипт восстановления солнца задействован нужно заглянуть в bind_stalker.script, строчка on_game_load(obj) чи как то так, должен быть прописан ogsm_funcs.on_game_load(obj)  по моему так прописано я точно не помню, все по памяти пишу.

Второе: файл game_tutoreals в самом низу посмотри - что написапо <function_on_stop>***.set_sun</function_on_stop>.

Изменено пользователем UriZzz

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий
13 часов назад, AndreySol сказал:

сложно сделать так, чтоб ГГ не мог пройти через отключенный переход.

Можно костылем. Создать рестриктор, накрывающий область перехода и до открытия перехода телепортировать ГГ в точку перед рестриктором.

  • Согласен 1

Сталкер - наше всё!

Ссылка на комментарий
1 час назад, AndrewMor сказал:

костылем

А можно ещё чтобы текст вылез наверху экрана?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
3 часа назад, UriZzz сказал:

верните его назад

Да я свой и удалил если что.

 

3 часа назад, UriZzz сказал:

game_tutoreals

Вот тут поставил из ogsm, было от погодного пака.
Поправил вылеты, запустилось! Начался выброс, все начали прятаться, но вот, я то спрятался - а нпс видимо как-то иначе воспринимают укрытия.
Вот моё укрытие:


 


-- First run spawn. If parameter p_type is "fake_" - it means that the hide is fake - it is only for actor
-- NPCs ignore such fake hides
function first_run()

------------------
-- Swamp Hides --
------------------

-- Дом Доктора
spawn_restrictor("l04_swamp", vector():set(192.7744140625,2.8159973621368,-39.758411407471), 370218, 198, "stalker", 4)

end


Нпс хоть и в укрытии, но он падает держась за голову... Что-то ещё не так наверное.
Вы добавляли себе укрытие?(В РМА и другие же локации есть). Куда добавляли, помните?
Интересует что тут:
function is_in_specific_zone(npc)
--    if npc_in_zone(npc,"l01_escape",-256,-246,-137,-132,-25,-20) then        -- Бункер Сидора
--        return true
    end

И тут:
function is_in_hide(npc)
--    if npc_in_zone(npc,"l01_escape",-211,-198,-132,-125,-23,-20) then     -- Подвал 1 в лагере новичков
--        return true
--                end
--    else
--                    end
--        local hide = get_nearest_hide(npc)
--        if hide then
--            if utils.npc_in_zone(npc, hide.obj) then
--                return true
--            end
--        end
--    end
--    return false
end
Особенно цифры, ибо их тут 6.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@Houdini_one, конечно можно. Создать статик вверху экрана и из логики рестра вызвать функцию показа статика.

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, а вот надписи "Задание провалено", "Нет текущего задания" - это тоже статики или всё-таки текст выводится?

Ссылка на комментарий
53 минуты назад, Houdini_one сказал:

Вы добавляли себе укрытие?(В РМА и другие же локации есть). Куда добавляли, помните?

К сожалению пока нет, сборка сейчас в состоянии доводки но вы явно чего то не добавили, тут надо мод более плотно изучать.

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

В дверь не пускают, пришлось заходить через сад… Способ не самый "прямой", но рабочий (арты подкрашены для заметности – это другая проблема):

https://c2.staticflickr.com/2/1813/43978304242_98a903e246_o.png.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

AMK-Team.ru

×
×
  • Создать...