Fixes for update

This commit is contained in:
fed 2024-02-07 18:52:23 +01:00
parent ad27dcb098
commit 978e251df8
No known key found for this signature in database
GPG Key ID: 1D2C630F04722996
7 changed files with 34 additions and 18 deletions

View File

@ -248,16 +248,21 @@ namespace gsc
{
void add(const std::string& name, const script_function& func)
{
try
auto index = 0u;
auto& ctx = (*game::plutonium::gsc_ctx);
if (ctx->func_exists(name))
{
const auto index = function_map_start++;
functions[index] = func;
(*game::plutonium::gsc_ctx)->func_add(name, index);
printf("[iw5-gsc-utils] Warning: function '%s' already defined\n", name.data());
index = ctx->func_id(name);
}
catch (const std::exception& e)
else
{
printf("[iw5-gsc-utils] failed to add function \"%s\": %s\n", name.data(), e.what());
index = function_map_start++;
ctx->func_add(name, index);
}
functions.insert(std::make_pair(index, func));
}
}
@ -265,16 +270,21 @@ namespace gsc
{
void add(const std::string& name, const script_method& func)
{
try
auto index = 0u;
auto& ctx = (*game::plutonium::gsc_ctx);
if (ctx->meth_exists(name))
{
const auto index = method_map_start++;
methods[index] = func;
(*game::plutonium::gsc_ctx)->meth_add(name, index);
printf("[iw5-gsc-utils] Warning: method '%s' already defined\n", name.data());
index = ctx->meth_id(name);
}
catch (const std::exception& e)
else
{
printf("[iw5-gsc-utils] failed to add method \"%s\": %s\n", name.data(), e.what());
index = method_map_start++;
ctx->meth_add(name, index);
}
methods.insert(std::make_pair(index, func));
}
}

View File

@ -35,11 +35,18 @@ namespace signatures
const auto base = reinterpret_cast<size_t>(GetModuleHandle("plutonium-bootstrapper-win32.exe"));
utils::hook::signature signature(base, get_image_size() - base);
auto found = false;
signature.add({
string,
mask,
[&](char* address)
{
if (found)
{
return;
}
found = true;
string_ptr = address;
}
});
@ -70,7 +77,6 @@ namespace signatures
}
const auto gsc_ctx_ptr = *reinterpret_cast<size_t*>(string_ref - 0xAD);
OutputDebugString(utils::string::va("string_ref: %p\n", string_ref));
OutputDebugString(utils::string::va("gsc_ctx_ptr: %p\n", gsc_ctx_ptr));
game::plutonium::gsc_ctx.set(gsc_ctx_ptr);
return true;