mirror of
https://github.com/XLabsProject/s1x-client.git
synced 2023-08-02 15:02:12 +02:00
Noclip etc
This commit is contained in:
parent
7f0feed3ee
commit
116f921709
@ -295,6 +295,60 @@ namespace command
|
|||||||
|
|
||||||
static void add_commands_sp()
|
static void add_commands_sp()
|
||||||
{
|
{
|
||||||
|
add("god", []()
|
||||||
|
{
|
||||||
|
if (!game::SV_Loaded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::sp::g_entities[0].flags ^= 1;
|
||||||
|
game::CG_GameMessage(0, utils::string::va("godmode %s",
|
||||||
|
game::sp::g_entities[0].flags & 1
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add("demigod", []()
|
||||||
|
{
|
||||||
|
if (!game::SV_Loaded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::sp::g_entities[0].flags ^= 2;
|
||||||
|
game::CG_GameMessage(0, utils::string::va("demigod mode %s",
|
||||||
|
game::sp::g_entities[0].flags & 2
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add("noclip", []()
|
||||||
|
{
|
||||||
|
if (!game::SV_Loaded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::sp::g_entities[0].client->flags ^= 1;
|
||||||
|
game::CG_GameMessage(0, utils::string::va("noclip %s",
|
||||||
|
game::sp::g_entities[0].client->flags & 1
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add("ufo", []()
|
||||||
|
{
|
||||||
|
if (!game::SV_Loaded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::sp::g_entities[0].client->flags ^= 2;
|
||||||
|
game::CG_GameMessage(
|
||||||
|
0, utils::string::va("ufo %s", game::sp::g_entities[0].client->flags & 2 ? "^2on" : "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
add("give", [](const params& params)
|
add("give", [](const params& params)
|
||||||
{
|
{
|
||||||
if (!game::SV_Loaded())
|
if (!game::SV_Loaded())
|
||||||
@ -346,6 +400,70 @@ namespace command
|
|||||||
{
|
{
|
||||||
client_command_hook.create(0x1402E98F0, &client_command);
|
client_command_hook.create(0x1402E98F0, &client_command);
|
||||||
|
|
||||||
|
add_sv("god", [&](const int client_num, const params_sv&)
|
||||||
|
{
|
||||||
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
|
{
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1, "f \"Cheats are not enabled on this server\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::mp::g_entities[client_num].flags ^= 1;
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1,
|
||||||
|
utils::string::va("f \"godmode %s\"",
|
||||||
|
game::mp::g_entities[client_num].flags & 1
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add_sv("demigod", [&](const int client_num, const params_sv&)
|
||||||
|
{
|
||||||
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
|
{
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1, "f \"Cheats are not enabled on this server\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::mp::g_entities[client_num].flags ^= 2;
|
||||||
|
game::SV_GameSendServerCommand(client_num, 2,
|
||||||
|
utils::string::va("f \"demigod mode %s\"",
|
||||||
|
game::mp::g_entities[client_num].flags & 1
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add_sv("noclip", [&](const int client_num, const params_sv&)
|
||||||
|
{
|
||||||
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
|
{
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1, "f \"Cheats are not enabled on this server\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::mp::g_entities[client_num].client->flags ^= 1;
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1,
|
||||||
|
utils::string::va("f \"noclip %s\"",
|
||||||
|
game::mp::g_entities[client_num].client->flags & 1
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
|
add_sv("ufo", [&](const int client_num, const params_sv&)
|
||||||
|
{
|
||||||
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
|
{
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1, "f \"Cheats are not enabled on this server\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
game::mp::g_entities[client_num].client->flags ^= 2;
|
||||||
|
game::SV_GameSendServerCommand(client_num, 1,
|
||||||
|
utils::string::va("f \"ufo %s\"",
|
||||||
|
game::mp::g_entities[client_num].client->flags & 2
|
||||||
|
? "^2on"
|
||||||
|
: "^1off"));
|
||||||
|
});
|
||||||
|
|
||||||
add_sv("give", [](const int client_num, const params_sv& params)
|
add_sv("give", [](const int client_num, const params_sv& params)
|
||||||
{
|
{
|
||||||
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
|
@ -112,7 +112,7 @@ namespace party
|
|||||||
auto count = 0;
|
auto count = 0;
|
||||||
for (auto i = 0; i < *game::mp::svs_numclients; ++i)
|
for (auto i = 0; i < *game::mp::svs_numclients; ++i)
|
||||||
{
|
{
|
||||||
if (game::mp::svs_clients[i].header.state >= 3)
|
if (game::mp::svs_clients[i].header.state >= 1)
|
||||||
{
|
{
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
@ -126,7 +126,7 @@ namespace party
|
|||||||
auto count = 0;
|
auto count = 0;
|
||||||
for (auto i = 0; i < *game::mp::svs_numclients; ++i)
|
for (auto i = 0; i < *game::mp::svs_numclients; ++i)
|
||||||
{
|
{
|
||||||
if (game::mp::svs_clients[i].header.state >= 3 &&
|
if (game::mp::svs_clients[i].header.state >= 1 &&
|
||||||
game::SV_BotIsBot(i))
|
game::SV_BotIsBot(i))
|
||||||
{
|
{
|
||||||
++count;
|
++count;
|
||||||
|
@ -209,10 +209,13 @@ namespace patches
|
|||||||
// Patch SV_KickClientNum
|
// Patch SV_KickClientNum
|
||||||
sv_kick_client_num_hook.create(0x1404377A0, &sv_kick_client_num);
|
sv_kick_client_num_hook.create(0x1404377A0, &sv_kick_client_num);
|
||||||
|
|
||||||
|
// block changing name in-game
|
||||||
|
utils::hook::set<uint8_t>(0x140438850, 0xC3);
|
||||||
|
|
||||||
// patch "Couldn't find the bsp for this map." error to not be fatal in mp
|
// patch "Couldn't find the bsp for this map." error to not be fatal in mp
|
||||||
utils::hook::call(0x14026E63B, bsp_sys_error_stub);
|
utils::hook::call(0x14026E63B, bsp_sys_error_stub);
|
||||||
|
|
||||||
//client side aim assist dvar
|
// client side aim assist dvar
|
||||||
dvars::aimassist_enabled = game::Dvar_RegisterBool("aimassist_enabled", true,
|
dvars::aimassist_enabled = game::Dvar_RegisterBool("aimassist_enabled", true,
|
||||||
game::DvarFlags::DVAR_FLAG_SAVED,
|
game::DvarFlags::DVAR_FLAG_SAVED,
|
||||||
"Enables aim assist for controllers");
|
"Enables aim assist for controllers");
|
||||||
|
@ -902,23 +902,36 @@ namespace game
|
|||||||
Material* material;
|
Material* material;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum TestClientType
|
||||||
|
{
|
||||||
|
TC_NONE = 0x0,
|
||||||
|
TC_TEST_CLIENT = 0x1,
|
||||||
|
TC_BOT = 0x2,
|
||||||
|
TC_COUNT = 0x3,
|
||||||
|
};
|
||||||
|
|
||||||
namespace mp
|
namespace mp
|
||||||
{
|
{
|
||||||
struct gclient_s
|
struct gclient_s
|
||||||
{
|
{
|
||||||
|
char __pad0[21407];
|
||||||
};
|
int flags;
|
||||||
|
}; // size = ?
|
||||||
|
|
||||||
struct EntityState
|
struct EntityState
|
||||||
{
|
{
|
||||||
int entityNum;
|
char entityNum;
|
||||||
}; // size = ?
|
}; // size = ?
|
||||||
|
|
||||||
struct gentity_s
|
struct gentity_s
|
||||||
{
|
{
|
||||||
EntityState s;
|
EntityState s;
|
||||||
char __pad[88];
|
char __pad0[343];
|
||||||
}; // size = 92
|
gclient_s* client;
|
||||||
|
char __pad1[80];
|
||||||
|
int flags;
|
||||||
|
char __pad2[300];
|
||||||
|
}; // size = 736
|
||||||
|
|
||||||
struct playerState_s
|
struct playerState_s
|
||||||
{
|
{
|
||||||
@ -928,12 +941,16 @@ namespace game
|
|||||||
struct clientHeader_t
|
struct clientHeader_t
|
||||||
{
|
{
|
||||||
int state;
|
int state;
|
||||||
}; // /size = ?
|
}; // size = ?
|
||||||
|
|
||||||
struct client_t
|
struct client_t
|
||||||
{
|
{
|
||||||
clientHeader_t header;
|
clientHeader_t header;
|
||||||
char __pad[661300];
|
char __pad0[268972];
|
||||||
|
gentity_s* gentity;
|
||||||
|
char __pad1[616];
|
||||||
|
TestClientType testClient;
|
||||||
|
char __pad2[391700];
|
||||||
}; // size = 661304
|
}; // size = 661304
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -941,12 +958,16 @@ namespace game
|
|||||||
{
|
{
|
||||||
struct gclient_s
|
struct gclient_s
|
||||||
{
|
{
|
||||||
|
char __pad[56135];
|
||||||
|
int flags; // 56136
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gentity_s
|
struct gentity_s
|
||||||
{
|
{
|
||||||
|
char __pad0[280];
|
||||||
|
gclient_s* client; // 280
|
||||||
|
char __pad1[76];
|
||||||
|
int flags; // 364
|
||||||
};
|
};
|
||||||
|
|
||||||
struct playerState_s
|
struct playerState_s
|
||||||
|
Loading…
Reference in New Issue
Block a user