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

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

@Manool То есть бег будет принудительно сбрасываться на шаг? И есть ли что то подобное для других состояний ? К примеру если нога очень сильно повреждена то гг даже ходить не сможет, а только в полный присяд( типо ползет ).

Изменено пользователем I am Dead

Подарки

  • 2
  • Ссылка на комментарий
    2 минуты назад, I am Dead сказал(а):

    о есть бег будет принудительно сбрасываться на шаг?

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

    3 минуты назад, I am Dead сказал(а):

    И есть ли что то подобное для других состояний

      -- Блокировка шага актора
      get_actor_obj().condition.cant_walk_power_begin = 1
      get_actor_obj().condition.cant_walk_power_end   = 1

    Кстати, все эти методы есть в lua_help к движку OGSR.

    • Спасибо 1
    Ссылка на комментарий

    Привет всем.

    Вопрос такой глупый:

    Допускается ли такое оформление условий определяющих значение переменной?

    Скрытый текст

    if uslovie_1 then

    var = 1

    elseif uslovie_2 then

    var = 2

    end

    function blablabla()

    if tratata == true then

    metod(var)

    end

    end

     

     

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

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

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

    UriZzz.gif

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

    @I am Dead То есть выше просто объявить local var ?

    Хм, надо будет потестировать, когда доберусь до компьютера.

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

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

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

    UriZzz.gif

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

    Здрасьте.

    Кто умеет читать C++, подскажите, что должен делать следующий код (платформа ЗП):

    Spoiler
    
    [xrGame\ui\UIComboBox.cpp]
    void CUIComboBox::disable_id(int id)
    {
        if(m_disabled.end()==std::find(m_disabled.begin(),m_disabled.end(),id))
            m_disabled.push_back(id);
    }
    
    void CUIComboBox::enable_id(int id)
    {
        xr_vector<int>::iterator it = std::find(m_disabled.begin(),m_disabled.end(),id);
    
        if(m_disabled.end()!=it)
            m_disabled.erase(it);
    }

     

     

    Ожидаемый результат: отключение и обратное включение строки с заданным id в выпадающем списке CUIComboBox().
    Видимый результат отсутствует: строка не удаляется и не становится неактивной, а методы CurrentID() и GetTextOf(id) дают старые значения при ее выборе.

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

    Шпаргалка

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

    @Norman Eisenherz , это работает только с комбо-боксами, используемыми для игровых опций. После disable/enable_id нужно вызвать SetCurrentOptValue - только там заполняется лист с проверкой по этому m_disabled.

    Изменено пользователем naxac
    • Нравится 1
    • Полезно 1

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

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

    Кто умеет читать C++

    :rolleyes:

    Добавляет / убирает id в список m_disabled. И собственно все, больше показанный код ничего не делает.

    А этот m_disabled уже в свою очередь, используется...

    36 минут назад, naxac сказал(а):

    для игровых опций. После disable/enable_id нужно вызвать SetCurrentOptValue - только там заполняется лист с проверкой по этому m_disabled.

    Но, никто не запрещает при желании, использовать этот же m_disabled где-нибудь еще и для чего-то более другого, для чего потребуется код свой написать.

    • Полезно 2

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Господа, вопрос к знатокам логики нпс. 

    1) Возможно ли в логике нпс вызвать скриптовую функцию? Например по сигналу. 

    2) логику же можно переключать в зависимости от инфопорций. А можно переключать логику в зависимости от какого нибудь скриптового прекондишена, как это сделано в диалогах, например? 


    Подарки

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

    Я тут снова по поводу боевой схемы БТРов... Немного, КМК, разобрался в её работе, в итоге в db.script:

    Скрытый текст

     

    creature = {} 
    monster_stock  = {}

     

    function add_obj( obj ) - корректно ли тут производится проверка и добавление сталкеров и монстров?
        if IsStalker(obj) then
            creature[obj:id()] = true
            monster_stock[obj:id()] = false
        elseif IsMonster(obj) then
            creature[obj:id()] = false
            monster_stock[obj:id()] = true
        end
    end

     

    function del_obj( obj )
        storage   [obj:id()] = nil
        if IsStalker(obj) or IsMonster(obj) then
            creature[obj:id()] = nil
        end
    end

     

     

    Собственно не очень красивая функция апдейта друзей и врагов в ph_car.script:

    Скрытый текст

     

    function action_car:update_friends_and_target()
            if self.st.fire_target == "monsters" then
                    for k in pairs(db.monster_stock) do
                local obj = level.object_by_id(k)
                    if obj and IsMonster(obj) and obj:alive() and self.car:IsObjectVisible(obj) then
                        self.target_obj = obj
                        self.state_firetarget = state_firetarget_enemy
                            end
                        end
                    end

     

            if self.st.fire_target == "stalker_group" then

            --for a=1,65534,1 do
            --local obj = level.object_by_id(a)
                    for k in pairs(db.creature) do
                local obj = level.object_by_id(k)

            if obj and IsStalker(obj) and obj:alive() and obj:character_community()=="stalker" and self.car:IsObjectVisible(obj) then
                        self.target_obj = obj
                        self.state_firetarget = state_firetarget_enemy
                            end
                        end
                    end
    end

     

     

    По ней такой вопрос...

     if obj and IsMonster(obj) and obj:alive() and self.car:IsObjectVisible(obj) then

     if obj and IsStalker(obj) and obj:alive() and obj:character_community()=="stalker" and self.car:IsObjectVisible(obj) then

    - тут вроде выделенные жирным проверки лишние? Ведь если объекты берутся из  for k in pairs(db.monster_stock) и  for k in pairs(db.creature) do, там же уже была соотв. проверка:

    function add_obj( obj )
        if IsStalker(obj) then
            creature[obj:id()] = true
            monster_stock[obj:id()] = false
        elseif IsMonster(obj) then
            creature[obj:id()] = false
            monster_stock[obj:id()] = true
        end
    end

     

    Просьба не пинать :), хочу разобраться и сделать идеальный ph_car.script с рабочей боевой схемой и правками от переворачивания машин.

     

     


    Подарки

  • Ссылка на комментарий
    2 часа назад, I am Dead сказал(а):

    Как запустить анимацию через add_cam_effector циклично

    Вот так - 

    level.add_cam_effector("camera_effects\\earthquake.anm", 2002, true, "")

    true в данном случае и определяет повторять ли анимацию.

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

    Здрасьте.

     

    ЗП 1.6.02.

    Задача: вывести поверх инвентаря окно с набором дочерних статиков.

     

    Ссылка level.main_input_receiver() отсутствует, остается отслеживание режима инвентаря в [actor_menu.script] и вывод окна поверх через add_dialog_to_render с небольшой задержкой.

    Проблема 1: любые дочерние окна рендер-статика не видны, даже если применить к метод Show(true) – каждый элемент приходится выводить по отдельности.

    Проблема 2: рендер-статик выводится поверх всех элементов инвентаря, включая всплывающие окна с информацией.

     

    Кроме варианта "вырезать область в текстуре инвентаря и подставить ее обратно через AddCustomStatic вместе с новым окном", как можно решить задачу?

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

    Шпаргалка

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

    Проблема 2: рендер-статик выводится поверх всех элементов инвентаря, включая всплывающие окна с информацией.

    Естественно. А почему должно быть иначе, если вы скриптами статик прилепили?

    13 часов назад, Norman Eisenherz сказал(а):

    как можно решить задачу?

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

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    @Zander_driver Есть пара модов, которые хотелось бы повторить в ЗП. Вот такой, например: https://drive.google.com/file/d/1yMX6bX03M0ge8kEsI2UCU_RhtzeC7NeJ.

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

    Шпаргалка

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

    Ребят, нужна еще помощь по логике. Пытаюсь в логике вызвать функцию по сигналу

    [walker1@truba1] 
    on_signal = test | %=test%
    path_walk = test_walk
    path_look = test_look
    no_move = false

    В итоге функция ставится на апдейт. А как вызвать её только один раз?

     


    Подарки

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

    @_Sk8_AsTeR_, например так:

    [walker1@truba1] 
    on_signal = test | {-inf_vizov_test_odin_raz} %+inf_vizov_test_odin_raz =test%

    on_info = {+povod_pereiti_v_druguyu_sekciyu} walker@next %-inf_vizov_test_odin_raz%

    • Спасибо 2
    • Согласен 1

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

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

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

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

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

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

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

    Войти

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

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

    AMK-Team.ru

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