Данный плагин делает так, что в Skyrim SE больше не нужно будет ждать авторов, чтобы они обновляли свои моды, которые имеют .dll плагины работающие через SKSE64 и имеют зависимость от версии игры и SKSE64 соответственно. УРА товарищи геймеры, кончились наши мучения! В общем в двух словах, просто установите этот плагин и все, остальное должны сделать сами авторы модов.
Для Skyrim AE 1.6 и выше смотрите на данной странице
Подробнее:
* Например, когда Bethesda обновляет игру своими надоедливыми CC-патчами, моды зависимые от SKSE64 больше не будут нуждаться в обновлениях. Это действительно удобно для всех. Но для этого всем авторам таких модов нужно будет кое-что сделать, этот мод не сделает магически независимыми моды от версий SKSE64.
Все эти моды должны быть в первую очередь обновлены самими авторами, чтобы использовать эту библиотеку. Таким образом, после внедрения данной библиотеки авторами в свои моды, они будут становиться независимыми от версии SKSE64. Вопрос времени, а нам игрокам остается только ждать, когда все авторы внедрят эту библиотеку в свои моды. Но это не значит что игрокам не нужно устанавливать данную библиотеку, НУЖНО и еще раз НУЖНО, так как авторы будут использовать не сами файлы этого плагина, а именно библиотеку.
КАК УСТАНОВИТЬ МОДЫ НА SKYRIM SE ЧАСТЬ №1 (Интерфейс + Инструменты + Патчи + Фиксы + DLL-плагины)
* В итоге, вместо того, чтобы обновлять дюжину другую модов или около того, достаточно будет просто обновить этот плагин. Обновление одного мода лучше, чем обновление дюжины, особенно когда один автор мода решает прекратить моддинг и не выпускает обновлений и еще хуже, не дает исходный код чтобы другие обновляли. Таким образом, авторам модов не нужно будет постоянно обновлять свои плагины зависящие от версии SKSE64, после каждого обновления версии игры.
* Мод содержит заголовочный файл и базу данных, чтобы легко сделать версии SKSE64 плагинов с .DLL независимыми. Это вся информация для обычного игрока, больше знать ничего не нужно, если вы мододел, то всю информацию читайте на странице мода на Нексусе, там все подробно написано как делать совместимость модов имеющих .dll плагины работающих через SKSE64 и зависящие от версии игры.
СПИСОК МОДОВ которые работают через skse64 и зависят от версии игры и соответственно от sks64. Все эти моды нуждаются в постоянном обновлении после каждого обновления самой игры и skse64, с данным плагином Address Library for SKSE Plugins авторам этих модов не нужно будет теперь всегда их обновлять под каждую новую версию игры и skse64.
Требования:
Skyrim SE 1.5.16.0 до 1.5.97.0
SKSE64 SE
Установка: (можно вручную или через менеджеры модов)
1. Для обычных пользователей модов: просто скачайте архив «все в одном» и установите в игру. Вы можете использовать менеджер модов или сделать это вручную.
2. Если устанавливаете вручную то берем из архива папку SKSE и кидаем в папку Data в игре, подтвердить слияние папки SKSE. Если все сделали правильно, то файлы .bin должны быть по пути:
Data / SKSE / Plugins /
Как установить Skse 64 и его плагины в Skyrim SE/AE
3. Обязательно должны быть установлены все файлы .bin для всех версий игры, игра автоматически использует правильный файл версии.
Источник: gamer-mods.ru
Address Library for SKSE Plugins SE
Описание
Скачать
Содержит файл заголовка и базу данных, чтобы легко сделать версию подключаемых модулей SKSE DLL независимой от версии. Для обычных пользователей мода: Скачайте и установите универсальный пакет из раздела файлов. Вы можете использовать менеджер модов или сделать это вручную. Файлы .bin должны находиться здесь:
Данные / SKSE / Плагины /
Файл содержит все версии базы данных в одном архиве. Вы можете установить их все одновременно, игра автоматически будет использовать правильную версию файла.
Ожидайте: | сек. |
Источник: 4mods.ru
Адресная библиотека для плагинов SKSE / Address Library for SKSE Plugins V2 / V8
ВАЖНО! Теперь эта версия разделена на 2 версии: Special Edition V2 (1.5.x) и Anniversary Edition V8 (1.6.x). ID, указывающие на адреса, не будут совпадать между этими двумя версиями (исполняемый файл игры слишком отличается, чтобы совпасть, и даже если бы они совпали, код внутри этих функций все равно отличается).
Эти библиотеки необходимые для всех современных модов. Потому, после установки SKSE обязательно их устанавливаем, иначе многие моды у вас просто не будут работать.
Для пользователей:
Здесь представлены все базы для поддержки SKSE64. Для игроков они необходимы для поддержки большинства модов.
Установка:
- Aniversary Edition build 2.2.3 (game version 1.6.640)
- Special Edition build 2.0.20 (game version 1.5.97)
Утилита не имеет никаких известных зависимостей, кроме базовой игры.
Моды, требующие эту утилиту:
(FR) iEquip | |
A Closer Look SSE | |
Alchemist’s journal | |
Animation Motion Revolution | Требуется для работы в версиях до 1.5.97 |
Arcing Spells | |
Armor Rating Rescaled SKSE Remake | All-in-one |
Auto Kill Move Screenshots | Возьмите базу данных для вашей версии игры. |
Auto Walk | |
Best In Class Plus Plus SKSE Remake | All-in-one или ваша версия игры |
Better Combat Escape — SSE | |
Better Jumping SE | |
Better Power Attack Direction Control — SSE | |
Bunny Hopper Of Skyrim | All-in-one |
Challenging Spell Learning | Требуется с версии 2.0.0 |
Classic RPG Archtypes AND FULL NPC Perks GAME OVERHAUL | |
Classic Sprinting Redone (SKSE64) | |
Cold Region Behavior — Beta Test | Необходимо |
Conditional Expressions — Subtle Face Animations — Polish Translation | |
Console Commands Extender | |
ConsoleUtilSSE | |
Copy Character Appearance | |
Dialogue Movement Enabler | |
Difficulty Balance | |
Disable Follower Collision | |
Display Enemy Level | |
Diziet’s Player Home Bath Undressing for SkyrimSE | Это поддержка для расширителя Papyrus Extender от powerofthree. |
Don’t Eat Spell Tomes (Modder’s Resource) | |
Dynamic Animation Replacer | |
Dynamic Equipment Manager SKSE Updated | All-in-one |
Dynamic Volumetric Lighting and Sun Shadows | |
Enchanted Arsenal — SSE | |
Encounter Zones Unlocked SE | |
Enhanced Death Cam | |
Enhanced Reanimation | |
Equip Enchantment Fix | |
Essential Favorites | |
Essential Reading | |
Essentials Be Gone SKSE Reborn | All-in-one |
Face Discoloration Fix | |
Fatal Wedgies | |
Favorite Misc Items | |
Flasks — A Potion Utility Mod | |
Flat Map Markers SSE | |
Floating Damage | |
Frozen Electrocuted Combustion | Загрузите bin-файл, соответствующий вашей версии SSE |
Glow Be Gone SKSE Updated | mh-hm |
Horse Stamina HUD — Script-Free | |
I’m Walkin’ Here | |
iEquip | Важный |
iEquip — PORTUGUES BR | Важный |
Immersive Spell Learning — DESTified | |
Improvement Names Customized SSE | |
Individual Shout Cooldown Remake | All-in-one или ваша версия игры |
Injuries for both PC AND NPCs | |
kj’s Lightweight Skyrim Setup | |
Lesen bildet 1.0.4 DV | |
LibFire | |
LibMathf | |
Locational Damage(SKSE Plugin) | |
Master of Disguise SSE | Крайне необходимо для Master of Disguise SSE v1.5.x |
Mfg Fix | |
MiniMap | |
Misc High Heels Sitting Height Fix | |
Misc Hkx Xml Converter SSE | |
monster race crash fix | |
More Informative Console | Требуется для версий 0.40 и выше |
moreHUD SE | |
moreHUD SE — Polish Translation | |
Name Those Ash Piles | |
No Attack Messages | |
No Enchantment Restriction SKSE Remake | |
No Lockpick Activate (SKSE) — Updated | Загрузите «All-in-one» или версию для той версии игры, которую используете. |
Notification Log SSE | |
NPC AI Process Position Fix — SSE | |
NPC Stamina Matters (SKSE) | All-in-one или ваша текущая версия |
OnHit Animations Framework — SSE | |
OStim — OSex overhaul and API | |
OStim — OSex overhaul and API (RUS) | |
Papyrus INI Getter Plugin-SSE | |
Passive Weapon Enchantment Recharging — Enchanted Weapons Recharge Over Time | |
Perk Point Awards Redux | Жесткое требование для Spell Perk Item Distributor |
Play as a Dragon SE | |
Player Rotation in ShowRaceMenu | |
Poser Hotkeys Plus SSE | |
Poser Hotkeys Plus SSE — For 2.5.1 — Simplifiled Chinese Translation | |
Potion Combining | |
powerofthree’s Papyrus Extender | загрузите bin-файл, соответствующий вашей версии SSE |
Project Proteus — SE — TR | |
Quick Loot RE | |
RandomIdleAnimation | |
Reading Is Good (SKSE) | |
Realistic Body System 2020(SSE) | |
Regen Adjuster SKSE | |
Remember Lockpick Angle — Updated | Обязательно возьмите обновленную базу данных для любой версии игры, которую вы используете — они НЕ включены! |
Sales Overflow Solved | |
Scaleform Translation Plus Plus | |
Simple Dual Sheath | |
Simple Offence Suppression | |
Simple Weapon Swing Parry — Scripts Free — SSE | |
SKO — Simple Knock Out | Требуется для Spell Perk Item Distributor. |
Sky Idles SE | |
Sky Sprint SE | |
Skyrim Outfit System SE Revived | |
Skyrim Souls RE — Updated | |
Slayable Offspring SKSE | |
Sleep to Gain Experience | |
Smart Harvest SE | Для CommonLibSSE |
SmoothCam | |
Souls-Like SmoothCam Preset | Smoothcam также нуждается в этом |
Speed Casting SKSE Remake | All-in-one или ваша версия игры |
Spell Perk Item Distributor (SPID) | Загрузить файл .bin, соответствующий вашей версии SSE (не требуется для пользователей VR) |
SSE Display Tweaks | |
SSE Engine Fixes (skse64 plugin) | |
SSE FPS Stabilizer | Если только вы не используете Skyrim версии 1.5.97 |
SSE Hooks | По желанию |
Stagger Direction Fix — SSE | |
Stay At The System Page — Updated | |
Stay With Me SSE | |
Strange Runes | Жесткое требование |
Survival Control Panel | |
Time Format Changer | |
True Spear Combat — DAR | |
Unequip Quiver SE | |
Unlimited Fast Travel | |
Vampire Lords Can Fly (With Collision) | |
waxton’s quickstart tutorial | |
Where s the key | All-in-one или ваша текущая версия |
Whose Quest Is It Anyway | |
Whose Quest Is It Anyway Espanol | Вы должны установить его требования, если они необходимы. |
Yes Im Sure | |
You Can Sleep SKSE Remake | All-in-one или ваша текущая версия |
zone magic | Необходимо для версии 0.2 и выше |
zxlice BackStab and Parry SSE — Script Free | |
zxlice hitStop SSE — Script Free | |
zxlice’s ultimate potion animation — ZUPA |
Остальное вам читать не нужно. Оно для разработчиков.
Для авторов плагинов SKSE DLL:
Это материал для мододелов (заголовочный файл). Вы можете загрузить базу данных, которая хранит смещения, чтобы ваш DLL-плагин мог быть независимым от версии без необходимости перекомпиляции. Заголовочный файл можно загрузить из дополнительной секции файлов.
Как использовать
Самый быстрый способ:
Код: Скопировать в буфер обмена
#include «versiondb.h» void * MyAddress = NULL; unsigned long long MyOffset = 0; bool InitializeOffsets() < // Allocate on stack so it will be unloaded when we exit this function. // No need to have the whole database loaded and using up memory for no reason. VersionDb db; // Load database with current executable version. if (!db.Load()) < _FATALERROR(«Failed to load version database for current executable!»); return false; >else < // «SkyrimSE.exe», «1.5.97.0» _MESSAGE(«Loaded database for %s version %s.», db.GetModuleName().c_str(), db.GetLoadedVersionString().c_str()); >// This address already includes the base address of module so we can use the address directly. MyAddress = db.FindAddressById(123); if (MyAddress == NULL) < _FATALERROR(«Failed to find address!»); return false; >// This offset does not include base address. Actual address would be ModuleBase + MyOffset. if (!db.FindOffsetById(123, MyOffset)) < _FATALERROR(«Failed to find offset for my thing!»); return false; >// Everything was successful. return true; >
Теперь вы задаетесь вопросом, что это за значение «123». Это идентификатор адреса. Базы данных разных версий будут иметь один и тот же ID для адреса, но он может указывать на разные значения. Чтобы получить список всех пар ID и значений для конкретной версии, сделайте следующее:
Код: Скопировать в буфер обмена
#include «versiondb.h» bool DumpSpecificVersion() < VersionDb db; // Try to load database of version 1.5.62.0 regardless of running executable version. if (!db.Load(1, 5, 62, 0)) < _FATALERROR(«Failed to load database for 1.5.62.0!»); return false; >// Write out a file called offsets-1.5.62.0.txt where each line is the ID and offset. db.Dump(«offsets-1.5.62.0.txt»); _MESSAGE(«Dumped offsets for 1.5.62.0»); return true; >
Вместо 1, 5, 62, 0 поставьте версию, с которой вы меняете и знакомы. Сначала у вас должен быть соответствующий файл базы данных в каталоге DataSKSEPlugins.
После этого в главном каталоге Skyrim должен появиться новый файл под названием «offsets-1.5.62.0.txt» или как угодно, что вы указали в качестве имени файла. Он будет в формате, в котором каждая строка:
Decimal IDHex Offset
Например, если у вас есть адрес 142F4DEF8 (статический указатель персонажа игрока) в версии 1.5.62.0, который вы хотите сделать независимым от версии, вы должны сделать следующее:
1. Найдите 2F4DEF8 в файле смещений. Потому что это смещение без базы 140000000
2. Убедитесь, что ID 517014 (десятичный!).
3. Если вы хотите, чтобы этот адрес был в вашей DLL во время выполнения, сделайте следующее:
void* addressOf142F4DEF8 = db.FindAddressById(517014);
Вот и все.
Структура VersionDb имеет следующие функции:
Код: Скопировать в буфер обмена
bool Dump(const std::string // Dump currently loaded database to file bool Load(int major, int minor, int revision, int build); // Load a specific version if the db-major-minor-revision-build.bin exists in Data/SKSE/Plugins directory bool Load(); // Load the version for current application void Clear(); // Clear currently loaded database void GetLoadedVersion(int minor, int build) const; // Get the version of database file we have loaded right now bool GetExecutableVersion(int minor, int build) const; // Get the version of currently executing application const std::string // Get the name of currently loaded database module, this should show «SkyrimSE.exe» const std::string // Get the currently loaded version as string, e.g. «1.5.62.0» const std::map // Get the map of ID to offset if you need to iterate it manually void* FindAddressById(unsigned long long id) const; // Find address by ID, this will already include base and be correct address. It will return NULL if not found! bool FindOffsetById(unsigned long long id, unsigned long long // Find offset by ID, this will just be offset without base included. bool FindIdByAddress(void* ptr, unsigned long long // Find ID by address, this will attempt a reverse lookup to convert address to ID bool FindIdByOffset(unsigned long long offset, unsigned long long // Find ID by offset, this will attempt a reverse lookup to convert offset to ID
То, что вы должны знать и иметь в виду:
1. Вы можете включить любой (или все) файлы базы данных в ваш плагин, но это может значительно увеличить размер файла (примерно на 2,5 мб). Я бы рекомендовал включать только последнюю версию (которая на момент написания статьи была 1.5.97.0), а если пользователям нужна более старая версия, вы можете указать им на эту страницу и позволить им самим скачать базу данных определенной версии. Хотя у меня нет никаких проблем, если вы решите включить все версии базы данных в свой плагин или даже загрузить их на другие сайты.
2. Вы ВСЕГДА должны загружать базу данных только один раз при запуске, инициализировать/кэшировать нужные вам адреса и позволить ей выгрузиться. Выгрузка означает, что структура VersionDb будет удалена или потеряна (если вы выделили ее в стеке). Это позволит вам не использовать ненужный объем памяти во время работы игры. Нет необходимости держать базу данных загруженной во время игры.
3. База данных содержит адреса функций, глобальных переменных, RTTI, vtables и всего остального, на что может быть ссылка. Она не содержит адресов, которые находятся в середине функций или середине глобальных переменных. Если вам нужен адрес в середине функции, вы должны найти базовый адрес функции и добавить дополнительное смещение самостоятельно.
4. Вы всегда должны проверять результат, чтобы убедиться, что база данных загрузилась успешно (bool Load returned true) и что запрашиваемые адреса действительно вернули действительный результат (не NULL). Если загрузка не удалась, это означает, что, скорее всего, отсутствует файл. Если запрос не выполняется, это означает, что адрес не может быть найден в данной версии.
Это может означать, что либо код игры изменился настолько, что адрес больше не действителен для этой версии, либо сама база данных не смогла определить правильный адрес. Если произошло одно из этих событий, вам следует отменить инициализацию плагина, чтобы сообщить SKSE о неправильной загрузке. Или вручную показать сообщение об ошибке.
5. Также будет лучше, если вы проверите, существует ли адрес во всех версиях игры, прежде чем публиковать свой DLL-плагин. Для этого загрузите файл базы данных каждой версии и запросите один и тот же ID адреса в каждой из них, чтобы убедиться, что он существует:
Код: Скопировать в буфер обмена
bool LoadAll(std::vector static int versions[] = < 3, 16, 23, 39, 50, 53, 62, 73, 80, 97, -1 >; for (int i = 0; versions[i] >= 0; i++) < VersionDb * db = new VersionDb(); if (!db->Load(1, 5, versions[i], 0)) < delete db; return false; >all.push_back(db); > return true; > bool ExistsInAll(std::vector unsigned long long result = 0; for (auto db : all) < if (!db->FindOffsetById(id, result)) return false; > return true; > void FreeAll(std::vector for (auto db : all) delete db; all.clear(); >bool IsOk() < std::vectorall; if (!LoadAll(all)) < _FATALERROR(«Failed to load one or more version databases for current executable!»); FreeAll(all); return false; >if (!ExistsInAll(all, 517014)) < _FATALERROR(«517014 does not exist in all versions of the database!»); FreeAll(all); return false; >FreeAll(all); // Ok! return true; >
Таким образом, вы можете быть уверены, что ваш DLL-мод будет работать во всех версиях, или если он не работает в некоторых версиях, вы можете написать об этом на странице вашего мода.
6. Иногда вам нужно сделать что-то другое в зависимости от версии игры. Вы можете сделать это с помощью этого фрагмента кода:
Код: Скопировать в буфер обмена
int major = 0, minor = 0, revision = 0, build = 0; if (!db.GetExecutableVersion(major, minor, revision, build)) < _FATALERROR(«Something went wrong!»); return false; >// Running game is 1.5.x and at least version 1.5.39.0 if (major == 1 minor == 5 revision >= 39) < // Stuff . ? >
7. Пожалуйста, имейте в виду: если вы компилируете вашу SKSE DLL в режиме отладки, время загрузки базы данных может составлять около 14 секунд! В режиме релиза это время составляет около 0,2 секунды.
Credits:
Special thanks to the author of meh321 for the work done! / Отдельная благодарность автору meh321 за проделанную работу!
Загрузил Sadorimatsu Скачиваний 0 Просмотры 218 Релиз 04.06.2021 Обновление 17.12.2022 Рейтинг 0,00 звёзд 0 оценок
Источник: raidgame.ru