

# sertakan "versi b.h"
Batas* alamat saya = kosong;
Myoffset panjang yang tidak ditandatangani = 0;
bool InitializeOffsets ()
{
//alokasikan pada tumpukan sehingga akan dibongkar saat kita keluar dari fungsi ini.
//tidak perlu memuat seluruh database dan menggunakan memori tanpa alasan.
Versi db;
//memuat database dengan versi yang dapat dieksekusi saat ini.
if (! db.Load ())
{
_FATALERROR ("gagal memuat database versi untuk dapat dieksekusi saat ini!");
}
Yang lain
{
//"SkyrimSE.exe", "1.5.97.0"
_MESSAGE("database dimuat untuk %s versi %s. ", db.GetModuleName (). c_str (), db.GetLoadedVersionString (). c_str ());
}
//alamat ini sudah mencakup alamat dasar modul sehingga kita dapat menggunakan alamat tersebut secara langsung.
Alamat saya = db.FindAddressById(123);
Jika (alamat saya == kosong)
{
_FATALERROR ("gagal menemukan alamat!");
Mengembalikan palsu;
}
//offset ini tidak termasuk alamat dasar. Alamat sebenarnya adalah modulebase MyOffset.
if (! db.FindOffsetById(123, MyOffset))
{
_FATALERROR ("gagal menemukan offset untuk barang saya!");
}
//semuanya berhasil.
Kembali benar;
}
# sertakan "versi b.h"
Boolean dump SpecificVersion ()
{
Versi db;
//coba memuat database versi 1.5.62.0 terlepas dari menjalankan versi yang dapat dieksekusi.
if (! db.Load(1,5,62,0))
{
_FATALERROR ("gagal memuat database untuk 1.5.62.0!");
Mengembalikan palsu;
}
//tulis file yang disebut offsets-1.5.62.0.txt di mana setiap baris adalah id dan offset.
db.Dump("offset-1.5.62.0.txt ");
_MESSAGE("offset yang dibuang untuk 1.5.62.0 ");
Kembali benar;
}
Batas*alamat142f4def8 = db.FindAddressById(517014);
bool Dump (konst std::string //membuang database yang saat ini dimuat ke file
Beban bool (int major, int minor, int revisi, int build); //memuat versi tertentu jika db-major-minor-revision-build.bin ada di direktori data/SKSE/plugins
Beban bool (); //memuat versi untuk aplikasi saat ini
Kekosongan jelas (); //hapus database yang sedang dimuat
void GetLoadedVersion (int //dapatkan versi file database yang telah kami muat sekarang
bool GetExecutableVersion (int //dapatkan versi aplikasi yang sedang dijalankan
const std:: string //dapatkan nama modul database yang saat ini dimuat, ini harus menunjukkan "SkyrimSE.exe"
Konst std:: string //dapatkan versi yang saat ini dimuat sebagai string, mis. "1.5.62.0"
Konst std:: peta& GetOffsetMap () konstan; //dapatkan peta id untuk dioffset jika Anda perlu mengulanginya secara manual
void*FindAddressById (id panjang panjang tanpa tanda tangan) konst; //temukan alamat berdasarkan id, ini sudah menyertakan alamat dasar dan alamat yang benar. Itu akan kembali nol jika tidak ditemukan!
bool FindOffsetById (id panjang panjang tanpa tanda tangan, panjang panjang tanpa tanda tangan //temukan offset berdasarkan id, ini hanya akan dioffset tanpa dasar disertakan.
Bool ditemukan oleh alamat (batas*ptr, panjang panjang tidak ditandatangani //temukan id demi alamat, ini akan mencoba pencarian terbalik untuk mengubah alamat menjadi id
Bool findbyoffset (offset panjang yang tidak ditandatangani, offset panjang yang tidak ditandatangani //temukan id demi offset, ini akan mencoba pencarian terbalik untuk mengubah offset menjadi id
bool LoadAll (std::vektor& Semua)
{
Versi int statis [] = {3, 16, 23, 39, 50, 53, 62, 73, 80, 97, -1};
Untuk (int i=0; version[i] > = 0; i ++)
{
Versi * db = versi baru ();
if (! db-> beban(1,5, versi[i],0))
{
Menghapus db;
Mengembalikan palsu;
}
all.push_back (db);
}
Kembali benar;
}
Bool existensinall (std::vektor& semua, id panjang yang tidak ditandatangani)
{
Hasil panjang panjang yang tidak ditandatangani = 0;
{
if (! db-> FindOffsetById(id, hasil))
}
Kembali benar;
}
void FreeAll(std::vektor& Semua)
{
Untuk(db otomatis: semua)
Menghapus db;
all.clear ();
}
Boolean IsOk ()
{
std::vektorSemua;
Jika (! Memuat semua (semua))
{
_FATALERROR ("gagal memuat satu atau lebih database versi untuk dapat dieksekusi saat ini!");
Gratis semua (semua);
Mengembalikan palsu;
}
Jika (! Eksissinall(semua, 517014))
{
_FATALERROR ("517014 tidak ada di semua versi database!");
}
Gratis semua (semua);
//Oke!
Kembali benar;
}
int major = 0, minor = 0, revisi = 0, build = 0;
if (! db.GetExecutableVersion(utama, minor, revisi, build))
{
_FATALERROR ("ada yang salah!");
Mengembalikan palsu;
}
//menjalankan game adalah 1.5.x dan setidaknya versi 1.5.39.0
Jika (major == 1 & & minor == 5 & & revisi > = 39)
{
//barang-barang...?
}
Butuh bantuan dengan unduhan atau instalasi? Bergabunglah dengan komunitas Discord kami untuk dukungan!
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK