SKSE插件的地址庫

作者 meh321·版本 v1.0·更新於 2020-02-08

包含頭文件和數據庫,可輕鬆實現SKSE DLL插件版本的獨立性。

截圖 共 1 張

模組介紹 作者原文

包含頭文件和數據庫,可輕鬆實現SKSE DLL插件版本的獨立性。

描述

注意!這是DLL插件作者的重要資源!除非已明確告知您需要它,否則所有這些對您都將毫無用處!不要認可或考慮這個mod。

對於普通的mod用戶:您可以從“文件”部分下載特定版本的偏移數據庫。選擇與您使用的遊戲版本相匹配的版本。該文件應該在這樣的路徑中:

數據/ SKSE /插件/db-*-*-*-*.bin

您無需閱讀其餘所有內容。

對於SKSE DLL插件作者:

這是一個modder資源(頭文件)。您可以加載一個存儲偏移量的數據庫,以便您的DLL插件可以獨立於版本而無需重新編譯。

如何使用

最快的方法:

劇透:表演

現在您想知道那裏的“ 123”值是多少。這是地址的ID。不同版本的數據庫的地址具有相同的ID,但它可能指向不同的值。要獲取特定版本的所有ID和值對的列表,請執行以下操作:

劇透:表演

而不是1、5、62、0會放入您要反轉和熟悉的版本。您必須首先在/ Data / SKSE / Plugins目錄中具有相應的數據庫文件。

調用此名稱後,您應在Skyrim主目錄中擁有一個名爲“ offsets-1.5.62.0.txt”的新文件,或輸入爲文件名的任何文件。它將採用以下格式:

十進制ID <tab>十六進制偏移量<newline>

例如,如果您要使版本獨立於1.5.62.0中的地址142F4DEF8(玩家角色靜態指針),則可以這樣做:

1.在偏移文件中查找2F4DEF8。因爲這是沒有基數的偏移量140000000

2.確認ID爲517014(十進制!)

3.如果要在運行時在DLL中使用此地址,請執行以下操作:

void * addressOf142F4DEF8 = db.FindAddressById(517014);

那裏有。

VersionDb結構具有以下功能:

劇透:表演

您應該瞭解並牢記的事項:

1.您可以在插件中包含任何(或所有)數據庫文件,但可能會大大增加文件大小(大約2.5 mb)。我建議僅包括最新版本(在撰寫本文時爲1.5.97.0),如果用戶需要舊版本,則可以將其指向此處,並讓他們自己下載特定版本的數據庫。雖然我沒有問題,但是您是否決定將所有數據庫版本都包含在插件中,甚至可以將它們上傳到其他站點。

2.您應該始終在啓動時僅加載一次數據庫,初始化/緩存所需的地址,然後將其卸載。卸載只是意味着VersionDb結構被刪除或丟失(如果在堆棧上分配)。這樣可以確保您在遊戲運行時不會浪費不必要的內存。無需在遊戲過程中保持數據庫加載。

3.數據庫包含函數,全局變量,RTTI,vtables以及可能引用它的任何其他內容的地址。它不包含位於函數中間或全局變量中間的地址。如果在函數中間需要一個地址,則應查找函數基地址並自己添加額外的偏移量。

4.您應始終檢查結果,以確保數據庫已成功加載(bool Load返回true),並且所查詢的地址實際上返回了有效結果(非NULL)。如果確實無法加載,則表示文件很可能丟失。如果查詢失敗,則意味着在該版本中找不到該地址。這可能意味着遊戲代碼已更改得足夠多,以致該地址對該版本不再有效,或者數據庫本身未能檢測到正確的地址。如果發生上述任何一種情況,都應該使插件初始化失敗,以使SKSE知道您未正確加載。或手動顯示錯誤消息。

5.最好在發佈DLL插件之前檢查並確保地址在所有版本的遊戲中都存在。爲此,加載數據庫文件的每個版本,並在每個版本中查詢相同的地址ID以確保其存在:

劇透:表演

這樣,您可以確保DLL mod可以在所有版本中使用,或者如果它在某些版本中不可用,則可以在mod頁面上編寫該文件。

6.有時您需要根據運行的遊戲版本執行其他操作。您可以使用以下代碼段進行操作:

劇透:表演

7.請記住:如果以調試方式編譯SKSE DLL,則數據庫的加載時間可能約爲14秒!在釋放模式下,此時間約爲0.2秒。

權限

做你想做的。您可以根據需要在數據庫中包含數據庫文件,因此無需將其標記爲依賴項。您可以將包括數據庫文件在內的mod上載到其他站點。無需信用。

————————————————————————————————

Description

ATTENTION! This is a modder resource for DLL plugin authors! Unless you've been specifically told you need it, then all of this will be useless to you! Don't endorse or think about this mod.

For regular mod users: you can download a specific version of the offset database from the files section. Pick the one that matches the game version you are using. The file should go in a path like this:

Data/SKSE/Plugins/db-*-*-*-*.bin

There is no need for you to read the rest of any of this.

For SKSE DLL plugin authors:

This is a modder resource (a header file). You can load a database that stores offsets so your DLL plugin can be version independent without requiring to be recompiled.

How to use

The quickest way:

Spoiler:

Show

Now you're wondering what is that "123" value there. This is the ID of an address. Different version databases will have the same ID for an address but it may point to different values. To get a list of all ID and value pair for a specific version do this:

Spoiler:

Show

Instead of 1, 5, 62, 0 put the version you are reversing and familiar with. You must have the corresponding database file in /Data/SKSE/Plugins directory first.

After you call this you should have a new file in the main Skyrim directory called "offsets-1.5.62.0.txt" or whatever you put as the file name. It will be in the format where each line is:

Decimal ID<tab>Hex Offset<newline>

For example if you have an address 142F4DEF8 (player character static pointer) in 1.5.62.0 that you want to make version independent you would do this:

  • Look up 2F4DEF8 in the offsets file. Because this is the offset without the base 140000000
  • See that the ID is 517014 (decimal!)
  • If you want this address in your DLL at runtime do this:

void* addressOf142F4DEF8 = db.FindAddressById(517014);

And there you have it.

The VersionDb struct has the following functions:

Spoiler:

Show

Things you should know and keep in mind:

  • You can include any (or all) of the database files with your plugin but it may increase the file size considerably (by around 2.5 mb). I would recommend to include only the latest version (which was 1.5.97.0 at the time of writing this), and if users need older version you can point them …

安裝與使用 安裝:按包內說明操作

  1. 解壓本站下載的壓縮包,先讀包內的 readme / 說明檔案。
  2. 這類遊戲沒有通用的模組管理器:有的模組直接替換遊戲檔案、有的放進遊戲專屬的 Mods 資料夾、有的要先裝遊戲對應的社群載入器或工具,以包內說明為準。
  3. 嚴格按說明放置檔案;標註「前置依賴」的模組需要把依賴一併裝好。
  4. 啟動遊戲確認載入成功;部分遊戲需要在設定或模組選單裡手動啟用。

不同遊戲、不同模組的安裝位置差異很大,包內說明是最可靠的依據。

檔案與校驗

檔案名稱
SKSE插件的地址库
檔案大小
2.1 KiB
SHA-256
be6aba075529a9d8bced20d0ee2e12f9deb2da381c51b4cac6b4a465b388e7e0
入庫時間
2026-10-07 23:31