mirror of
https://github.com/fedddddd/iw5-gsc-utils.git
synced 2025-07-03 09:41:51 +00:00
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
14d0f401fb | |||
df23604b1e | |||
e2960bc895 | |||
db90d361a9 | |||
6ec0c5e23c | |||
c84d681a3a | |||
62d1c8671b | |||
877adfa4b6 | |||
12fd44d0da |
7
.gitmodules
vendored
7
.gitmodules
vendored
@ -4,12 +4,7 @@
|
||||
[submodule "deps/GSL"]
|
||||
path = deps/GSL
|
||||
url = https://github.com/microsoft/GSL.git
|
||||
[submodule "deps/sol2"]
|
||||
path = deps/sol2
|
||||
url = https://github.com/ThePhD/sol2.git
|
||||
[submodule "deps/lua"]
|
||||
path = deps/lua
|
||||
url = https://github.com/lua/lua.git
|
||||
[submodule "deps/json"]
|
||||
path = deps/json
|
||||
url = https://github.com/nlohmann/json.git
|
||||
branch = develop
|
||||
|
2
deps/json
vendored
2
deps/json
vendored
Submodule deps/json updated: e10a3fac8a...e4643d1f1b
@ -1,2 +1,3 @@
|
||||
@echo off
|
||||
tools\windows\premake5.exe vs2019
|
||||
call git submodule update --init --recursive
|
||||
tools\windows\premake5.exe vs2022
|
21
premake5.lua
21
premake5.lua
@ -36,32 +36,35 @@ workspace "iw5-gsc-utils"
|
||||
targetdir "%{wks.location}/bin/%{cfg.buildcfg}"
|
||||
targetname "%{prj.name}"
|
||||
|
||||
configurations { "Debug", "Release", }
|
||||
|
||||
language "C++"
|
||||
cppdialect "C++20"
|
||||
|
||||
architecture "x86"
|
||||
|
||||
buildoptions "/std:c++latest"
|
||||
systemversion "latest"
|
||||
symbols "On"
|
||||
staticruntime "On"
|
||||
editandcontinue "Off"
|
||||
warnings "Extra"
|
||||
characterset "ASCII"
|
||||
|
||||
flags
|
||||
{
|
||||
"NoIncrementalLink",
|
||||
"MultiProcessorCompile",
|
||||
}
|
||||
|
||||
configurations { "Debug", "Release", }
|
||||
|
||||
symbols "On"
|
||||
|
||||
configuration "Release"
|
||||
filter "configurations:Release"
|
||||
optimize "Full"
|
||||
defines { "NDEBUG" }
|
||||
configuration{}
|
||||
filter {}
|
||||
|
||||
configuration "Debug"
|
||||
filter "configurations:Debug"
|
||||
optimize "Debug"
|
||||
defines { "DEBUG", "_DEBUG" }
|
||||
configuration {}
|
||||
filter {}
|
||||
|
||||
startproject "iw5-gsc-utils"
|
||||
|
||||
|
@ -53,8 +53,6 @@ namespace gsc
|
||||
{
|
||||
std::vector<scripting::script_value> args;
|
||||
|
||||
const auto top = game::scr_VmPub->top;
|
||||
|
||||
for (auto i = 0; i < game::scr_VmPub->outparamcount; i++)
|
||||
{
|
||||
const auto value = game::scr_VmPub->top[-i];
|
||||
@ -380,7 +378,7 @@ namespace gsc
|
||||
return {};
|
||||
});
|
||||
|
||||
function::add("dropallbots", [](const function_args& args) -> scripting::script_value
|
||||
function::add("dropallbots", [](const function_args&) -> scripting::script_value
|
||||
{
|
||||
for (auto i = 0; i < *game::svs_clientCount; i++)
|
||||
{
|
||||
@ -437,7 +435,7 @@ namespace gsc
|
||||
return {};
|
||||
});
|
||||
|
||||
method::add("isbot", [](const game::scr_entref_t ent, const function_args& args) -> scripting::script_value
|
||||
method::add("isbot", [](const game::scr_entref_t ent, const function_args&) -> scripting::script_value
|
||||
{
|
||||
if (ent.classnum != 0)
|
||||
{
|
||||
@ -454,6 +452,23 @@ namespace gsc
|
||||
return game::svs_clients[client].bIsTestClient;
|
||||
});
|
||||
|
||||
method::add("arecontrolsfrozen", [](const game::scr_entref_t ent, const function_args&) -> scripting::script_value
|
||||
{
|
||||
if (ent.classnum != 0)
|
||||
{
|
||||
throw std::runtime_error("Invalid entity");
|
||||
}
|
||||
|
||||
const auto client = ent.entnum;
|
||||
|
||||
if (game::g_entities[client].client == nullptr)
|
||||
{
|
||||
throw std::runtime_error("Not a player entity");
|
||||
}
|
||||
|
||||
return {(game::g_entities[client].client->flags & 4) != 0};
|
||||
});
|
||||
|
||||
utils::hook::jump(0x56C8EB, call_builtin_stub);
|
||||
utils::hook::jump(0x56CBDC, call_builtin_method_stub);
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ namespace userinfo
|
||||
return {};
|
||||
});
|
||||
|
||||
gsc::method::add("resetname", [](const game::scr_entref_t ent, const gsc::function_args& args) -> scripting::script_value
|
||||
gsc::method::add("resetname", [](const game::scr_entref_t ent, const gsc::function_args&) -> scripting::script_value
|
||||
{
|
||||
if (ent.classnum != 0)
|
||||
{
|
||||
@ -150,7 +150,7 @@ namespace userinfo
|
||||
return {};
|
||||
});
|
||||
|
||||
gsc::method::add("resetclantag", [](const game::scr_entref_t ent, const gsc::function_args& args) -> scripting::script_value
|
||||
gsc::method::add("resetclantag", [](const game::scr_entref_t ent, const gsc::function_args&) -> scripting::script_value
|
||||
{
|
||||
if (ent.classnum != 0)
|
||||
{
|
||||
@ -170,7 +170,7 @@ namespace userinfo
|
||||
return {};
|
||||
});
|
||||
|
||||
gsc::method::add("removeclantag", [](const game::scr_entref_t ent, const gsc::function_args& args) -> scripting::script_value
|
||||
gsc::method::add("removeclantag", [](const game::scr_entref_t ent, const gsc::function_args&) -> scripting::script_value
|
||||
{
|
||||
if (ent.classnum != 0)
|
||||
{
|
||||
|
@ -1,12 +1,12 @@
|
||||
#include <stdinc.hpp>
|
||||
#include "loader/component_loader.hpp"
|
||||
|
||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
|
||||
BOOL APIENTRY DllMain(HMODULE /*hModule*/, DWORD ul_reason_for_call, LPVOID /*lpReserved*/)
|
||||
{
|
||||
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
|
||||
{
|
||||
const auto value = *reinterpret_cast<DWORD*>(0x21600000);
|
||||
if (value != 0x8A94852)
|
||||
const auto value = *reinterpret_cast<DWORD*>(0x21B00000);
|
||||
if (value != 0x64AA1902)
|
||||
{
|
||||
MessageBoxA(NULL,
|
||||
"This version of iw5-gsc-utils is outdated.\n" \
|
||||
|
@ -269,8 +269,6 @@ namespace scripting
|
||||
{
|
||||
return get_custom_field(entity, field);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
unsigned int make_array()
|
||||
|
@ -86,11 +86,11 @@ namespace game
|
||||
|
||||
namespace plutonium
|
||||
{
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> function_map_rev{0x2074C520};
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> method_map_rev{0x2074C540};
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> token_map_rev{0x2074C580};
|
||||
WEAK symbol<int(const char* fmt, ...)> printf{0x2093E120};
|
||||
WEAK symbol<void*> function_table{0x206FAA70};
|
||||
WEAK symbol<void*> method_table{0x206FB240};
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> function_map_rev{0x20802D34};
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> method_map_rev{0x20802D54};
|
||||
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> token_map_rev{0x20802D94};
|
||||
WEAK symbol<int(const char* fmt, ...)> printf{0x209F30F0};
|
||||
WEAK symbol<void*> function_table{0x20762008};
|
||||
WEAK symbol<void*> method_table{0x207627D8};
|
||||
}
|
||||
}
|
Binary file not shown.
Reference in New Issue
Block a user