ผู้แต่ง:meh321ปรับปรุงล่าสุด :2024-02-14 09:19:5421.1M2.3MB
#รวม "versiondb.h"
void * MyAddress = NULL;
MyOffset ยาวที่ไม่มีลายเซ็น = 0;
bool InitializeOffsets ()
{
// จัดสรรบนสแต็กเพื่อให้จะถอดโหลดเมื่อเราออกจากฟังก์ชันนี้
//ไม่จำเป็นต้องโหลดฐานข้อมูลทั้งหมดและใช้หน่วยความจำหมดโดยไม่มีเหตุผล
เวอร์ชันdb db;
// โหลดฐานข้อมูลที่มีเวอร์ชันปฏิบัติการปัจจุบัน
ถ้า (!db.Load())
{
_FATALERROR("ไม่สามารถโหลดฐานข้อมูลเวอร์ชันสำหรับไฟล์ปฏิบัติการปัจจุบัน!");
}
อื่น ๆ
{
// "SkyrimSE.exe", "1.5.97.0"
_MESSAGE("โหลดฐานข้อมูลสำหรับ %s เวอร์ชัน %s.", db.GetModuleName().c_str(), db.GetLoadedVersionString().c_str());
}
// ที่อยู่นี้มีที่อยู่ฐานของโมดูลอยู่แล้ว ดังนั้นเราจึงสามารถใช้ที่อยู่ได้โดยตรง
MyAddress = db.FindAddressById(123);
ถ้า (ที่อยู่MyAddress==ว่าง)
{
_FATALERROR("ไม่พบที่อยู่!");
ส่งคืนเท็จ;
}
// ออฟเซ็ตนี้ไม่รวมที่อยู่ฐาน ที่อยู่จริงจะเป็น modulebase myoffset
ถ้า (!db.FindOffsetById(123, MyOffset))
{
_FATALERROR("ไม่พบการชดเชยสำหรับสิ่งของฉัน!");
}
//ทุกอย่างประสบความสำเร็จ
คืนความจริง;
}
#รวม "versiondb.h"
บูลีนดัมพ์ SpecificVersion()
{
เวอร์ชันdb db;
// ลองโหลดฐานข้อมูลเวอร์ชัน 1.5.62.0 โดยไม่คำนึงถึงเวอร์ชันปฏิบัติการที่กำลังทำงานอยู่
ถ้า (!db.Load(1,5,62,0))
{
_FATALERROR("ไม่สามารถโหลดฐานข้อมูลสำหรับ 1.5.62.0!");
ส่งคืนเท็จ;
}
// เขียนไฟล์ที่เรียกว่า offsets-1.5.62.0.txt โดยแต่ละบรรทัดเป็น ID และ offset
db.Dump("offsets-1.5.62.0.txt");
_MESSAGE("ออฟเซ็ตที่ถูกทิ้งสำหรับ 1.5.62.0");
คืนความจริง;
}
void * addressOf142F4DEF8 = db.FindAddressById(517014);
บูลดัมป์ (const std::สตริง // ทิ้งฐานข้อมูลที่โหลดอยู่ปัจจุบันไปยังไฟล์
โหลด bool (int major, int minor, int revision, int build); // โหลดเวอร์ชันเฉพาะหาก db-major-minor-revision-build.bin มีอยู่ในไดเรกทอรี Data/SKSE/Plugins
โหลดโบูล (); // โหลดเวอร์ชันสำหรับแอปพลิเคชันปัจจุบัน
void Clear (); // ล้างฐานข้อมูลที่โหลดอยู่ปัจจุบัน
void GetLoadedVersion (int // รับเวอร์ชันของไฟล์ฐานข้อมูลที่เราโหลดแล้วตอนนี้
bool GetExecutableVersion (int // รับเวอร์ชันของแอปพลิเคชันที่กำลังดำเนินการอยู่
const std::string // รับชื่อโมดูลฐานข้อมูลที่โหลดอยู่ปัจจุบัน สิ่งนี้ควรแสดง "SkyrimSE.exe"
const std::string // รับเวอร์ชันที่โหลดอยู่ปัจจุบันเป็นสตริง เช่น "1.5.62.0"
const std::แผนที่<unsigned long long, unsigned long long>& GetOffsetMap() const; // รับแผนที่ของ ID เพื่อชดเชยหากคุณต้องการทำซ้ำด้วยตนเอง
void * FindAddressById (รหัสยาวที่ไม่มีลายเซ็น) const; // ค้นหาที่อยู่ตามรหัส ซึ่งจะรวมที่อยู่ฐานและเป็นที่อยู่ที่ถูกต้องแล้ว มันจะกลับมาเป็นโมฆะหากไม่พบ!
bool FindOffsetById (รหัสยาวที่ไม่มีลายเซ็น, ไม่มีลายเซ็นยาว // ค้นหาการชดเชยตามรหัส สิ่งนี้จะถูกชดเชยโดยไม่รวมฐาน
bool findbyaddress (void * ptr, ไม่มีลายเซ็นยาว // ค้นหา ID ตามที่อยู่ สิ่งนี้จะพยายามค้นหาย้อนกลับเพื่อแปลงที่อยู่เป็น ID
bool findbyoffset (ชดเชยยาวที่ไม่มีลายเซ็น ชดเชยยาวที่ไม่มีลายเซ็น // ค้นหา ID โดย offset ซึ่งจะพยายามค้นหาย้อนกลับเพื่อแปลง offset เป็น ID
โหลด bool (std::เวกเตอร์<VersionDb*>& ทั้งหมด)
{
เวอร์ชัน int คงที่ [] = {3, 16, 23, 39, 50, 53, 62, 73, 80, 97, -1};
สำหรับ (int i=0;version[i]>=0;i++)
{
เวอร์ชัน * db = เวอร์ชันใหม่ ();
if(!db->โหลด(1, 5,เวอร์ชัน [i], 0))
{
ลบ db;
ส่งคืนเท็จ;
}
all.push_back(db);
}
คืนความจริง;
}
bool existensinall (std::เวกเตอร์<VersionDb*>& ทั้งหมด id ยาวที่ไม่มีลายเซ็น)
{
ผลลัพธ์ยาวที่ไม่ได้ลงนาม = 0;
{
if(!db-> FindOffsetById(id, ผลลัพธ์))
}
คืนความจริง;
}
void FreeAll (std::เวกเตอร์<VersionDb*>& ทั้งหมด)
{
สำหรับ (อัตโนมัติ db: ทั้งหมด)
ลบ db;
all.clear();
}
บูลีน IsOk()
{
std::เวกเตอร์<VersionDb*>ทั้งหมด;
ถ้า (!LoadAll (ทั้งหมด))
{
_FATALERROR ("ล้มเหลวในการโหลดฐานข้อมูลเวอร์ชันหนึ่งฉบับขึ้นไปสำหรับไฟล์ปฏิบัติการปัจจุบัน!");
ฟรีทั้งหมด (ทั้งหมด);
ส่งคืนเท็จ;
}
ถ้า (! existensinall (ทั้งหมด, 517014))
{
_FATALERROR("517014 ไม่มีอยู่ในฐานข้อมูลทุกเวอร์ชัน!");
}
ฟรีทั้งหมด (ทั้งหมด);
//โอเค!
คืนความจริง;
}
int major = 0, minor = 0, แก้ไข = 0, build = 0;
if(!db.GetExecutableVersion(หลัก, รอง, การแก้ไข, สร้าง))
{
_FATALERROR("มีบางอย่างผิดปกติ!");
ส่งคืนเท็จ;
}
//รันเกมคือ 1.5.x และอย่างน้อยเวอร์ชัน 1.5.39.0
ถ้า (หลัก = 1 & & รอง = = 5 & & แก้ไข > = 39)
{
// ของ...?
}

ดาวน์โหลด Mods ทันที
ติดตั้ง LagoFast เริ่มต้น The Elder Scrolls V: Skyrim Special Edition และเล่นกับ mod ที่คุณชื่นชอบ