

# bao gồm "versiondb.h"
void*MyAddress=NULL;
Myoffset dài không có dấu = 0;
bool InitializeOffsets ()
{
//phân bổ trên ngăn xếp để nó sẽ được dỡ tải khi chúng ta thoát khỏi hàm này.
//không cần phải tải toàn bộ cơ sở dữ liệu và sử dụng hết bộ nhớ mà không có lý do gì.
Phiên bản db db;
//tải cơ sở dữ liệu với phiên bản thực thi hiện tại.
if (! db.Load ())
{
_FATALERROR ("không tải cơ sở dữ liệu phiên bản cho tệp thực thi hiện tại!");
}
Nếu không
{
//"SkyrimSE.exe", "1.5.97.0"
_MESSAGE("cơ sở dữ liệu đã tải cho %s phiên bản %s. ", db.GetModuleName (). c_str (), db.GetLoadedVersionString (). c_str ());
}
//địa chỉ này đã bao gồm địa chỉ cơ bản của mô-đun để chúng ta có thể sử dụng địa chỉ đó trực tiếp.
địa chỉ my=db.FindAddressById(123);
if (địa chỉ my==NULL)
{
_FATALERROR ("không tìm được địa chỉ!");
Trả lại sai;
}
//độ bù này không bao gồm địa chỉ cơ bản. địa chỉ thực tế sẽ là modulebase MyOffset.
if (! db.FindOffsetById(123, MyOffset))
{
_FATALERROR ("không tìm được bù đắp cho thứ của tôi!");
}
//mọi thứ đều thành công.
Trả lại đúng;
}
# bao gồm "versiondb.h"
Boolean dump SpecificVersion ()
{
Phiên bản db db;
//cố gắng tải cơ sở dữ liệu của phiên bản 1.5.62.0 bất kể đang chạy phiên bản thực thi.
if (! db.Load(1,5,62,0))
{
_FATALERROR ("không tải cơ sở dữ liệu cho 1.5.62.0!");
Trả lại sai;
}
//viết ra một tệp có tên offsets-1.5.62.0.txt trong đó mỗi dòng là id và offset.
db.Dump ("offsets-1.5.62.0.txt");
_MESSAGE("bù đắp được bán cho 1.5.62.0 ");
Trả lại đúng;
}
void*addressOf142F4DEF8 = db.FindAddressById(517014);
bool Dump (const std::string //đổ cơ sở dữ liệu hiện đang tải vào tệp
Tải bool (int major, int minor, int revision, int build); //tải một phiên bản cụ thể nếu db-major-minor-revision-build.bin tồn tại trong thư mục data/SKSE/plugins
Tải bool (); //tải phiên bản cho ứng dụng hiện tại
Void rõ ràng (); //xóa cơ sở dữ liệu hiện đang tải
void GetLoadedVersion (int & major, int & minor, int & revision, int & build) const; //lấy phiên bản tệp cơ sở dữ liệu mà chúng tôi đã tải ngay bây giờ
bool GetExecutableVersion (int & major, int & minor, int & revision, int & build) const; //lấy phiên bản ứng dụng hiện đang thực thi
const std::string & GetModuleName () const; //lấy tên của mô-đun cơ sở dữ liệu hiện đang tải, điều này sẽ hiển thị "SkyrimSE.exe"
const std::string & GetLoadedVersionString () const; //lấy phiên bản hiện đang tải dưới dạng chuỗi, ví dụ: "1.5.62.0"
const std:: bản đồ& GetOffsetMap () const; //lấy bản đồ id để bù đắp nếu bạn cần lặp lại nó theo cách thủ công
void * FindAddressById (id dài không có dấu) const; //tìm địa chỉ theo id, điều này sẽ bao gồm địa chỉ cơ sở và chính xác. Nó sẽ trả về null nếu không tìm thấy!
bool FindOffsetById (id dài không có dấu, không có dấu dài //tìm bù trừ theo id, điều này sẽ chỉ được bù trừ mà không bao gồm cơ sở.
Bool findbyaddress(void*ptr, longlong không ký hiệu //tìm id theo địa chỉ, điều này sẽ cố gắng tìm kiếm ngược để chuyển đổi địa chỉ thành id
Bool findbyoffset (bù trừ dài không ký hiệu, bù trừ dài không ký hiệu //tìm id theo bù trừ, điều này sẽ cố gắng tìm kiếm ngược để chuyển đổi bù trừ thành id
bool LoadAll (std:: vector& Tất cả)
{
Phiên bản int tĩnh [] = {3, 16, 23, 39, 50, 53, 62, 73, 80, 97, -1};
Đối với (int i=0; version[i] > = 0; i ++)
{
Phiên bản * db = phiên bản mới ();
if (! db-> Load(1,5, phiên bản [i], 0))
{
Xóa db;
Trả lại sai;
}
Tất cả.push_back(db);
}
Trả lại đúng;
}
bool ExistsInAll (std:: vector& tất cả, id dài không ký)
{
Kết quả dài không ký = 0;
{
if (! db-> FindOffsetById(id, kết quả))
}
Trả lại đúng;
}
void FreeAll (std::vector& Tất cả)
{
Cho (db tự động: tất cả)
Xóa db;
all.clear ();
}
Boolean IsOk ()
{
std::vectơTất cả;
if (! LoadAll (tất cả))
{
_FATALERROR ("không tải được một hoặc nhiều cơ sở dữ liệu phiên bản cho tệp thực thi hiện tại!");
Miễn phí tất cả (tất cả);
Trả lại sai;
}
if (! ExistsInAll(all, 517014))
{
_FATALERROR("517014 không tồn tại trong tất cả các phiên bản của cơ sở dữ liệu! ");
}
Miễn phí tất cả (tất cả);
//Được rồi!
Trả lại đúng;
}
int major = 0, minor = 0, sửa đổi = 0, xây dựng = 0;
if (! db.GetExecutableVersion(chính, nhỏ, sửa đổi, xây dựng))
{
_FATALERROR ("có điều gì đó không ổn!");
Trả lại sai;
}
//đang chạy trò chơi là 1.5.x và ít nhất là phiên bản 1.5.39.0
if (chính == 1 & & nhỏ == 5 & & sửa đổi > = 39)
{
//thứ...?
}
Cần trợ giúp về tải xuống hoặc cài đặt? Tham gia cộng đồng Discord của chúng tôi để được hỗ trợ!
Giải pháp chơi game
Tài nguyên
Đối tác
Theo dõi chúng tôi trên
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK