Перейти к содержанию

NewValveCom

Разработчики
  • Публикаций

    94
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные NewValveCom


  1. Нашей командой принято решение о создании собственного Discord-сервера.
    Все источники информации, новости и т.д. про наши модификации вы можете узнать здесь, а на Discord-сервере возможно будут некоторые эксклюзивы. Ждём вас.
    Найти сервер можно в шапке темы по Catalyst: Gray в спойлере Наши источники.

     


  2. Нашей командой принято решение о создании собственного Discord-сервера.
    Все источники информации, новости и т.д. про наши модификации вы можете узнать здесь, а на Discord-сервере возможно будут некоторые эксклюзивы. Ждём вас.
    Найти сервер можно в шапке темы в спойлере Наши источники.

    • Мастер! 1

  3. 3 минуты назад, denis2000 сказал:

    NewValveCom Зачем проигрывать звук в позиции ГГ и при этом регулировать громкость, если есть возможность играть звук от позиции любого объекта и звуковой движок будет настраивать не только его громкость в зависимости от расстояния корректно но и направление на звук!?

    У меня это не подвязано ни под один объект, и звук должен быть type = actor, т.е. звук должен быть технически внутри головы актора.
    Но если можно - можно подсказать в каких скриптах и функциях это искать?


  4. Приветствую, хочу реализовать увеличение звука в зависимости от прбилижении актора к центру рестриктора (т.е. чем ближе игрок к центру, тем сильнее звук). Аналогичное есть в ТЧ (если мне память не изменяет) когда чем ближе актор к центру пси-излучения, тем сильнее звук пси, но в ЗП такого не вспомню.
    Накидал набросок скрипта:
     

    Спойлер

    function sr_radio_noise(actor, npc, p)
        if not actor then return end

        if not sr_radio_noise_snd then
            sr_radio_noise_snd = sound_object("radio_noise")
            sr_radio_noise_snd:play_at_pos(actor, actor:position(), true)
            sr_radio_noise_time = time_global()
        end

        local pos = actor:position()

        local min_dist = 99999
        for _, center in pairs(sr_radio_noise_centers) do
            local d = pos:distance_to(center)
            if d < min_dist then
                min_dist = d
            end
        end

        local max_dist = 20.0
        local base_volume = 0.15
        local time_gain = 0.0003

        if min_dist > max_dist then
            sr_radio_noise_snd:set_volume(0)
            return
        end

        local k = 1 - (min_dist / max_dist)
        k = math.max(0, math.min(1, k))

        -- 6. наростання з часом (сюжетний гул)
        local time_factor = (time_global() - sr_radio_noise_time) * time_gain

        local volume = base_volume + (k * k) + time_factor
        volume = math.min(volume, 1.0)

        sr_radio_noise_snd:set_volume(volume)
    end
     

    Не прошу полностью помогать, хочу лишь узнать шаги к выполнению и устранению ошибок, которые могут быть. Или же просто как интерпретировать звук а-ля "пси-излучение" в центре рестриктора.
    Заранее благодарю!


  5. В 31.12.2025 в 21:43, Anterselva сказал:

    Не знаю как некоторые тянут такой обьём работ столько лет.Флаер за 10 лет разработки совсем перегорел и временно ушёл в себя (надеюсь вернётся - очень жду)

    Как я и упоминал в своём посте: 

    В 31.12.2025 в 01:02, NewValveCom сказал:

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

    Я совру если скажу, что объем работ у нас аналогичный подобным модам. У нас мод (с моей субъективной и технической точки зрения) не отличается от многих других. Но естественно будет то, что не во всех модах увидишь. Поэтому не буду скрывать - очень сильная фобия, которая усиливается с каждым днём: коментарии рода "ждали 5-6 лет, а получили 6-7 часов" и подобное. И это тоже угнетает. Поэтому Флаера в такой ситуации понимаю прекрасно. Сам ждал ОЛР 3.0. всю свою "карьеру игрока в моды" (с 2015). И поэтому продолжаю ждать Semi-Official Patches, ибо лично в фулл релиз не верю...
    Как-то так. 

    • Мастер! 2

  6. Приветствую всех сталкеров и всех, кто ожидает новостей от команды NVC Tech, которая известна модификацией Catalyst: Complementation.

    Во-первых, хочу поздравить всех с наступающим Новым Годом!

    И во-вторых, хочу изложить, почему я выхожу на связь вообще. На это меня вдохновил разработчик модификации Half-Life: Decay Solo Mission, история разработки которой местами коррелируется с разработкой нашего мода.

    Та и всегда от моего лица и от своего говорил Vlador, который если проводить аналогии с «Игрой в Кальмара» — является фронтменом модификации, а я тот, кто создаёт и собирает это всё.

    Я хочу извиниться перед всеми, кто ждёт от нас Catalyst: Gray уже такое долгое время. Первый мод мы сумели сделать за 2 с копейками года. Второй же делается почти вдвое дольше, и, казалось бы, что такой мод должен быть уровня Смерти Вопреки или что-то наподобие, но сразу скажу, что нет.

    Я полностью отдаю себе отчёт, что в большей части в торможении разработки модификации виноват лично я. В то время, когда Vlador как Сизиф, толкающий камень к горе, пытается делать что угодно чтобы модификация жила.

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

    Спойлер

    В этом году в ходе тестирования модификации мы обнаружили ошибку, которая стопорила разработку банально из-за того, что из-за неё невозможно идти дальше по сюжету. При том что у меня всё было в порядке, а у Vlador'а нет. Это усугубило проблему, т. к. мы не могли установить причину оной. Обострило ситуацию то, что наш хороший друг imcrazyhoudini тоже не имел никаких проблем. По итогу дальнейшее тестирование не предоставлялось возможным, т. к. за сценарий отвечает именно Vlador, и именно он больше ориентируется в том, какие недочёты нужно исправить. На выявление причины ошибки у нас ушло по сути полгода. Причина поломки (которую мы уже устранили) до ужаса банальная. Даже стыдно говорить о ней, поэтому об этом умолчу.

    За всё время разработки модификации я пережил достаточное количество событий в своей жизни, которые произошли уже после релиза Catalyst: Complementation. Как хороших, так и плохих.

    В этом же году, вместе с поломкой модификации, наложился рецидив (у меня клинически диагностированы депрессия и ОКР), а кроме того, были проблемы личного характера, частые отключения света, завал учёбой (уже выпустился) и прочие неприятные вещи, которые усугубили мою менталку, скажем так. И как раз непонятная поломка мода усугубила ситуацию в разработке — можно сказать, что за эти 7 лет разработки модификаций я выгорел. Уже знаю всю подноготную разработок модификаций на Сталкер, когда ошибки могут появляться на ровном месте. С Catalyst: Complementation было так же — было кучу ошибок, из-за чего в нашей команде этот мод называют чуть ли не проклятым. 30 ноября 2020 года мы по итогу выпустили мод, но некоторые ошибки в нём ещё остались. В глобальном обновлении 1.1 мы стараемся исправить если не все, то большинство ошибок + появятся нововведения, которые должны приятно удивить.

    Но и не скрою, что в этом году также были и хорошие моменты — путешествия, конец учёбы, налаживание личной жизни и т. д.

    По сути, сейчас вроде всё хорошо, но когда ты полгода буквально не пилил мод, а пытался искать причину неполадок — к привычной системе разработки сложно возвращаться, особенно такому человеку как я, хотя по итогу рано или поздно вернусь к ней уже полноценно. Уже многое сделано чтобы говорить о каком-то закрытии мода — об этом не может быть и речи.

    Скажу, что я мечтал (а возможно и до сих пор мечтаю) о том, чтобы после Catalyst: Gray выпустить ещё две модификации. Одна из них — часть трилогии Catalyst уже под моим сценарием (в прошлых двух частях сценарий был не мой), а вторая — спин-офф к трилогии. И у меня есть идеи. Третий «Каталист» немного разрабатывался, чтобы отвлечься от Catalyst: Gray, а также проверить свои навыки в сценарном плане. Относительно спин-оффа также есть идеи, хотя в его разработку я уже практически не верил. Этот мод также может стать ответвлением к ещё одной известной серии модов, которая многим из вас известна. Поэтому мотивации стало больше, но хватит ли её надолго? С другой стороны, с каждым днём на фоне всего этого я всё больше осознаю, что Catalyst: Gray может стать последним нашим модом. У каждого в нашей команде уже устроена своя жизнь, в которой времени на разработку модификаций становится всё меньше и меньше (мы разрабатываем только в режиме свободного времени). И если мы возьмёмся за ещё одну модификацию, которая будет по хронометражу банально каких-то 6 часов, а её разработка займёт 5 лет — это никого не устроит, ни нас, ни игроков. Я не могу сказать, что мы устали от самой разработки модификации. Мы устали от самих себя. И вся команда устала из-за меня. Поэтому после релиза Catalyst: Gray мы будем наблюдать по ситуации, и как только появятся какие-то новости — сразу оповестим.

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

    Вкратце скажу, что у нас идёт поэтапное тестирование модификации и её шлифовка: собирается документ по багам, недочётам и желательным исправлениям по секциям сюжета. Первая треть сюжета готова практически полностью и проходится без проблем, тогда как весь остаток контента требует существенных доработок и полировки. Если проводить простую аналогию, то это мясо на скелете: оно есть, но ему нужно придать форму мышц. После того, как мы до конца прорастим мясо, сможем приступить к косметической части, то бишь к прокачке мышц. Только в таком случае мы сможем получить ориентировочные сроки выпуска, о которых, конечно же, оповестим публично.

    У Catalyst: Complementation 1.1 дела же более радужные: обновление по большей части уже готово (если говорить за исправление того, что уже сделано), однако имеются планы по добавлению нового контента, который тоже нужно тестировать и исправлять. Даже при полной готовности он не получит быстрого релиза, поскольку он специально запланирован незадолго до выпуска Catalyst: Gray.

    Поэтому как-то вот так. Хочу поблагодарить вас за ожидания и желаю вам чтобы жизненные проблемы обходили вас стороной.

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

    Catalyst: Gray выйдет, это вопрос времени. Спасибо за то, что ожидаете!

    До скорых встреч!

    P. S. нам всё ещё требуется помощь в разработке (подробнее в посте выше).

    Спойлер

    Catalyst: Gray

    ss-newvalvecom-07-27-24-00-25-03-way-in-

    ss-newvalvecom-07-14-24-00-09-53-way-in-

    S-T-A-L-K-E-R-Call-of-Pripyat-Screenshot

    Catalyst: Compementation 1.1

    photo-2025-12-29-22-46-37.jpg

    Третий мод серии «Catalyst»

    photo-2025-12-27-01-10-58.jpg

     

    • Лайк 7
    • Жму руку 1
    • Аплодисменты 1
    • Хабар 2

  7. 1. Не знаю как у многих, но у меня (что есть и в первом моде) проблемы с реакцией вражеских НПС. Когда они видят врага (тоесть актора), то они очень поздно это осознают, актор успеет их перестрелять. Т.е. враги не сразу стреляют, когда видят актора. Есть ли способ ускорить их реакцию.
    2. Как сделать так, чтобы НПС не трогали двери? Нужно через двери провести весь сквад, а один НПС закрывает за собой дверь, и после этого все стопорятся + как сделать так, чтобы двери открылись, и не закрывались вообще.
    Заранее благодарю за ответ.


  8. 7 часов назад, denis2000 сказал:

    NewValveCom Естественно! В колбэк передается объект с которым взаимодействуют, а в функции вы вольны делать все, что нужно: проверять что это за НПС, жив он или мертв, выдавать\забирать инфопорции и тд. и тп.

    Не хочу утруждать, уж извиняюсь, но помимо этого имею ещё некоторые вопросы.
    1. Мне нужно, чтобы в конкретный момент у НПС не открывался инвентарь, а просто срабатывал инфопоршень, по аналогии с обджектами.
    2. Всё это дважды, один раз после получения первого поршня, второй раз аналогично после второго.

    Пытаюсь делать как-то так, но не срабатывает (я не совсем опытен в скриптах, хотя пытаюсь что-то двигать):

    Спойлер

    function motivator_binder:use_callback(obj, who)
        printf("motivator_binder:use_callback(obj, who)")
        if self.object:alive() then
            inventory_upgrades.need_victim(obj)
            xr_meet.notify_on_use(obj, who)
            dialog_manager.disabled_phrases[obj:id()] = nil
            if self.st.active_section then
                xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
            end
        if not obj:alive() then
            local name = obj:name()
            if name == "stalker_first_ioltuhin" then
            get_console():execute("fov 50")
            end
        end
    end
    end

     


  9. 7 часов назад, denis2000 сказал:

    xr_motivator.script функция motivator_binder:use_callback вызываеться при каждом использовании НПС или их трупов.

    Тогда возникает другой вопрос. НПС, на труп которого нужно навести прицел. С ним игрок будет взаимодействовать, когда этот НПС ещё будет жив. Можно ли сделать чтобы инфопоршень проигрывался строго на трупе (условие что нпс мёртв).


  10. Возможно ли
    1. Выдать инфопоршень при наведении курсора и нажатии на f (по аналогии с обджектами) на труп НПС.
    2. Выдать инфопоршень при аналогичном действии, но на пустую землю (или же рестриктор или невидимый обджект) и т.д.
    Если нет, какие есть альтернативы?


  11. В 07.03.2025 в 18:05, Mass сказал:

    Она тут ни причём. Нужно смотреть планировщик и экшен

    Как я попытался понять - вы имеете ввиду скрипт в state_lib, вот:
     

    Спойлер

        knife_fire = { weapon = "fire",
                    weapon_slot = 1,
                    movement = move.run,
                    mental = anim.danger,
                    bodystate = move.standing,
                    animstate = nil,
                    animation = nil
                },

    Авторство скрипта не моё (взято из Время Альянса), но использовал в прошлом моде, где всё работало как часы, а тут...
    Может ли движок OpenXRay быть причиной?


  12. 2 часа назад, Mass сказал:

    Она тут ни причём. Нужно смотреть планировщик и экшен

    Впервые слышу об этих терминах в моддинге, в котором стараюсь что-то делать уже 7 лет).
    Можете подсказать?


  13. 2 часа назад, Mass сказал:

    NewValveCom Возможно схема meet перебивает схему боя. В планировщике точно всё добавили?

    Удалил секцию meet - не помогло.
    По скриптам анимаций, самих функций боя с ножем я всё добавил.


    Дополнено 44 минуты спустя

    Насчёт планировщика.
    Вот биндер в xr_combat.script

    Спойлер

    ----------------------------------------------------------------------------------------------------------------------
    -- binder
    ----------------------------------------------------------------------------------------------------------------------
    function add_to_binder(npc, ini, scheme, section, storage)
        local manager = npc:motivation_action_manager()

        manager:add_evaluator( xr_evaluators_id.script_combat, this.evaluator_check_combat("script_combat",storage) )

        local action = manager:action(stalker_ids.action_combat_planner)
        action:add_precondition(world_property(xr_evaluators_id.script_combat, false))

        xr_combat_zombied.add_to_binder ( npc, ini, storage, manager )
        xr_combat_camper.add_to_binder  ( npc, ini, storage, manager )
        
    ---------------------------------------------------------------------------------------------------
        xr_combat_knife.add_to_binder ( npc, ini, storage, manager )
    ---------------------------------------------------------------------------------------------------
    end

     


  14. С out_of_frustrum разобрался. Нужно было в ещё один скрипт функцию вписать (о чём я не сразу подумал).
     
    Сделал скрипт на смену текстуры мапы ПДА во время нахождения актора в зоне.
     

    Спойлер

    function on_info(info_id)
        if xr_conditions.actor_in_zone(actor, nil, {"tonneled"}) then
            if info_id == "ui_pda" then
                level.start_stop_menu(level.main_input_receiver(), true)
            elseif info_id == "ui_pda_hide" then
                level.start_stop_menu(PdaNoiseWnd(), true)
            end
        end
    end

    class "PdaNoiseWnd" (CUIScriptWnd)
    function PdaNoiseWnd:__init() super()
        self:Init(0,0,1024,768)
        self.ClickBtnExit = function() level.start_stop_menu(self, true) end
        
        self.noise = CUIStatic()
        self.noise:InitTexture("ui\\ui_no_signal")
        self.noise:SetOriginalRect(0,0,1024,768)
        self.noise:Init(3,20,891,643)
        self:AttachChild(self.noise)
    end

    function PdaNoiseWnd:OnKeyboard(dik, keyboard_action)
        CUIScriptWnd.OnKeyboard(self, dik, keyboard_action)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            if dik == DIK_keys.DIK_ESCAPE or dik == DIK_keys.DIK_P or dik == DIK_keys.DIK_H or dik == DIK_keys.DIK_M then
                self:ClickBtnExit()
            end
        end
        return true
    end
     

    По итогу безлоговый вылет. Буду благодарен, если подскажете, ГДЕ может быть ошибка.


    Дополнено 33 минуты спустя

    Также хочу дополнить.
    В прошлой модификации добавил функцию боя нпс с ножом.
    Всё было хорошо, но спустя время, перенеся в другой мод все необходимые файлы, скрипты, функции - нпс просто подходят к актору и... всё. С ножом по сути подходят к нему вплотную и ничего не делают.
    Все скрипты я кинул и зарегистрировал. Анимация knife_fire зарегистрировал в state_lib. 
    Что я упускаю?
     


  15. 6 часов назад, denis2000 сказал:

    Противоположная - это инверсия: not npc_in_actor_frustrum(npc)

    
    function npc_out_actor_frustrum(npc)
    	return not npc_in_actor_frustrum(npc)
    end


      

    Вешаю условие исчезновения сталкера после пропажи с поля зрения согласно скрипту - не работает.
     

    Спойлер

    [logic@stalker_noname]
    suitable = {=check_npc_name(stalker_noname)}
    active = walker@1
    prior = 200

    [walker@1] 
    path_walk = man_1_walk 
    on_info = {+noname_spawn} remark@1
    meet = no_meet

    [remark@1]
    target = story | actor
    on_info = {=npc_in_actor_frustrum} %+noname_frustrumed%
    on_info2 = {+noname_forgot} walker@2
    anim = wait
    meet = no_meet
    close_snd_hello = nil
    close_snd_bye = nil

    [walker@2] 
    path_walk = man_2_walk 
    on_info = {=npc_out_actor_frustrum} %=send_tip(test:got_duty_light_armor) =remove_npc%
    meet = no_meet 

     


  16. Возможно ли (не прошу сделать) сделать скрипт, противоположный npc_in_actor_frustrum?
    Т.е. выдать инфопоршень, когда НПС исчезает с поля зрения актора.
    Пытался сделать таким образом:
     

    Спойлер

    function npc_out_of_actor_frustrum(npc)
        local actor_dir = device().cam_dir
        local npc_dir = npc:position():sub(db.actor:position())
        local yaw = yaw_degree3d(actor_dir, npc_dir)
        news_manager.send_tip(db.actor, "g_man_ischez", nil, "seeker", nil, nil)
        return yaw > 35
    end

     


  17. 11 часов назад, Mass сказал:

    Как минимум, повесить их на схему walker с анимацией patrol

    Они в скваде?

    Да.
    Вешаю
     

    Спойлер

    [logic@zombie_5]
    suitable = {=check_npc_name(zombie_5)}
    active = walker@1
    prior = 200

    [walker@1]
    path_walk = zombie_5_walk
    def_state_standing = guard
    def_state_moving = patrol

    meet = no_meet

    [logic@zombie_6]
    suitable = {=check_npc_name(zombie_6)}
    active = walker@2
    prior = 200

    [walker@2]
    path_walk = zombie_6_walk
    def_state_standing = guard
    def_state_moving = patrol

    meet = no_meet

    Безрезультатно.
    В логике зомби лесопилке не нахожу подобных секций.


  18. Возможно ли зомбированным в их анимациях выдать оружие?
    Т.е. чтобы они сразу с ним в руках ходили, а не доставали.
    В скриптах анимаций перерыл всё что можно - не нахожу. В игре просто зомби стоят/ходят без ничего в руках, чего не должно быть.


  19. 17 часов назад, NewValveCom сказал:

    Пытаюсь разобраться уже не первое время (та и тут писал по-моему) насчёт того, что НПС роняют оружие и убегают.
    Как вообще вырезать возможность дропа оружия из рук НПС (в character_desc прописывал сколько хочешь кол-во патронов). Как я понял, роняют они оружие не (только) от того, что патроны кончаются, а при ранении и т.д.
    В скриптах в state_mgr пытался вырезать drop_weapon но не помогло.
    Кто может подсказать? Буду благодарен.

    Перетестировал после правок.
    С одним нпс (проблемы были у двух нпс) справился - с другим проблемы.
    Узнал, что нпс НЕ дропают оружие. Просто они меняют оружие когда выстреливают патроны, а когда в пистолете тоже кончаются патроны - нпс в панике убегает.
    Вывод - игра не спавнит патроны. 
    Конечно можно спросить "так заспавнь их в character_desc", но загвоздка в том, что я как раз их и спавню.
     

    Спойлер

    нпс, у которого не работает: 
    [spawn] \ n
                                                
                                                wpn_pm \n
                                                ammo_9x18_pmm = 3 \n
                                                wpn_vintorez = 1 \n
                                                ammo_7.62x54_7h1 = 3 \n
                                                medkit = 1 \n
                                                bandage = 2 \n
                                                bread = 1 \n
                                                kolbasa = 1 \n

    нпс у которого всё хорошо:
    [spawn] \ n
                                                
                                                medkit = 2 \n
                                                conserva = 1 \n
                                                wpn_bizon = 1 \n
                                                ammo_9x18_pmm = 3 \n
                                                wpn_aps = 1 \n
                                                vodka = 1 \n

    У тех НПС, у которых всё хорошо - бесконечное кол-во патронов. А у перса, у которого всё плохо - нет патронов. Игра будто просто не видит попытки заспавнить патроны.


  20. Пытаюсь разобраться уже не первое время (та и тут писал по-моему) насчёт того, что НПС роняют оружие и убегают.
    Как вообще вырезать возможность дропа оружия из рук НПС (в character_desc прописывал сколько хочешь кол-во патронов). Как я понял, роняют они оружие не (только) от того, что патроны кончаются, а при ранении и т.д.
    В скриптах в state_mgr пытался вырезать drop_weapon но не помогло.
    Кто может подсказать? Буду благодарен.


  21. 23 часа назад, Mass сказал:

    Ничего подозрительного не вижу. Объект точно берется под схему? С путями всё нормально? Тогда добавить в эвалуатор проверку по секции на отсечение заспавненного актора, если конечно секция не идентична ЗП

    С эвалуаторами не работал. Не могли бы приблизительно подсказать?


  22. Создаю кат-сцену с присутствием актёра.

    Во время спавна актёра - он подбирает лежащее рядом оружие, хотя прописываю, чтобы он этого не делал. Ткните пожалуйста где я что-то упускаю?

    Спойлер

    [logic]
    active = walker@wait

    [walker@wait]
    path_walk = actor_2_walk
    path_look = actor_2_look
    combat_ignore_cond = false
    combat_ignore_keep_when_attacked = true
    meet = no_meet
    on_info = {+info_for_scene_3} remark@actor_wait
    invulnerable = true
    help_wounded_enable = false
    out_restr = cutscene_ioltuhin
    gather_items_enabled = false
    corpse_detection_enabled = false

    [remark@actor_wait]
    combat_ignore_cond = true
    combat_ignore_keep_when_attacked = true
    meet = no_meet
    anim = search_corpse
    target = path | actor_2_look,0
    help_wounded_enable = false
    out_restr = cutscene_ioltuhin
    on_info = {+cutscene_ioltuhin_end} %=destroy_object%
    gather_items_enabled = false
    corpse_detection_enabled = false

     


  23. Создал скрипт записок: при использовании записки в инвентаре на экран выводится сама записка и две кнопки: Показать текст и выход.
     

    Спойлер

    class "catalyst_note" (CUIScriptWnd)
    show_text = false
    note_text_number = 1

    function catalyst_note:__init() super()
        self:InitControls()
        self:InitCallBacks()
    end

    function catalyst_note:__finalize()
    end

    function catalyst_note:InitControls()
        local xml = CScriptXmlInit()
        self:SetWndRect(Frect():set(0,0,1024,768))
        xml:ParseFile("catalyst_notes.xml")
        
        if note_text_number == 1 then 
            self.note_one = xml:InitStatic("note_one", self) 
        elseif note_text_number == 2 then 
            self.note_two = xml:InitStatic("note_two", self) 
        elseif note_text_number == 3 then 
            self.note_three = xml:InitStatic("note_three", self) 
        elseif note_text_number == 4 then 
            self.note_four = xml:InitStatic("note_four", self) 
        elseif note_text_number == 5 then 
            self.note_five = xml:InitStatic("note_five", self) 
        end

        self.main_text = xml:InitStatic("main_text", self)

        self.btn_show_text = xml:Init3tButton("btn_show_text", self)
        self:Register(self.btn_show_text, "btn_show_text")    

        self.btn_quit = xml:Init3tButton("btn_quit", self)
        self:Register(self.btn_quit, "btn_quit")
    end

    function catalyst_note:InitCallBacks()
        self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.click_quit, self)    
        self:AddCallback("btn_show_text", ui_events.BUTTON_CLICKED, self.click_show_text, self)    
    end

    function catalyst_note:click_show_text() 
        if note_text_number == 1 then 
            self.main_text:SetText("текст 1") 
        elseif note_text_number == 2 then 
            self.main_text:SetText("текст 2") 
        elseif note_text_number == 3 then 
            self.main_text:SetText("текст 3") 
        elseif note_text_number == 4 then 
            self.main_text:SetText("текст 4") 
        elseif note_text_number == 5 then 
            self.main_text:SetText("текст 5") 
        end
    end

    function catalyst_note:click_quit() 
        self:HideDialog()
    end

    function use_obj(obj)
        if not obj then
            return
        end
        
        local section = obj:section()
        
        if section == "zapiska_seni" then
            alife():create("zapiska_seni",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
            note_text_number = 1
            level.start_stop_menu(catalyst_note(), true)
        elseif section == "zapiska_shrumi_buhar" then
            alife():create("zapiska_shrumi_buhar",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
            note_text_number = 2
            level.start_stop_menu(catalyst_note(), true)
        elseif section == "zapiska_baza" then
            alife():create("zapiska_baza",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
            note_text_number = 3
            level.start_stop_menu(catalyst_note(), true)
        elseif section == "zapiska_rudolf" then
            alife():create("zapiska_rudolf",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
            note_text_number = 4
            level.start_stop_menu(catalyst_note(), true)
        elseif section == "zapiska_trio_genius" then
            alife():create("zapiska_trio_genius",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
            note_text_number = 5
            level.start_stop_menu(catalyst_note(), true)
        end
        
    end

    Есть три вопроса, как сделать следующее:
    1. Как закрыть инвентарь при использовании записки, и открыть обратно при закрытии записки.
    2. Как выдать инфопоршень при выходе из записки?
    3. Возможно ли затемнить фон при открытии записки? Если да, то подскажите пожалуйста как.
    Заранее благодарю.


  24. Можно ли выдать инфопоршень после просмотра через бинокль (или просто) в определенную точку?
    И возможно ли сделать временный источник звука? Чтобы на определенной локации всё время через loop играл звук, но после получения инфопоршня - исчезал. 

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования