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

  • 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

@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

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


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

Не проще ли мне вшить скрипт в JAM?

Ну, если JAM больше не будет обновляться разработчиком...

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


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

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

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

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

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

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

Войти

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

Войти


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

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

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