作者:meh321最後更新:2024-02-14 09:19:5421.1M2.3MB
#包括“versiondb.h”
void*MyAddress=NULL
無符號long long MyOffset=0;
bool InitializeOffsets()
{
//在堆棧上分配,這樣當我們退出這個函數時,它將被卸載。
//不需要加載整個數據庫並無緣無故地耗盡內存。
版本數據庫數據庫;
//使用當前可執行版本加載數據庫。
if(!db.Load())
{
_FATALERROR(“無法加載當前可執行文件的版本數據庫!”);
}
else
{
//"SkyrimSE.exe","1.5.97.0"
_MESSAGE("已加載%s版本%s的數據庫",db.GetModuleName().c_str(),db.GetLoadedVersionString().c_str());
}
//這個地址已經包含了模塊的基址,所以我們可以直接使用這個地址。
MyAddress=db.FindAddressById(123);
if(MyAddress==NULL)
{
_FATALERROR(“找不到地址!”);
返回false;
}
//此偏移量不包括基址。 實際地址將是ModuleBase+MyOffset。
if(!db.FindOffsetById(123, MyOffset))
{
_FATALERROR(“找不到我的東西的偏移量!”);
}
//一切都很成功。
返回true;
}
#包括“versiondb.h”
布爾轉儲SpecificVersion()
{
版本數據庫數據庫;
//嘗試加載1.5.62.0版本的數據庫,而不管運行的可執行版本如何。
如果(!db.Load(1, 5, 62, 0))
{
_FATALERROR(“無法加載1.5.62.0的數據庫!”);
返回false;
}
//寫出一個名為offsets-1.5.62.0.txt的文件,其中每一行都是ID和偏移量。
db.Dump("offsets-1.5.62.0.txt");
_MESSAGE(“1.5.62.0的轉儲偏移量”);
返回true;
}
void*addressof 142 f 4 def8=db.FindAddressById(517014);
布爾轉儲(常量標準::字符串和路徑); //將當前加載的數據庫轉儲到文件
布爾加載(int major、int minor、int revision、int build); //如果Data/SKSE/Plugins目錄中存在db-major-minor-revision-build.bin,則加載特定版本
bool Load(); //加載當前應用程序的版本
void Clear(); //清除當前加載的數據庫
void GetLoadedVersion(int&major、int&minor、int&revision、int&build)常量; //獲取我們現在加載的數據庫文件的版本
bool GetExecutableVersion(int&major,int&minor,int&revision,int&build)常量; //獲取當前執行的應用程序的版本
const std::string&GetModuleName()const; //獲取當前加載的數據庫模塊的名稱,這應該顯示“SkyrimSE.exe”
const std::string&GetLoadedVersionString()const; //以字符串形式獲取當前加載的版本,例如“1.5.62.0”
const std::map<unsigned long long, unsigned long long>&GetOffsetMap()常量; //如果需要手動迭代,則獲取要偏移的ID的映射
void*FindAddressById(無符號長長id)常量; //按ID查找地址,這將已經包括基址並且是正確的地址。 如果找不到,它將返回NULL!
bool FindOffsetById(無符號長長id,無符號長長&結果)常量; //按ID查找偏移量,這將只是不包括基數的偏移量。
bool FindIdByAddress(void*ptr,無符號long long&result)常量; //按地址查找ID,這將嘗試反向查找以將地址轉換為ID
bool FindIdByOffset(無符號長長偏移量,無符號長長&結果)常量; //按偏移量查找ID,這將嘗試反向查找以將偏移量轉換為ID
bool LoadAll(std::vector<VersionDb*>(&all)
{
靜態int版本[]={3,16,23,39,50,53,62,73,80,97,-1};
對於(int i=0;版本[i]>=0;i++)
{
version db*db=new version db();
if(!db->Load(1, 5,版本[i], 0))
{
刪除數據庫;
返回false;
}
all.push_back(db);
}
返回true;
}
bool ExistsInAll(std::vector<VersionDb*>(&all,無符號長id)
{
無符號長長結果=0;
{
if(!db->FindOffsetById(id,result))
}
返回true;
}
void FreeAll(std::vector<VersionDb*>(&all)
{
對於(自動數據庫:全部)
刪除數據庫;
全部。clear();
}
布爾IsOk()
{
std::vector<VersionDb*>全部;
if(!LoadAll(all))
{
_FATALERROR(“無法加載當前可執行文件的一個或多個版本數據庫!”);
FreeAll(全部);
返回false;
}
if(!ExistsInAll(all, 517014))
{
_FATALERROR("517014不存在於所有版本的數據庫中!");
}
FreeAll(全部);
//好的!
返回true;
}
int major=0,minor=0,revision=0,build=0;
if(!db.GetExecutableVersion(major、minor、revision、build))
{
_FATALERROR(“出了問題!”);
返回false;
}
//正在運行的遊戲是1.5.x並且至少是1.5.39.0版本
如果(主要==1&&次要==5&&修訂>=39)
{
//東西...?
}

立即下载模组
安裝 LagoFast,啟動 The Elder Scrolls V: Skyrim Special Edition 並暢玩你喜愛的模組。