Merge pull request #696 from hkva/item-schema-patch
Fix Custom Item Schema Loading
This commit is contained in:
commit
762aca2bf8
@ -389,45 +389,37 @@ void DrawText()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
void Schema_Reload()
|
void Schema_Reload()
|
||||||
{
|
{
|
||||||
logging::Info("Custom schema loading is not supported right now.");
|
static auto GetItemSchema = reinterpret_cast<void *(*) (void)>(gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC ? 8B 1D ? ? ? ? 85 DB 89 D8"));
|
||||||
|
|
||||||
static uintptr_t InitSchema_s = gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC ? 8B 5D ? 8B 7D ? 8B 03 89 1C 24 FF 50 ? C7 "
|
static auto BInitTextBuffer = reinterpret_cast<bool (*)(void *, CUtlBuffer &, int)>(gSignatures.GetClientSignature("55 89 E5 57 56 53 8D 9D ? ? ? ? 81 EC ? ? ? ? 8B 7D ? 89 1C 24 "));
|
||||||
"04 24 ? ? ? ?");
|
void *schema = GetItemSchema() + 0x4;
|
||||||
typedef bool (*InitSchema_t)(void *, CUtlBuffer &, int);
|
|
||||||
static InitSchema_t InitSchema = (InitSchema_t) InitSchema_s;
|
|
||||||
static uintptr_t GetItemSchema_s = gSignatures.GetClientSignature("55 89 E5 83 EC ? E8 ? ? ? ? C9 83 C0 ? C3 55 89 E5 8B 45 ?");
|
|
||||||
typedef void *(*GetItemSchema_t)(void);
|
|
||||||
static GetItemSchema_t GetItemSchema = (GetItemSchema_t) GetItemSchema_s; //(*(uintptr_t*)GetItemSchema_s +GetItemSchema_s + 4);
|
|
||||||
|
|
||||||
logging::Info("0x%08x 0x%08x", InitSchema, GetItemSchema);
|
FILE *file = fopen("/opt/cathook/data/items_game.txt", "r");
|
||||||
void *itemschema = (void *) ((unsigned) GetItemSchema() + 4);
|
|
||||||
void *data;
|
|
||||||
char *path = strfmt("/opt/cathook/data/items_game.txt").get();
|
|
||||||
FILE *file = fopen(path, "r");
|
|
||||||
delete[] path;
|
|
||||||
fseek(file, 0L, SEEK_END);
|
|
||||||
char buffer[5 * 1000 * 1000];
|
|
||||||
size_t len = ftell(file);
|
|
||||||
rewind(file);
|
|
||||||
buffer[len + 1] = 0;
|
|
||||||
fread(&buffer, sizeof(char), len, file);
|
|
||||||
CUtlBuffer buf(&buffer, 5 * 1000 * 1000, 9);
|
|
||||||
if (ferror(file) != 0)
|
if (ferror(file) != 0)
|
||||||
{
|
{
|
||||||
logging::Info("Error loading file");
|
logging::Info("Error loading file");
|
||||||
fclose(file);
|
fclose(file);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CUtlBuffer
|
||||||
|
char *text_buffer = new char[1000 * 1000 * 5];
|
||||||
|
size_t buffer_size = fread(text_buffer, sizeof(char), 1000 * 1000 * 5, file);
|
||||||
|
|
||||||
|
CUtlBuffer buf(text_buffer, buffer_size, 9);
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
logging::Info("0x%08x 0x%08x", InitSchema, GetItemSchema);
|
logging::Info("Loading item schema...");
|
||||||
bool ret = InitSchema(GetItemSchema(), buf, 133769);
|
bool ret = BInitTextBuffer(schema, buf, 0);
|
||||||
logging::Info("Loading %s", ret ? "Successful" : "Unsuccessful");
|
logging::Info("Loading %s", ret ? "Successful" : "Unsuccessful");
|
||||||
|
|
||||||
|
delete[] text_buffer;
|
||||||
}
|
}
|
||||||
CatCommand schema("schema", "Load custom schema", Schema_Reload);
|
CatCommand schema("schema", "Load custom schema", Schema_Reload);
|
||||||
*/
|
|
||||||
CatCommand name("name_set", "Immediate name change", [](const CCommand &args) {
|
CatCommand name("name_set", "Immediate name change", [](const CCommand &args) {
|
||||||
if (args.ArgC() < 2)
|
if (args.ArgC() < 2)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user