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

Лидеры


Популярный контент

Показан контент с высокой репутацией 03.10.2025 во всех областях

  1. 2 балла
    ДОБАВЛЯТОР ВЫДЕЛЕННЫХ ЛОКАЦИЙ В ЗАДАВАЕМЫЙ ЗАГРУЗОЧНЫЙ ЭКРАН. Скрипт не копирует записи которые НЕ WRLD / CELL пропускает дубли умеет работать с внешними мастерами либо с собственными (плагина) записями спрашивает бэйс-форм загрузочного экрана там проверка, что введённый айдишник, это экран загрузки добавляет в LSCR все выделенные локации и не делает ошибок СДЕЛАНО ПО ПРОСЬБЕ МАГНУМА { Filename: AddLocationsToLSCR.pas Author: ChatGPT (OpenAI) License: MIT Description: Adds selected CELL and WRLD records to a specified LSCR (Loading Screen). Supports both external masters and same-file (self) locations. Prevents duplicates and provides detailed logging. } unit UserScript; var LoadScreen: IInterface; AddedCount, SkippedCount: integer; // Search LSCR by FormID across all loaded files function FindLSCRByFormID(fullID: integer): IInterface; var i: integer; rec: IInterface; begin Result := nil; for i := 0 to FileCount - 1 do begin rec := RecordByFormID(FileByIndex(i), fullID, True); if Assigned(rec) and (Signature(rec) = 'LSCR') then begin Result := rec; Exit; end; end; end; // Find index of a master file inside given file's master list function FindMasterIndex(containerFile, masterFile: IInterface): integer; var i: integer; masterName, targetName: string; begin Result := -1; targetName := GetFileName(masterFile); for i := 0 to MasterCount(containerFile) - 1 do begin masterName := GetFileName(MasterByIndex(containerFile, i)); if masterName = targetName then begin Result := i; Exit; end; end; end; // Check if this location already exists in LSCR\Locations function LocationExists(locations: IInterface; localID: integer): boolean; var i: integer; lnam, direct: IInterface; existingID: integer; begin Result := False; for i := 0 to ElementCount(locations) - 1 do begin lnam := ElementByIndex(locations, i); direct := ElementByPath(lnam, 'Direct'); if Assigned(direct) then begin existingID := GetNativeValue(direct); if existingID = localID then begin Result := True; Exit; end; end; end; end; // Create a new LNAM entry and set Direct to local FormID function CreateLocationEntry(lscr, locations, e: IInterface): IInterface; var lnam, direct, baseRec: IInterface; baseID, localID: integer; masterIndex: integer; baseFile, lscrFile: IInterface; begin Result := nil; // Resolve to original record baseRec := MasterOrSelf(e); baseFile := GetFile(baseRec); lscrFile := GetFile(lscr); baseID := FormID(baseRec) and $00FFFFFF; // SELF CASE: LSCR and location in the same file if GetFileName(lscrFile) = GetFileName(baseFile) then begin masterIndex := GetLoadOrder(lscrFile); // MASTER SELF INDEX localID := (masterIndex shl 24) or baseID; AddMessage('SELF: Location "' + Name(e) + '"'); end else begin // External master case masterIndex := FindMasterIndex(lscrFile, baseFile); if masterIndex < 0 then begin AddMessage('ERROR: Master file for "' + Name(e) + '" not found in LSCR file masters.'); Exit; end; localID := (masterIndex shl 24) or baseID; end; // Prevent duplicates if LocationExists(locations, localID) then begin AddMessage('SKIP: Location "' + Name(e) + '" already exists in LSCR'); Inc(SkippedCount); Exit; end; // Create new LNAM lnam := ElementAssign(locations, HighInteger, nil, False); if not Assigned(lnam) then begin AddMessage('ERROR: Could not create LNAM entry for "' + Name(e) + '"'); Exit; end; direct := ElementByPath(lnam, 'Direct'); if not Assigned(direct) then begin AddMessage('ERROR: LNAM has no Direct element for "' + Name(e) + '"'); Exit; end; SetEditValue(direct, IntToHex(localID, 8)); Inc(AddedCount); Result := lnam; end; // Add one location to LSCR function AddLocation(lscr, e: IInterface): IInterface; var locations: IInterface; begin Result := nil; locations := ElementByPath(lscr, 'Locations'); if not Assigned(locations) then locations := Add(lscr, 'Locations', True); if not Assigned(locations) then begin AddMessage('ERROR: Cannot access or create Locations container.'); Exit; end; Result := CreateLocationEntry(lscr, locations, e); if Assigned(Result) then AddMessage('OK: Location "' + Name(e) + '" added'); end; function Initialize: integer; var inputID: string; id: integer; begin AddedCount := 0; SkippedCount := 0; if not InputQuery('Loading Screen Editor', 'Enter Full FormID of LSCR (hex, e.g. 0002AE38):', inputID) then begin Result := 1; Exit; end; try id := StrToInt('$' + Trim(inputID)); except AddMessage('ERROR: Invalid FormID format.'); Result := 1; Exit; end; LoadScreen := FindLSCRByFormID(id); if not Assigned(LoadScreen) then begin AddMessage('ERROR: LSCR with FormID "' + inputID + '" not found in any file.'); Result := 1; Exit; end; AddMessage('INFO: Selected LSCR = ' + Name(LoadScreen)); end; function Process(e: IInterface): integer; begin if not Assigned(LoadScreen) then Exit; if (Signature(e) <> 'CELL') and (Signature(e) <> 'WRLD') then Exit; AddLocation(LoadScreen, e); end; function Finalize: integer; begin AddMessage('=== Finished adding locations ==='); AddMessage('Total added: ' + IntToStr(AddedCount)); AddMessage('Total skipped (duplicates): ' + IntToStr(SkippedCount)); end; end.
  2. 2 балла
    Добавляю сюда минимальное изменение от себя, на всякий случай. @FNVFUNзачем-то отключил приветствия Тридогнайта из дополнения Broken Steel, я их подключил обратно, больше ничего не трогал. В целом должно работать нормально, думаю что больше точно правки не нужны. GalaxyNewsRadioFix_2_0_SFW.esp
  3. 1 балл

    Версия 1.0

    32 раза скачали

    Поговорите с Грегом Биром (Паладин Кадьяк) в Цитадели, в частности о Биче. Вы получите задание и маркер. Посетите Питт в роли рыцаря Братства во время Бича в 2255 году. Соберите технологии для Братства, а затем штурмуйте город вместе со Звёздным паладином Лайонсом. Ваше снаряжение будет изъято при запуске мода и возвращено вам после завершения сюжета. Все предметы, использованные в «Биче», остаются в 2255 году. В этот плагин включено более 50 строк озвученных диалогов. Сюда входят стандартные диалоги с участием жителей Питта, дикарей и ваших союзников из Блэкстоун. Вы можете запустить этот мод в любой момент прохождения игры до Take it Back!/ Broken Steel. Ни один из официальных ресурсов дополнения не затронут. В 2255 году вы найдёте гораздо больше мест, которые можно исследовать. Пространства мира Питта были скопированы, отредактированы и расширены, чтобы выглядеть и ощущаться так же, как ~30 лет назад. Это включает в себя совершенно новую карту мира с новыми локациями для исследования. Рекомендовано достичь уровня 10–20 или около того. Питт Операция «Анкоридж» Расширитель скриптов Fallout 3 (FOSE)
  4. 1 балл
    Добавил твой вариант. Там из отличий только Previous INFO добавлено. Интересно.)
  5. 1 балл
    Все, вижу. Я эти правки отменил, потому что у тебя Тридогнайт повторял приветствия по несколько раз, что обсуждалось ранее. В итоге про ту проблему как-то забыли. В общем, сейчас потестил, диалоги из Broken Steel действительно не идут. Я чутка по-другому сделал фикс, по аналогии как сделали сами разрабы в Broken Steel в топике RadioGNRPlayerKarmaTitles "Интро новостей про игрока" [DIAL:00058069]. Но твой фикс тоже работает. RadioGNRNewsLink-fix.esp @MagnuMspec нужно еще минификс вшить, чтобы диалоги интро новостей из Broken Steel были доступны) Либо мой, либо из фикса Влада топик RadioGNRNewsLink "RadioGNRNewsLink" [DIAL:00057AFA] в посте выше. У Влада еще диалог "В студии с вами... я! И самые свежие новости." активен. Я его сделал неактивным по причине выше. Так что тут на твой выбор) Новости про игрока идут из топика RadioHello "RadioHello" [DIAL:00000126] Топик про Дэшвуда с 50% вероятностью ведет либо к истории про Дэшвуда, либо к общим новостям, так что тут все верно) Так в оригинале реализовано, предположу, чтобы снизить вероятность рассказов про Дэшвуда.
  6. 1 балл
    Короче. Проблему я решил необычным способом. Один парниша добавил эту пуху просто в Вегас через скрипт JIP. Я этот мод скачал и попробовал перенести данные на оригинальную пуху Ф3 в РА. Судя по всему попробовал я успешно, т.к. вылетов ни у меня ни у Dyshes не было. Голову не отдам за то что всё работает как надо и было бы неплохо, если бы @MagnuMspec перепроверил. Особенность этой версии ещё в том, что эта версия не использует боеприпасы "Хлам Ракетки" - то есть боеприпасы пухи всегда условно 0/0, поэтому пользователи некоторых модов интерфейса могут постоянно видить надпись "No Ammo". Как это улучшить мне думать лень - моей задачей было убрать вылет с NVHR 4.2. Задача выполнена Мод с Nexus о котором я говорил: Плагин с фиксом тут: FNVRockitLauncherNVSE.esp Теперь немного истории бага, потому что я заколебал Chat GPT с ним впихивая в него разную информацию, так что и вам придётся послушать. Поведение "стрелять хламом" сидит не в скриптах, а в хардкоде движка (унаследованное из Fallout 3). Поэтому как-то более просто ситуацию разрешить не получилось. При эквипе движок начинает перебирать ExtraContainerChanges игрока (весь мусор MiscItem) и собирать из него «синтетический список патронов», меняя отображение боеприпаса (“Junk” → “Rock-It Junk”). Во время этого перебора создаются мелкие временные буферы/массивы. NVHR 4.2 заменяет стандартный heap игры на более строгий аллокатор (жёсткие границы и проверки). В этой ветке эквипа Ракетка делает некорректный доступ к памяти (плохой указатель или размер). В NVHR 3.2 это сходило с рук - хип позволял. В 4.2 строгая хип возвращает NULL или ловит выход за границу, и следующий вызов идёт по невалидному адресу в access violation прямо в InventoryMenu. Автор мода с Нексуса использовал InitRockItLauncher - функцию, которую JIP LN NVSE даёт скриптам, чтобы инициализировать Ракетку безопасно. Это переносит логику из нативного "битого" кода в управляемую область NVSE-плагина, где память инициализируется корректно. В итоге NVHR 4.2 перестаёт падать, потому что опасный участок кода больше не исполняется: всё делает NVSE-хук. В итоге встроенная устаревшая механика заменяется на новомодный хук. NVHR 4.2 не мешает NVSE-хукам, т.к. они используют корректные вызовы, а не полусломанный FO3-остаток, кусок которого остался и в Вигусе.
  7. 1 балл
    По всему интернету советуется совсем выбросить NVHR.. Проблемы зарегистрированы и у пользователей SFW и у пользователей TTW. То, что сейчас они пока пропали совсем не значит, что они не вернутся Но вообще рад, что проблема решилась! "Иероглифы" в логе часто вызываются именно старыми настройками старого NVTF и NVHR, так что решение таких вылетов стоит начать с них
  8. 1 балл
    Вынул. И что бы вы подумали? Вылеты пропали. Вернул обратно NVHR 4.2 что был изначально в новогоднем релизе сборки и пока все нормально. За наводку на новый NVTF спасибо, буду пока тестить с включенной опцией ( bGTCFix = 1 ; Fixes the 64hz microstutter issue. ) которая на прошлом релизе вызывала на моем железе крайне неприятные баги. п.с.: Дополнение, стояла версия NVHR 3.2 (AVX2) рекомендованная программкой идущей с ним в комплекте.
  9. 1 балл
    Помогло) Конфиг в NVTF вот ту штучку что на 0 стоит надо на 1 Если установка busedefaultpoolfortextures=1 не поможет, то надо временно вынуть NVHR (d3d9_38.dll) из папки игры - лог будет ещё более понятным, и тогда будем надеяться Фан сможет найти виновника с нескольких логов, а пока есть NVHR лог будет прыгать, и мы не видим реальную загрузку heap
  10. 1 балл
    Очень хороший спутник, багов в моде не замечал. Очень жаль её родителей.
  • Новостная рассылка

    Хотите быть в курсе всех наших последних новостей и информации?

    Подписаться

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

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

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