

# تشمل "versionb.h"
باطل * MyAddress = فارغ;
غير موقعة طويلة طويلة 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 ("فشل في العثور على تعويض لشيئي!");
}
//كل شيء كان ناجحا.
العودة صحيحة؛
}
# تشمل "versionb.h"
تفريغ المنطقي SpecificVersion ()
{
الإصدار db db؛
//حاول تحميل قاعدة بيانات الإصدار 1.5.62.0 بغض النظر عن تشغيل الإصدار القابل للتنفيذ.
if (! db.Load(1,5,62,0))
{
_FATALERROR ("فشل في تحميل قاعدة البيانات لـ 1.5.62.0!");
إرجاع كاذب؛
}
//اكتب ملفًا يسمى offsets-1.5.62.0.txt حيث يكون كل سطر هو المعرف والإزاحة.
db.Dump("offsets-1.5.62.0.txt")؛
_MESSAGE("تعويضات التخلص من 1.5.62.0")؛
العودة صحيحة؛
}
عنوان void*of 142 f 4 def 8 = db.FindAddressById(517014);
تفريغ bool (const std::string //تفريغ قاعدة البيانات المحملة حاليًا إلى الملف
تحميل bool (int major، int minor، int revision، int build)؛ //قم بتحميل إصدار محدد إذا كان db-major-minor-revition-build.bin موجودًا في دليل data/SKSE/plugins
تحميل بول (); //قم بتحميل الإصدار للتطبيق الحالي
باطل واضح (); //مسح قاعدة البيانات المحملة حاليًا
void GetLoadedVersion (int & major, int & minor, int & revision, int & build) const; //احصل على إصدار ملف قاعدة البيانات الذي قمنا بتحميله الآن
bool GetExecutableVersion (int //احصل على إصدار التطبيق المنفذة حاليًا
const std::string & GetModuleName () const; //احصل على اسم وحدة قاعدة البيانات المحملة حاليًا، ويجب أن يظهر هذا "SkyrimSE.exe"
const std::string //احصل على الإصدار المحمل حاليًا كسلسلة، على سبيل المثال. "1.5.62.0"
const std:: خريطة& GetOffsetMap () const; //احصل على خريطة المعرف لتعويضها إذا كنت بحاجة إلى تكرارها يدويًا
void * FindAddressById (معرف طويل غير موقع) const؛ //ابحث عن العنوان حسب المعرف، وسيتضمن هذا بالفعل العنوان الأساسي والصحيح. سوف تعود لاغية إذا لم يتم العثور عليها!
bool FindOffsetById (معرف طويل غير موقع، طويل غير موقع //ابحث عن الإزاحة حسب المعرف، سيتم إزاحة هذا فقط دون تضمين القاعدة.
تم العثور على bool byaddress(voil*ptr، غير موقعة طويلة طويلة //ابحث عن معرف حسب العنوان، سيحاول هذا البحث العكسي لتحويل العنوان إلى معرف
Bool findbyoffset (إزاحة طويلة غير موقعة، إزاحة طويلة غير موقعة //ابحث عن معرف حسب الإزاحة، سيحاول هذا البحث العكسي لتحويل الإزاحة إلى معرف
bool LoadAll (std:: متجه& كلّ)
{
إصدارات int ثابتة [] = {3، 16، 23، 39، 50، 53، 62، 73، 80، 97، -1}؛
لـ (int i = 0 ؛ الإصدار [i] > = 0 ؛ i ++)
{
الإصدار * db = الإصدار الجديد ();
if (! db-> Load(1، 5، الإصدارات[i]، 0))
{
حذف ديسيبل ؛
إرجاع كاذب؛
}
all.push_back (ديسيبل);
}
العودة صحيحة؛
}
Bool existensinall (std:: vector& الكل ، معرف طويل غير موقع)
{
نتيجة طويلة غير موقعة = 0؛
{
if (! db-> FindOffsetById(id، نتيجة))
}
العودة صحيحة؛
}
void FreeAll(std::vector& كلّ)
{
لـ (ديسيبل التلقائي: الكل)
حذف ديسيبل ؛
all.clear ();
}
BooleIsOk ()
{
std::vectorجميع؛
إذا (! LoadAll(all))
{
_FATALERROR ("فشل في تحميل قواعد بيانات واحدة أو أكثر من الإصدارات للملف التنفيذي الحالي!");
حرية الكل (كل)؛
إرجاع كاذب؛
}
إذا (! Existenall(all، 517014))
{
_FATALERROR ("517014 غير موجود في جميع إصدارات قاعدة البيانات!");
}
حرية الكل (الكل);
//حسنا!
العودة صحيحة؛
}
int major = 0، minor = 0، revision = 0، build = 0؛
if (! db.GetExecutableVersion(رئيسي، ثانوي، مراجعة، بناء))
{
_FATALERROR ("حدث شيء خاطئ!");
إرجاع كاذب؛
}
//لعبة تشغيل هي 1.5.x والإصدار 1.5.39.0 على الأقل
إذا (رئيسي == 1 & & ثانوي == 5 & & مراجعة > = 39)
{
//أشياء... ؟
}
هل تحتاج مساعدة في التحميل أو التثبيت؟ انضم إلى مجتمع ديسكورد للحصول على الدعم.
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK