mirror of
https://github.com/fedddddd/iw5-gsc-utils.git
synced 2026-05-16 18:41:43 +00:00
Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ea4b7ca57 | |||
| 1061c08829 | |||
| c75cf561f7 | |||
| 3ea6050498 | |||
| 1551d7f1fd | |||
| bf1d649bc1 | |||
| 71727a5197 | |||
| 530cd10466 | |||
| 978e251df8 | |||
| cb96052638 | |||
| 9b217b20e3 | |||
| 136a723187 | |||
| ad27dcb098 | |||
| 96acf0718e | |||
| 72f936e82a | |||
| 9a11ac82b3 | |||
| 8f36c271fd | |||
| e952b8a0f7 | |||
| f6d78fd815 | |||
| cadcca22f9 | |||
| c04a0a0d8c | |||
| 61706336ce | |||
| eb08109392 | |||
| b23cb2014b | |||
| 4d979bf659 | |||
| 206d06dc7d | |||
| 4d8af4bd45 | |||
| 46ab288488 | |||
| dd8c1ff71e | |||
| ed1ac62153 | |||
| 7f7fd016cf | |||
| 6c093888b5 | |||
| 1440760aa5 | |||
| 105c11a8b2 | |||
| 795f8ac162 | |||
| 6dd4d2651a | |||
| b2f030f349 | |||
| 2690eeeece | |||
| 098bd21008 | |||
| 2f474e979f | |||
| 2ab4da0ad9 | |||
| 28c5594094 | |||
| 6525bbb8bf | |||
| 1a9e3dfb15 | |||
| c62f1995e7 | |||
| 883e38ae58 | |||
| 1b2d4dbc46 | |||
| 7dfb35233e | |||
| d842022056 | |||
| 0a8ebc3058 | |||
| 8ccae5ddec | |||
| cfb143f0fd | |||
| 0281b5bef6 |
Vendored
+1
-1
Submodule deps/GSL updated: c31a9ad5e8...b39e7e4b09
Vendored
+1
-1
Submodule deps/gsc-tool updated: a8a62c2667...0e6238a6ab
Vendored
+1
-1
Submodule deps/json updated: e4643d1f1b...8c391e04fe
Vendored
+1
-1
Submodule deps/minhook updated: 423d1e45af...f5485b8454
Vendored
+1
-1
Submodule deps/zlib updated: 04f42ceca4...5c42a230b7
+1
-2
@@ -1,4 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
call git submodule update --init --recursive
|
call git submodule update --init --recursive
|
||||||
tools\windows\premake5.exe vs2022
|
tools\premake5.exe vs2022
|
||||||
pause
|
|
||||||
|
|||||||
+22
-12
@@ -248,16 +248,21 @@ namespace gsc
|
|||||||
{
|
{
|
||||||
void add(const std::string& name, const script_function& func)
|
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++;
|
printf("[iw5-gsc-utils] Warning: function '%s' already defined\n", name.data());
|
||||||
functions[index] = func;
|
index = ctx->func_id(name);
|
||||||
(*game::plutonium::gsc_ctx)->func_add(name, index);
|
|
||||||
}
|
}
|
||||||
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)
|
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++;
|
printf("[iw5-gsc-utils] Warning: method '%s' already defined\n", name.data());
|
||||||
methods[index] = func;
|
index = ctx->meth_id(name);
|
||||||
(*game::plutonium::gsc_ctx)->meth_add(name, index);
|
|
||||||
}
|
}
|
||||||
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -179,4 +179,4 @@ namespace io
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_COMPONENT(io::component)
|
REGISTER_COMPONENT(io::component)
|
||||||
|
|||||||
@@ -194,4 +194,4 @@ namespace json
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_COMPONENT(json::component)
|
REGISTER_COMPONENT(json::component)
|
||||||
|
|||||||
@@ -71,4 +71,4 @@ namespace notifies
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_COMPONENT(notifies::component)
|
REGISTER_COMPONENT(notifies::component)
|
||||||
|
|||||||
@@ -136,4 +136,4 @@ namespace scripting
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_COMPONENT(scripting::component)
|
REGISTER_COMPONENT(scripting::component)
|
||||||
|
|||||||
@@ -35,11 +35,18 @@ namespace signatures
|
|||||||
const auto base = reinterpret_cast<size_t>(GetModuleHandle("plutonium-bootstrapper-win32.exe"));
|
const auto base = reinterpret_cast<size_t>(GetModuleHandle("plutonium-bootstrapper-win32.exe"));
|
||||||
utils::hook::signature signature(base, get_image_size() - base);
|
utils::hook::signature signature(base, get_image_size() - base);
|
||||||
|
|
||||||
|
auto found = false;
|
||||||
signature.add({
|
signature.add({
|
||||||
string,
|
string,
|
||||||
mask,
|
mask,
|
||||||
[&](char* address)
|
[&](char* address)
|
||||||
{
|
{
|
||||||
|
if (found)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
found = true;
|
||||||
string_ptr = address;
|
string_ptr = address;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -63,13 +70,14 @@ namespace signatures
|
|||||||
|
|
||||||
bool process_gsc_ctx()
|
bool process_gsc_ctx()
|
||||||
{
|
{
|
||||||
const auto string_ref = find_string_ref("in call to builtin %s");
|
const auto string_ref = find_string_ref("in call to builtin %s \"%s\"");
|
||||||
if (!string_ref)
|
if (!string_ref)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto gsc_ctx_ptr = *reinterpret_cast<size_t*>(string_ref - 0x8C);
|
const auto gsc_ctx_ptr = *reinterpret_cast<size_t*>(string_ref - 0xAD);
|
||||||
|
OutputDebugString(utils::string::va("gsc_ctx_ptr: %p\n", gsc_ctx_ptr));
|
||||||
game::plutonium::gsc_ctx.set(gsc_ctx_ptr);
|
game::plutonium::gsc_ctx.set(gsc_ctx_ptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -83,7 +91,9 @@ namespace signatures
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto offset = *reinterpret_cast<size_t*>(string_ref + 5);
|
const auto offset = *reinterpret_cast<size_t*>(string_ref + 5);
|
||||||
game::plutonium::printf.set(string_ref + 4 + 5 + offset);
|
const auto printf_ptr = string_ref + 4 + 5 + offset;
|
||||||
|
OutputDebugString(utils::string::va("printf_ptr: %p\n", printf_ptr));
|
||||||
|
game::plutonium::printf.set(printf_ptr);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -193,4 +193,4 @@ namespace userinfo
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_COMPONENT(userinfo::component)
|
REGISTER_COMPONENT(userinfo::component)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user