

# Włączenie "versiondb.h"
void * myaddres=NULL;
Niezpisane długi myoffset = 0;
bool InitializeOffsets ()
{
//Przydzielaj na stack, tak zostanie rozładowany gdy wychodzimy z tej funkcji.
//Nie potrzebują załadowania całej bazy danych i używania pamięci bez powodu.
Wersję DB;
//Zładź bazę danych z aktualną wersją wykonującą.
if (! db.Load ())
{
_FATALERROR ("Nie udało się wciągnąć bazy danych wersji dla aktualnego wykonującego!");
}
Inaczej
{
//"SkyrimSE.exe", "1.5.97.0"
_MESSAGE ("Zładowana bazę danych dla %s wersji %s.", db.GetModuleName (). c_str (), db.GetLoadedVersionString (). c_str ());
}
//Adres ten zawiera już bazowy adres modułu, więc możemy użyć adresu bezpośrednio.
Myaddres=db.FindAddressById(123);
if (myaddres== NULL)
{
_FATALERROR ("Nie znalazły adresa!");
Zwrócić fałszy;
}
//Ten zmian nie obejmuje adres bazowego. Prawdziwy adres byłby Modulebase + MyOffset.
if (! db.FindOffsetById(123, MyOffset))
{
_FATALERROR ("Nie znalazłem kompensacie dla mojego rzeczy!");
}
//Wszystko było sukcesne.
Wrócić true;
}
# Włączenie "versiondb.h"
Dump booleński SpecificVersion ()
{
Wersję DB;
//Spróbuj załadować bazę danych wersji 1.5.62.0 bez względu na wykonanie wykonalnej wersji.
Jeśli (! db.Load(1,5,62,0))
{
_FATALERROR ("Nie udało się ładowania bazy danych dla 1.5.62.0!");
Zwrócić fałszy;
}
//Napisz plik o nazwie offsets-1.5.62.0.txt, gdzie każda linia jest ID i offset.
db.Dump ("offsets-1.5.62.0.txt");
_MESSAGE ("zostawione kompensaty za 1.5.62.0");
Wrócić true;
}
void* adresso142f4def8 = db.FindAddressById(517014);
bool Dump (const std:: string & path); //Złożyć obecnie załadowaną bazę danych do
bool Load (int major, int minor, int revision, int build); //Zładź konkretną wersją, jeśli db-major-minor-revision-build.bin istnieje w katalogu data/SKSE/ plugins
bool Load (); //Zładź wersja dla bieżącego programu
void Clear (); //Oczyścić obecnie załadowaną bazę danych
void GetLoadedVersion (int & major, int & minor, int & revision, int & build) const; //Zdobyć wersji pliku bazy danych, który należy teraz załadować
bool GetExecutableVersion (int & major, int & minor, int & revision, int & build) const; //Zdobyć wersja obecnie wykonującej aplikacji
const std:: string & GetModuleName () const; //Zdobyć nazwisko modułu bazy danych, powinno pokazać "SkyrimSE.exe"
const std:: string & GetLoadedVersionString () const; //Zabierz obecnie załadowaną wersją jako strzyning, np. "1.5.62.0"
const std:: Mapa& GetOffsetMap () const; //Zdobyć mapę ID do kompensowania jeśli potrzebujesz ją ręcznie iteracji
void* FindAddressById (niezpisane długi ID) const; //Znaleźć adres po identyfikacji, to już będzie włączony bazę i być prawdziwy adres. Wróci NULL, jeśli nie znaleziono!
bool FindOffsetById (niezpodpisany długi ID, niezpodpisany długi & rezultatem) const; //Znaleźć zmieniony przez ID, zmieniony to bez włączenia bazy.
bool FindIdByAddress (void * ptr, niezpisane długi & rezultat) const; //Znaleźć ID po adresie, próbuje to odwrotnego poszukiwania do konvertowania adres do ID
bool FindIdByOffset (niezpisane długe długe offset, niezpisane długe długe & rezultat) const; //Znaleźć ID przez zmianę, próbuje to odwrotnego poszukiwania do przekonania zmianowienia
bool LoadAll (std:: vector& Wszystko)
{
Statyczne wersje int [] = {3, 16, 23, 39, 50, 53, 62, 73, 80, 97, -1};
Dla (int i = 0; wersja [i] > = 0; i ++)
{
Wersję db*db = nowa wersję db ();
if (! db-> Load(1,5, wersji [i], 0))
{
Usunąć db;
Zwrócić fałszy;
}
all.push_back (db);
}
Wrócić true;
}
Bool existinall (std:: vector& Wszystko, niezpodpisane długi ID)
{
Niezpisane długi długi rezultaty = 0;
{
if (! db-> FindOffsetById (id, rezultat))
}
Wrócić true;
}
void FreeAll (std:: vector& Wszystko)
{
for (auto db: wszystko)
Usunąć db;
all.clear ();
}
Boolean IsOk ()
{
std:: vectorWszystkie;
Jeśli (! LoadAll (wszystko))
{
_FATALERROR ("Nie udało się załadowania jednej lub więcej bazy danych wersji dla aktualnego wykonania!");
Freeway (wszystko);
Zwrócić fałszy;
}
Jeśli (! ExistinAll (wszystko, 517014))
{
_FATALERROR ("517014 nie istnieje w wszystkich wersjach bazy danych!");
}
Freeway (wszystko);
//Ok!
Wrócić true;
}
int major = 0, minor = 0, revizja = 0, build = 0;
if (! db.GetExecutableVersion (major, minor, revision, build))
{
_FATALERROR ("Coś poszło nie tak!");
Zwrócić fałszy;
}
//Biegna gry jest 1.5.x i przynajmniej wersja 1.5.39.0
if (major = = 1 & minor = 5 & & revizja > = 39)
{
//Rzeczy...?
}
Potrzebujesz pomocy z pobieraniem lub instalacją? Dołącz do naszej społeczności Discord po wsparcie!
Rozwiązania dla graczy
Zasoby
Wzmacniacz
Śledź nas na
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK