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

AI additions


Bak

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

Может кто-нибудь обновит ссылку Адаптации для NLC. Спасибо заранее.

Вопрос не в том чего ты хочешь, вопрос в том, на что ты готов пойти ради этого...
Ссылка на комментарий

Для адаптации AI Additions на OGSM ТЧ, насколько я понимаю, нужно еще операторам в новых модулях прописать следующие предусловия:

    if ogsm_hideout then
        action:add_precondition(world_property(ogsm_hideout.property_blowout, false))
        action:add_precondition(world_property(ogsm_hideout.property_hideout_lost, false))
        action:add_precondition(world_property(ogsm_hideout.property_inhide, false))
        action:add_precondition(world_property(ogsm_hideout.property_psyzoned, false))
    end

    if anomaly_evader then
        action:add_precondition (world_property(1099,false))
    end

Только вот вопрос, для всех ли операторов это нужно прописывать?

Изменено пользователем =300zx=
  • Полезно 1
Ссылка на комментарий

@=300zx=, ну не знаю, я адаптировал аи адд и мод на выбросы, они друг другу не мешали. Во всяком случае у меня при тестах проблем выявлено не было:508:

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

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

UriZzz.gif

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

К данному посту. Наткнулся у OGSE-шников по этому поводу:

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

"Изредка движок сглюкивает, назначая неписю в слот артефакт. Этого следует избежать, так как такие неписи застревают на попытке применения арта как оружия."(c)

Вообще, копипастить чужой код - такое себе занятие. Да и спецы наверняка у себя поправили. "Самоделкиным", однако, возможно будет любопытственно. В качестве идеи :biggrin:. Для наглядности:

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

function check_art_weapon(npc)
    local item_in_slot = npc:item_in_slot(1)
    local act_item = npc:active_item()
    if act_item and item_in_slot and act_item:id() == item_in_slot:id() then
        local item_in_slot_sec = act_item:section()
        local item_in_slot_id = act_item:id()
        if item_in_slot_sec and item_in_slot_id and string.find(item_in_slot_sec, "af_") then
--' Если непись получил арт в слот по ошибке при загрузке игры, мы просто, обновим ему оружие в руках и всё. Иначе, если он взял арт в руки и отказывается его убирать, а лучшее оружие получить не удаётся, придётся арт выбросить, отрелизить и вернуть ему в рюкзак.
            local bw = npc:best_weapon()
            local be = npc:best_enemy()
            local rem_id = npc:active_item():id()
            npc:drop_item(npc:active_item())
            local s_obj = alife():object(rem_id)
            if s_obj then
                alife():release(s_obj, true)
                alife():create(item_in_slot_sec,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())
            end            
            if bw and string.find(bw:section(), "wpn_") then
                if be then
                    npc:set_item(object.fire1, bw)
                    return
                else
                    npc:set_item(object.idle, bw)
                    return
                end
            end
        end
    end
end

 

Простенько и со вкусом. И куда-нибудь на апдейт в мотиваторе:

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

function motivator_binder:update(delta)
...
        if self.object:alive() then
            check_art_weapon(self.object)
        end
...
end

 

  • Полезно 4
Ссылка на комментарий
2 часа назад, Купер сказал:

Для наглядности:

Саму функцию check_art_weapon(npc) можно в xr_motivator.script прописать или создавать новый скрипт ?

Ссылка на комментарий
04.08.2020 в 20:31, UriZzz сказал:

@=300zx=, ну не знаю, я адаптировал аи адд и мод на выбросы, они друг другу не мешали. Во всяком случае у меня при тестах проблем выявлено не было:508:

Явных проблем может и не будет, но для каких-то action возможно стоит добавить эти предусловия. Например, чтобы непись во время выброса не шел лутать итд.

 

В оригинальных модулях AI Additions есть закоментированные строчки для АМК-выброса:

--    if blowout_scheme and blowout_scheme.evid_outside then
--        action:add_precondition(world_property(blowout_scheme.evid_outside,false))
--    end

В OGSE, например в файле rx_gl.script, есть такие строчки:

    local action = action_launch_grenade(npc,"act_launch_grenade",storage)
    ...
    action:add_precondition(world_property(ogsm_hideout.property_blowout, false))
    action:add_precondition(world_property(ogsm_hideout.property_hideout_lost, false))
    action:add_precondition(world_property(ogsm_hideout.property_psyzoned, false))

Но в OGSE используется предыдущая версия AI Additions и не такая схема обхода аномалий как в OGSM.

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

@Space.Marine, да. В таком виде непосредственно в мотиватор. Не совсем корректно озвучил :blush:. Если делать отдельно - придётся видоизменять вызов функции, хотя напуркуа :biggrin:?

Вариант решения не единственный, конечно. Просто обычно всё это зарыто в дебрях авторского кода, с кучей собственных "прибамбасов" под себя. А тут всё достаточно прозрачно и "модульно" для использования.

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

@Bak  Hello, I found a bug where NPCs start walking in this weird animation, walk really slowly and seem to be kind of sliding. It happens when they are just wandering around, when you get near them and go away they start walking normally. Could you check this out?

------------- Google translate ---------------------

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

 

Screenshot: https://imgur.com/a/oQ0wV7w

Изменено пользователем Опричник
перевод
Ссылка на комментарий

I also encountered a bug where some NPCs (mainly duty guards at the Bar) have their flashlights shining under their feet at day time after a night where they use them.

 

I believe these bugs are caused by this mod but maybe someone can confirm. Every time I use this mod it happens.

----------------------------------------

Я также столкнулся с ошибкой, когда у некоторых NPC (в основном дежурных охранников в баре) фонари светились под ногами днем после ночи, когда они их использовали.

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

Изменено пользователем Опричник
перевод
Ссылка на комментарий

Okay, guess the problem has to be on my end. I don't know what else could cause that though, it happend twice in 2 different mod setups and the one where I didn't use it didn't have these issues. I would test it on vanilla but it happens only later in the game and I don't want to play vanilla :D

-----------------------

Ладно, думаю, проблема на моей стороне. Я не знаю, что еще могло вызвать это, хотя это случилось дважды в двух разных настройках мода, и в том, где я его не использовал, этих проблем не было. Я бы протестировал это на ванили, но это происходит позже в игре, и я не хочу играть в ваниль: D

Изменено пользователем Опричник
перевод
Ссылка на комментарий
30.05.2020 в 06:31, Rudolf2725 сказал:

@ted.80, при попытке сохранится иногда может произойти вылет. Ставил на OGSM v2.3.1, адаптация соответствующая.

Вот лог.

Expression    : e_entity->ID_Parent == id_parent
Function      : xrServer::Process_event_reject
File          : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
Line          : 23
Description   : wpn_bm161746
Arguments     : rx_wmgr_box6382

Спустя почти полгода , но да и ладно))) Может быть кому-то пригодиться. 

Вылет связан с тем, что скорее всего при адаптации в bind_stalker метод save переписали с OGSM'овского.

Вот этот кусок кода:

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

function actor_binder:save(packet)
    local pk1 = fake_net_packet.fake_net_packet()
    self:save_old(pk1)
    --get_console():execute("Packet_size_is_"..pk1:w_tell())
    if pk1:w_tell()>7500 then
        ogsm_debug.clean_pstor()
    end
    self:save_old(packet)
end 

function actor_binder:save_old(packet)

    if rx_ai then rx_ai.actor_save(packet) end
    local save_treasure_manager = true

    printf("actor_binder:save(): self.object:name()='%s'", self.object:name())
    object_binder.save(self, packet)

    --' Сохраняем уровень сложности
    if save_treasure_manager == true then
        packet:w_u8(level.get_game_difficulty() + 128)
    else
        packet:w_u8(level.get_game_difficulty())
    end


    --' Сохраняем данные об отключенном вводе
    if self.st.disable_input_time == nil then
        packet:w_bool(false)
    else
        packer:w_bool(true)
        utils.w_CTime(packet, self.st.disable_input_time)
    end

    xr_logic.pstor_save_all(self.object, packet)
    self.weather_manager:save(packet)

    sr_psy_antenna.save( packet )

    if save_treasure_manager == true then
        treasure_manager.save(packet)
    end

    task_manager.save(packet)
    self.actor_detector:save(packet)    
end

 

Возвращаем на оригинальный:

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

function actor_binder:save(packet)
    local pk1 = fake_net_packet.fake_net_packet()
    if pk1:w_tell()>7500 then
        ogsm_debug.clean_pstor()
    end

    if rx_ai then rx_ai.actor_save(packet) end
    local save_treasure_manager = true

    printf("actor_binder:save(): self.object:name()='%s'", self.object:name())
    object_binder.save(self, packet)

    --' Сохраняем уровень сложности
    if save_treasure_manager == true then
        packet:w_u8(level.get_game_difficulty() + 128)
    else
        packet:w_u8(level.get_game_difficulty())
    end


    --' Сохраняем данные об отключенном вводе
    if self.st.disable_input_time == nil then
        packet:w_bool(false)
    else
        packer:w_bool(true)
        utils.w_CTime(packet, self.st.disable_input_time)
    end

    xr_logic.pstor_save_all(self.object, packet)
    self.weather_manager:save(packet)

    sr_psy_antenna.save( packet )

    if save_treasure_manager == true then
        treasure_manager.save(packet)
    end

    task_manager.save(packet)
    self.actor_detector:save(packet)    
end

После этого вылет должен исчезнуть.

P.S. Если кто-то знает зачем этот метод изменяли как показано под первым спойлером - буду благодарен если расскажите)

 

Изменено пользователем TomlnFerno
  • Сомнительно 1
Ссылка на комментарий
22 часа назад, TomlnFerno сказал:

Вылет связан с тем, что скорее всего при адаптации в bind_stalker метод save переписали с OGSM'овского.

 

:dash2:

 

22 часа назад, TomlnFerno сказал:

P.S. Если кто-то знает зачем этот метод изменяли

 

Ну наверно потому что это адаптация для OGSM?

  • Смешно 1
Ссылка на комментарий
13 часов назад, ted.80 сказал:

 

:dash2:

 

 

Ну наверно потому что это адаптация для OGSM?

Ну так надо же с умом делать) 

Из-за использования ОГСМ-ного варианта метода происходит тот вылет, а вот если взять вариант из моего предыдущего поста, то все в порядке, хотя я не претендую на то, что это является единственно верным решением, я просто предлагаю рабочие варианты, которые помогли мне и могут помочь ещё кому-то(кстати я там случайно вставил одинаковый код под оба спойлера и не могу повторно отредактировать пост,косяк)

Может быть мои формулировки не совсем точно отражают мысль, которую я пытаюсь донести, но все же не стоит так возмущаться ) 

 

 

 

Изменено пользователем TomlnFerno
Ссылка на комментарий
04.10.2020 в 21:56, TomlnFerno сказал:

Если кто-то знает зачем этот метод изменяли как показано под первым спойлером - буду благодарен если расскажите)

Кстати да. По сути модуль нэт пакетов в ОГСМ используется только с дин.аномалиями.@TomlnFerno, да походу конструкция выполняет дебаговую функцию.

 if pk1:w_tell()>7500 then

        ogsm_debug.clean_pstor()

    end

Но это не точно.

Изменено пользователем UriZzz
  • Спасибо 1

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

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

UriZzz.gif

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

 

05.10.2020 в 00:56, TomlnFerno сказал:

Вылет связан с тем, что скорее всего при адаптации в bind_stalker метод save переписали с OGSM'овского.

Ваш вывод притянут за уши, и в корне не верен, объясню:

 1) Этот "МЕТОД" а точнее функция - не переписана с ОГСМ - она там была изначально, так как эта адаптация сделана специально для ОГСМ

 2) ОГСМ отличный мод - сделанный не вчера, и если-бы ноги росли от-туда, баг давно отловили бы и пофиксили.

 

05.10.2020 в 00:56, TomlnFerno сказал:

После этого вылет должен исчезнуть.

Нееееисключено - но это не точно.

 

06.10.2020 в 13:20, TomlnFerno сказал:

Из-за использования ОГСМ-ного варианта метода происходит тот вылет, а вот если взять вариант из моего предыдущего поста, то все в порядке,

Никогда такого не было, и вот опять, даже не понимая для чего этот код туда добавлен:

05.10.2020 в 00:56, TomlnFerno сказал:

Если кто-то знает зачем этот метод изменяли как показано под первым спойлером - буду благодарен если расскажите)

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

не парить мозк себе и других не вводить в заблуждение - хотя-бы просто гуглите в интернетах

 

2020-10-07-23-54-12.png

Изменено пользователем ted.80
  • Согласен 2
  • Полезно 2
Ссылка на комментарий

Подскажите есть адаптации OGSM 2.4.3 AI ADDITIONS + STWP SOC? Никак не пойму как этот оружейный пак адаптировать, в кодах вобще не шарю... 

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

@андрей дронав, адаптация ai add есть, на счёт оружейного пака - учите матчасть.

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

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

UriZzz.gif

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

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...