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

  • 0
Infest

Торговые автоматы в Гудспрингсе вылетают с JAM

Вопрос

Итак, столкнулся с такой проблемой. Эти 2 автомата вызывают вылеты, если используешь Just Loot Menu из JAM`a. Если в случае с ядер-пивом вылет 50/50 (Лут-меню открывается на автомате с ядер-пивом. ), то автомат с Сансой вылетает 100%.

Спойлер

FalloutNV_2025_01_03_06_44_28_842_result.thumb.jpg.3f8c20f8a56f0620617fe9a6b240e3cb.jpgFalloutNV_2025_01_03_06_44_32_643_result.thumb.jpg.661139844014a2522a8b4773df45b1a2.jpgFalloutNV_2025_01_03_06_44_44_438_result.thumb.jpg.c107865ad4f00d7cf0a7e7550cbe5296.jpg

н

Логи прикладываю. 

CrashLogger.2025-01-03-01-37-36.log

CrashLogger.2025-01-03-01-34-26.log

CrashLogger.2025-01-03-01-25-31.log

 

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

 

Поделиться сообщением


Ссылка на сообщение

71 ответ на этот вопрос

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

  • 0
9 часов назад, ismail1232 сказал:

Кстати, всё равно фикс нужен, который я оставил там в комментах

Я думал, у тебя какой-то доп. фикс есть)

 

17 минут назад, ismail1232 сказал:

Он вшит в обнову JLM. Навряд ли у тебя плагин JLM перезаписывается чем-либо, чтобы сверху требовалось накатить и этот фикс. Какая-то шляпа, короче.

Поделиться сообщением


Ссылка на сообщение
  • 0

@FNVFUN можешь плиз глянуть?

Я так понимаю в старом моде FNV Loot Menu был запрет на активацию на контейнерах со скриптами. А в JAM этого видимо нет.

Надо толи добавить, толи как-то обойти. Рабочие торговые автоматы не должны вызывать окно быстрого лута, т.к. их не открыть так просто.

Поделиться сообщением


Ссылка на сообщение
  • 0
48 минут назад, MagnuMspec сказал:

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

Ну например торговые автоматы с Ядер-колой Just Loot Menu не открывает. Сначала появляется контекстное меню с выбором, что сделать, и только после взлома отображается меню JLM. 

Поделиться сообщением


Ссылка на сообщение
  • 0

Кстати, может быть здесь можно найти/подсмотреть решение проблемы.

 

https://www.nexusmods.com/newvegas/mods/87992?tab=description

 

Спойлер

Спасибо одному неравнодушному товарищу, что скинул этот патч :)

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
3 часа назад, Infest сказал:

Ну например торговые автоматы с Ядер-колой Just Loot Menu не открывает. Сначала появляется контекстное меню с выбором, что сделать, и только после взлома отображается меню JLM. 

А есть ID такого автомата с ядер-колой? У автоматов с ядер-колой должны быть такие же скрипты как у других автоматов, а значит они должны вылетать.

 

В 03.01.2025 в 04:57, Infest сказал:

Итак, столкнулся с такой проблемой. Эти 2 автомата вызывают вылеты, если используешь Just Loot Menu из JAM`a. Если в случае с ядер-пивом вылет 50/50 (Лут-меню открывается на автомате с ядер-пивом. ), то автомат с Сансой вылетает 100%

Вылетает когда? Когда наводишься на автомат или когда активируешь его?

 

4 часа назад, MagnuMspec сказал:

Надо толи добавить, толи как-то обойти.

Ну, конкретно под эти автоматы могу добавить или надо что-то универсальное, типа чтобы все объекты со скриптами не распознавались этим модом?

Поделиться сообщением


Ссылка на сообщение
  • 0
16 часов назад, FNVFUN сказал:

Ну, конкретно под эти автоматы могу добавить или надо что-то универсальное, типа чтобы все объекты со скриптами не распознавались этим модом?

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

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, MagnuMspec сказал:

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

Да какая там логика) Миллион проверок на каждый кадр)

Спойлер

if JLMEnabled == 0
        return
    elseif eval GetGameLoaded || GetGameRestarted
        return
    elseif eval IsControlPressed 6 || GetLeftTrigger
        return
    elseif GetPlayerControlsDisabled 1 0 0 0 1 1 0
        return
    elseif PlayerRef.AuxiliaryVariableGetFloat "*_JLMComm" 0 == 1
        return
    elseif MenuMode
        return
    endif

    if GetCrosshairWater
        rObject = 0
    elseif IsFormValid rObject == 0
        rObject = GetCrosshairRef
    endif

    if IsReference rObject
        iCannibal = (PlayerRef.GetPerkModifier 27 1 rObject)
        iCannibal = 1 - iCannibal
    endif

    if IsReference rObject == 0
    elseif rObject.IsActor == 0
        iDead = 0
        iLocked = rObject.GetLocked
    elseif rObject.GetDead == 0
        iDead = 0
    else
        iDead = 1
    endif

    if rObject != JLM.rObject
    elseif iCannibal != JLM.iCannibal
    elseif iDead != JLM.iDead
    elseif iLocked != JLM.iLocked
    else
        return
    endif

    if rObject != JLM.rObject
        SetUIFloatAlt "HUDMainMenu/JLM/_JLMOffset" 0
        SetUIFloatAlt "HUDMainMenu/JLM/_JLMTotal" 0
        SetUIFloatAlt "HUDMainMenu/JLM/_JLMIndex" 0

        JLM.iIndex = 0
        JLM.iOffset = 0
        JLM.iItems = 0
        JLM.iTotal = 0

        RemoveEventHandler "OnDrop" JLM.scnRefresh 
        RemoveEventHandler "OnAdd" JLM.scnRefresh 
        RemoveEventHandler "OnDrop" JLM.scnRefresh "first"::JLM.rObject
        RemoveEventHandler "OnAdd" JLM.scnRefresh "first"::JLM.rObject

        if JLMBlock
            SetUIFloatAlt "HUDMainMenu/JLM/_JLMVisible" 0
            JLM.iBlock = 1

            if eval JLMHidePrompt && JLM.iInfo
                JLM.iInfo = 0
                iTemp = -1 + PlayerRef.AuxiliaryVariableGetFloat "_JAMInfoDisable"
                PlayerRef.AuxiliaryVariableSetFloat "_JAMInfoDisable" iTemp
                if iTemp > 0
                    SetUIFloatAlt "HUDMainMenu/Info/visible" 0
                    SetUIFloatAlt "HUDMainMenu/InfoWrap/Info/visible" 0
                else
                    SetUIFloatAlt "HUDMainMenu/Info/visible" 1
                    SetUIFloatAlt "HUDMainMenu/InfoWrap/Info/visible" 1
                endif
            endif
        endif

        CallAfterSeconds 0 JLMCloseContainerUDF

    endif

    JLM.rObject = rObject
    JLM.iCannibal = iCannibal
    JLM.iDead = iDead
    JLM.iLocked = iLocked

    if eval IsFormValid rObject == 0 || IsReference rObject == 0
        JLM.iDisable = 1
        Return
    endif

    iType = rObject.GetType

    if eval iType == 21 || iType == 42 || iType == 43 || iType == 27
    else
        JLM.iDisable = 1
        return
    endif

    rBase = rObject.GetBaseForm

    if IsFormValid rBase == 0
        JLM.iDisable = 1
        Return
    endif

    if eval JLM.iCannibal == 1 && PlayerRef.AuxiliaryVariableGetFloat "*_JLMComm" 1 != 1
        JLM.iDisable = 1
        return
    endif

    if iType == 21
        rObject = rObject.GetAshPileSource
        if IsFormValid rObject == 0
            JLM.iDisable = 1
            return
        endif
        JLM.iDead = 1
        iType = rObject.GetType
    endif

    if eval iType == 42 || iType == 43
        if JLM.iDead == 0
            JLM.iDisable = 1
            Return
        endif
    elseif iType == 27
        if JLM.iLocked
            JLM.iDisable = 1
            Return
        endif
    else
        JLM.iDisable = 1
        Return
    endif

    if eval Sv_Find "<no name>" ($rObject) > -1
        JLM.iDisable = 1
        Return
    endif

    if eval (IsFormValid (rObject.GetScript)) == 0
    elseif eval (rObject.GetScript == GraveContScript)
        if eval PlayerRef.GetItemCount WeapShovel > 0
        elseif eval IsFormValid (JLM.rShovel) && PlayerRef.GetItemCount (JLM.rShovel) > 0
        elseif eval IsFormValid (JLM.rShovelUnique) && PlayerRef.GetItemCount (JLM.rShovelUnique) > 0
        else
            JLM.iDisable = 1
            Return
        endif
    elseif eval (rObject.GetScript == JLM.rGhostScript)
    elseif HasScriptBlock 35 rObject
        JLM.iDisable = 1
        Return
    elseif eval rObject.HasScriptBlock 2 == 0 && rObject.HasScriptBlock 0 == 0
    elseif eval HasScriptCommand (0x1059) rObject 2 || HasScriptCommand (0x14DC) rObject 2 || HasScriptCommand (0x2826) rObject 2
        JLM.iDisable = 1
        Return
    elseif eval HasScriptCommand (0x1059) rObject 0 || HasScriptCommand (0x14DC) rObject 0 || HasScriptCommand (0x2826) rObject 0
        JLM.iDisable = 1
        Return
    elseif eval rObject.HasScriptBlock 2 && HasScriptCommand (0x100D) rObject 2 == 0
        JLM.iDisable = 1
        Return
    elseif eval rObject.HasScriptBlock 0 && HasScriptCommand (0x100D) rObject 2 && (HasScriptCommand (0x1069) rObject 2 || HasScriptCommand (0x10CD) rObject 2)
        JLM.iDisable = 1
        Return
    endif

 

Сделаю тогда лишнюю проверку для автоматов. Но я так и не понял, в какой момент вылет происходит.

Поделиться сообщением


Ссылка на сообщение
  • 0
20 часов назад, FNVFUN сказал:

А есть ID такого автомата с ядер-колой? У автоматов с ядер-колой должны быть такие же скрипты как у других автоматов, а значит они должны вылетать.

Любой торговый автомат ядер-колы на столичке. 

 

20 часов назад, FNVFUN сказал:

Вылетает когда? Когда наводишься на автомат или когда активируешь его?

Именно когда наводишь

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, Infest сказал:

Любой торговый автомат ядер-колы на столичке. 

Нужен ид. У них одинаковый скрипт, как и у мохавских. SFWVMObjectWithAnim [SCPT:0FFFF905]. Отличия только в шансе на спавн квантовой.

Если не стоит каких-то модов сверху, затирающих это.

 

Поделиться сообщением


Ссылка на сообщение
  • 0

У меня ничего не вылетает, JAM брал отсюда. Да и с чего бы должно вылетать, вопрос.

 

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

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

Поделиться сообщением


Ссылка на сообщение
  • 0
57 минут назад, FNVFUN сказал:

У меня ничего не вылетает, JAM брал отсюда. Да и с чего бы должно вылетать, вопрос.

без NVAC?

Поделиться сообщением


Ссылка на сообщение
  • 0
3 часа назад, FNVFUN сказал:

Да) Сто лет NVAC не включал.

 

Сам фикс JLM-RA-Items-fix.esp

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

Поделиться сообщением


Ссылка на сообщение
  • 0
12 часов назад, Infest сказал:

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

Да не, так и должно быть) Зависит от Удачи

Поделиться сообщением


Ссылка на сообщение
  • 0
19 часов назад, Infest сказал:

Именно когда наводишь

Попробуй удалить все предметы и попробовать без фикса навестить на автомат. Может, какие-то предметы вызывают вылеты.

Поделиться сообщением


Ссылка на сообщение
  • 0
В 05.01.2025 в 22:21, FNVFUN сказал:

Да) Сто лет NVAC не включал.

 

Сам фикс JLM-RA-Items-fix.esp

В итоге третий день бегаю с фиксом, всё отлично. Правда так и не понял, зачем была добавлена зависимость к JAM?

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, Infest сказал:

В итоге третий день бегаю с фиксом, всё отлично. Правда так и не понял, зачем была добавлена зависимость к JAM?

Не понял, какая зависимость? Я сам JAM скачал по ссылке, что скинул в посте выше. Сам JAM можно запускать без RA-Items, там никакой зависимости нет.

 

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

Поделиться сообщением


Ссылка на сообщение
  • 0
2 часа назад, FNVFUN сказал:

Не понял, какая зависимость? Я сам JAM скачал по ссылке, что скинул в посте выше. Сам JAM можно запускать без RA-Items, там никакой зависимости нет.

 

Слушай, а есть ли вариант сделать фикс внутри модуля? Т.е. чтобы все правки были в нем, без правок JAM? Или тут без вариантов?

Поделиться сообщением


Ссылка на сообщение
  • 0
7 часов назад, FNVFUN сказал:

Не понял, какая зависимость? Я сам JAM скачал по ссылке, что скинул в посте выше. Сам JAM можно запускать без RA-Items, там никакой зависимости нет.

 

Пардон, неверно выразился. Думал фикс для модуля RA + JAM :crazy:

Поделиться сообщением


Ссылка на сообщение
  • 0
В 09.01.2025 в 02:46, MagnuMspec сказал:

Слушай, а есть ли вариант сделать фикс внутри модуля? Т.е. чтобы все правки были в нем, без правок JAM? Или тут без вариантов?

В теории, если сделать так, чтобы автоматы были заперты, но тогда будет появляться сообщение о взломе (или что требуется ключ), ну и мне неохота переделывать механику автоматов под это дело)

Но это стандартная практика для JLM, для некоторых объектов отдельные проверки делать. Вот, к примеру, проверка для призраков из DeadMoney:

elseif eval (rObject.GetScript == JLM.rGhostScript)

 

Или вот для могил:

Спойлер

    elseif eval (rObject.GetScript == GraveContScript)
        if eval PlayerRef.GetItemCount WeapShovel > 0
        elseif eval IsFormValid (JLM.rShovel) && PlayerRef.GetItemCount (JLM.rShovel) > 0
        elseif eval IsFormValid (JLM.rShovelUnique) && PlayerRef.GetItemCount (JLM.rShovelUnique) > 0
        else
            JLM.iDisable = 1
            Return
        endif

 

Исходя из этого можно сделать вывод, что со многими объектами в сборке JLM может конфликтовать.

 

Конкретно под автоматы я добавил такие строчки:

Спойлер

    elseif iType == 27
        if JLM.iLocked
            JLM.iDisable = 1
            Return
        endif

;>>>>>>>>>
;05.01.2025 Адаптация к автоматам из RA-Items
        if eval rObject.HasVariable "bUnlocking"
            if eval (rObject.GetAngle X >= 8.0) || (rObject.GetAngle X <= -8.0) || (rObject.GetAngle Y >= 8.0) || (rObject.GetAngle Y <= -8.0) || (rObject.GetVariable "bAnimPlaying") == 1
                JLM.iDisable = 1
                Return
            endif

            if eval (rObject.GetVariable "bUnlocking") == 0 && rObject.GetOwner != Player.gbo && rObject.GetOwner != PlayerFaction && rObject.GetParentCellOwner != Player.gbo && rObject.GetParentCellOwner != PlayerFaction
                JLM.iDisable = 1
                Return
            endif
        endif
;<<<<<<<<<

 

 

В 08.01.2025 в 22:37, Infest сказал:

В итоге третий день бегаю с фиксом, всё отлично.

На самом деле непонятно, с чем связаны были вылеты, так как я не правил именно их - я правил момент, когда можно было забирать напитки еще не в взломанных автоматах. Ты пробовал чинить и взламывать автоматы и потом смотреть, происходят ли вылеты?

Поделиться сообщением


Ссылка на сообщение
  • 0
19 минут назад, FNVFUN сказал:

Исходя из этого можно сделать вывод, что со многими объектами в сборке JLM может конфликтовать.

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

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, MagnuMspec сказал:

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

На любом или конкретно на этих? На любом можно, конкретно на этих уже и так сделано получше.

Поделиться сообщением


Ссылка на сообщение
  • 0
48 минут назад, FNVFUN сказал:

На любом или конкретно на этих? На любом можно, конкретно на этих уже и так сделано получше.

В том моде сделано на любых, если есть скрипт.

 

Хз конечно, как лучше, т.к. довольно много объектов со скриптами, особенно если это неписи.

 

Поделиться сообщением


Ссылка на сообщение
  • 0
35 минут назад, MagnuMspec сказал:

Хз конечно, как лучше, т.к. довольно много объектов со скриптами, особенно если это неписи.

Ну тут уж сам решай, как надо. Еще вариант такой есть, проверку производить по тому, существует ли у скрипта объекта определенная переменная (например if eval rObject.HasVariable "JustLootMenuDisable"). И если есть, то конкретно для этого объекта JLM не работает. Тогда можно любой объект в исключения добавлять, прописывая в его скрипте эту переменную, в нашем случае int JustLootMenuDisable

Поделиться сообщением


Ссылка на сообщение
  • 0

Не проще ли мне вшить скрипт в JAM? Чем придумывать велосипед и редачить модули? Тем более последний JAM переведён только у нас. На других ресурсах не встречал. Поэтому потенциальный игрок, играющий в RA в любом случае JAМ будет скачивать с этого сайта. 

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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

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