Merge pull request #2 from nullifiedcat/master

merge from base
This commit is contained in:
Jenny White 2018-04-28 18:56:51 +03:00 committed by GitHub
commit deb6acbd80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 141 additions and 155 deletions

View File

@ -16,7 +16,9 @@ namespace followbot
// Followed entity, externed for highlight color
extern int follow_target;
extern bool followcart;
extern CatVar followbot;
extern CatVar roambot;
extern CatVar follow_steam;
void DrawTick();
void WorldTick();

View File

@ -7,7 +7,8 @@
#pragma once
#include "common.hpp"
namespace re {
namespace re
{
class CTFInventoryManager
{
public:
@ -22,11 +23,13 @@ class CEconItem
public:
unsigned long long uniqueid();
};
class CTFPlayerInventory {
class CTFPlayerInventory
{
public:
CTFPlayerInventory() = delete;
static CTFPlayerInventory *GTFPlayerInventory();
CTFPlayerInventory() = delete;
static CTFPlayerInventory *GTFPlayerInventory();
public:
CEconItem *GetFirstItemOfItemDef(int id);
CEconItem *GetFirstItemOfItemDef(int id);
};
}

9
src/hacks/Achievement.cpp Executable file → Normal file
View File

@ -39,10 +39,11 @@ void Lock()
void Unlock()
{
/*auto Invmng = re::CTFInventoryManager::GTFInventoryManager();
auto Inv = re::CTFPlayerInventory::GTFPlayerInventory();
auto Item = Inv->GetFirstItemOfItemDef(59);
Invmng->EquipItemInLoadout(0, 0, (unsigned long long int)Item->uniqueid());*/
/*auto Invmng = re::CTFInventoryManager::GTFInventoryManager();
auto Inv = re::CTFPlayerInventory::GTFPlayerInventory();
auto Item = Inv->GetFirstItemOfItemDef(59);
Invmng->EquipItemInLoadout(0, 0, (unsigned long long
int)Item->uniqueid());*/
if (safety)
{
ConColorMsg(

View File

@ -6,7 +6,8 @@
*/
#include "common.hpp"
void CreateMove() {
auto preset = g_ICvar->FindCommand("load_itempreset");
const CCommand cmd;
void CreateMove()
{
auto preset = g_ICvar->FindCommand("load_itempreset");
const CCommand cmd;
}

5
src/hacks/AutoHeal.cpp Executable file → Normal file
View File

@ -44,7 +44,8 @@ static CatEnum vacc_sniper_enum({ "NEVER", "ZOOM & VISIBLE", "ANY ZOOMED" });
static CatVar vacc_sniper(vacc_sniper_enum, "auto_vacc_sniper_pop", "1",
"Pop if Sniper",
"Defines Auto-Vacc behaviour with snipers");
static CatVar ignore(CV_STRING, "autoheal_ignore", "", "Ignore", "Ignore people with this name");
static CatVar ignore(CV_STRING, "autoheal_ignore", "", "Ignore",
"Ignore people with this name");
int ChargeCount()
{
@ -566,7 +567,7 @@ int HealingPriority(int idx)
g_IEngine->GetPlayerInfo(idx, &info);
info.name[31] = 0;
if (strcasestr(info.name, ignore.GetString()))
priority = 0.0f;
priority = 0.0f;
return priority;
}

View File

@ -49,7 +49,7 @@ Timer req_timer{};
"Bypass Party restrictions");*/
void UpdateSearch()
{
// segfaults for no reason
// segfaults for no reason
/*static bool calld = false;
if (party_bypass && !calld) {
static unsigned char patch[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
@ -90,7 +90,8 @@ void UpdateSearch()
tfmm::queue_start();
}
}
if (req_timer.test_and_set(1800000)) {
if (req_timer.test_and_set(1800000))
{
logging::Info("Starting queue");
tfmm::queue_start();
}

2
src/hacks/CatBot.cpp Executable file → Normal file
View File

@ -118,7 +118,7 @@ void update_catbot_list()
if (strcasestr(info.name, "cat-bot") ||
strcasestr(info.name, "just disable vac tf") ||
strcasestr(info.name, "raul.garcia") ||
strcasestr(info.name, "zCat") ||
strcasestr(info.name, "zCat") ||
strcasestr(info.name, "lagger bot"))
{
if (human_detecting_map.find(info.friendsID) ==

View File

@ -17,8 +17,9 @@ namespace followbot
CatVar followbot(CV_SWITCH, "fb", "0", "Followbot Switch",
"Set to 1 in followbots' configs");
static CatVar roambot(CV_SWITCH, "fb_roaming", "1", "Roambot",
"Followbot will roam free, finding targets it can");
bool followcart = false;
CatVar roambot(CV_SWITCH, "fb_roaming", "1", "Roambot",
"Followbot will roam free, finding targets it can");
static CatVar draw_crumb(CV_SWITCH, "fb_draw", "1", "Draw crumbs",
"Self explanitory");
static CatVar follow_distance(CV_INT, "fb_distance", "175", "Follow Distance",
@ -103,25 +104,38 @@ void WorldTick()
if ((!follow_target || change) && roambot)
{
// Try to get a new target
auto ent_count = g_IEngine->GetMaxClients();
for (int i = 0; i < ent_count; i++)
auto ent_count = HIGHEST_ENTITY;
for (int i = 0; i < HIGHEST_ENTITY; i++)
{
auto entity = ENTITY(i);
if (CE_BAD(entity)) // Exist + dormant
continue;
if (entity->m_Type != ENTITY_PLAYER)
continue;
if (!followcart)
if (entity->m_Type != ENTITY_PLAYER)
continue;
if (entity == LOCAL_E) // Follow self lol
continue;
if (!entity->m_bAlivePlayer ||
entity->m_iTeam ==
LOCAL_E->m_iTeam) // Dont follow dead players
if (!entity->m_bAlivePlayer) // Dont follow dead players
continue;
if (follow_activation &&
entity->m_flDistance > (float) follow_activation)
continue;
if (!VisCheckEntFromEnt(LOCAL_E, entity))
continue;
const model_t *model =
ENTITY(follow_target)->InternalEntity()->GetModel();
if (followcart && model &&
(lagexploit::pointarr[0] || lagexploit::pointarr[1] ||
lagexploit::pointarr[2] || lagexploit::pointarr[3] ||
lagexploit::pointarr[4]) &&
(model == lagexploit::pointarr[0] ||
model == lagexploit::pointarr[1] ||
model == lagexploit::pointarr[2] ||
model == lagexploit::pointarr[3] ||
model == lagexploit::pointarr[4]))
follow_target = entity->m_IDX;
if (entity->m_Type != ENTITY_PLAYER)
continue;
if (follow_target &&
ENTITY(follow_target)->m_flDistance >
entity->m_flDistance) // favor closer entitys

View File

@ -355,12 +355,14 @@ void CreateMove()
void DrawText()
{
if (god_mode)
for (int i = 0; i < 40000; i++) {
g_ISurface->PlaySound("vo/demoman_cloakedspy03.mp3");
god_mode = 0;
}
if (!no_homo) {
if (god_mode)
for (int i = 0; i < 40000; i++)
{
g_ISurface->PlaySound("vo/demoman_cloakedspy03.mp3");
god_mode = 0;
}
if (!no_homo)
{
int width, height;
g_IEngine->GetScreenSize(width, height);
@ -368,18 +370,23 @@ void DrawText()
int step = (height / 7);
// Go through steps creating a rainbow screen
for (int i = 1; i < 8; i++) {
for (int i = 1; i < 8; i++)
{
// Get Color and set opacity to %50
colors::rgba_t gaybow = colors::FromHSL(fabs(sin((g_GlobalVars->curtime / 2.0f) + (i / 1.41241))) * 360.0f, 0.85f, 0.9f);
colors::rgba_t gaybow = colors::FromHSL(
fabs(sin((g_GlobalVars->curtime / 2.0f) + (i / 1.41241))) *
360.0f,
0.85f, 0.9f);
gaybow.a = .5;
// Draw next step
draw_api::draw_rect(0, step * (i - 1), width, (step * i) - (step * (i - 1)), gaybow);
draw_api::draw_rect(0, step * (i - 1), width,
(step * i) - (step * (i - 1)), gaybow);
}
//int size_x;
//FTGL_StringLength(string.data, fonts::font_main, &size_x);
//FTGL_Draw(string.data, draw_point.x - size_x / 2, draw_point.y,fonts::font_main, color);
// int size_x;
// FTGL_StringLength(string.data, fonts::font_main, &size_x);
// FTGL_Draw(string.data, draw_point.x - size_x / 2,
// draw_point.y,fonts::font_main, color);
}
if (show_spectators)
{

View File

@ -1191,89 +1191,27 @@ void Move()
}
}
}
if (!prevlvlname)
prevlvlname = g_IEngine->GetLevelName();
prevlvlname = g_IEngine->GetLevelName();
std::string prvlvlname = format(prevlvlname);
logging::Info("%s", prevlvlname);
if (boost::contains(prvlvlname, "pl_"))
logging::Info("%s %s", prevlvlname, prvlvlname.c_str());
if (boost::contains(prvlvlname, "pl_") || boost::contains(prvlvlname, "cp_"))
{
logging::Info("1");
bool ret = false;
if (lagexploit::pointarr[0] || lagexploit::pointarr[1] ||
lagexploit::pointarr[2] || lagexploit::pointarr[3] ||
lagexploit::pointarr[4])
for (int i = 0; i < MAX_ENTITIES; i++)
{
if (!ret)
{
CachedEntity *ent = ENTITY(i);
if (!CE_GOOD(ent))
continue;
if (ent->m_iTeam == LOCAL_E->m_iTeam)
continue;
const model_t *model = RAW_ENT(ent)->GetModel();
if (model)
{
if ((model == lagexploit::pointarr[1] ||
model == lagexploit::pointarr[2] ||
model == lagexploit::pointarr[3] ||
model == lagexploit::pointarr[4]) &&
ent->m_flDistance < 400.0f &&
IsVectorVisible(g_pLocalPlayer->v_Eye,
ent->m_vecOrigin))
{
index_t node = CreateNode(ent->m_vecOrigin);
auto &n = state::nodes[node];
if (g_pUserCmd->buttons & IN_DUCK)
n.flags |= NF_DUCK;
if (g_pUserCmd->buttons & IN_JUMP)
n.flags |= NF_JUMP;
if (state::node_good(state::active_node))
{
auto &c = state::nodes[state::active_node];
n.link(state::active_node);
c.link(node);
logging::Info("[wb] Node %u auto-linked to "
"node %u at (%.2f %.2f %.2f)",
node, state::active_node, c.x,
c.y, c.z);
}
state::last_node_buttons = g_pUserCmd->buttons;
state::active_node = node;
ret = true;
}
}
else if (ent->m_flDistance < 500.0f &&
IsVectorVisible(g_pLocalPlayer->v_Eye,
ent->m_vecOrigin))
{
index_t node = CreateNode(ent->m_vecOrigin);
auto &n = state::nodes[node];
if (g_pUserCmd->buttons & IN_DUCK)
n.flags |= NF_DUCK;
if (g_pUserCmd->buttons & IN_JUMP)
n.flags |= NF_JUMP;
if (state::node_good(state::active_node))
{
auto &c = state::nodes[state::active_node];
n.link(state::active_node);
c.link(node);
logging::Info("[wb] Node %u auto-linked to "
"node %u at (%.2f %.2f %.2f)",
node, state::active_node, c.x,
c.y, c.z);
}
state::last_node_buttons = g_pUserCmd->buttons;
state::active_node = node;
ret = true;
}
}
}
if (erasedelay > 6 && nodes.size() > 0)
{
nodes.erase(nodes.begin());
erasedelay = 0;
hacks::shared::followbot::followbot = 1;
hacks::shared::followbot::roambot = 1;
hacks::shared::followbot::followcart = true;
}
else
{
hacks::shared::followbot::followbot = 0;
hacks::shared::followbot::roambot = 0;
hacks::shared::followbot::followcart = false;
}
erasedelay++;
}
if (nodes.size() == 0)
return;

View File

@ -112,10 +112,11 @@ static CatVar debug_projectiles(CV_SWITCH, "debug_projectiles", "0",
static CatVar fakelag_amount(CV_INT, "fakelag", "0", "Bad Fakelag");
static CatVar serverlag_amount(
CV_INT, "serverlag", "0",
"serverlag", "Lag the server by spamming this many voicecommands per tick");
CV_INT, "serverlag", "0", "serverlag",
"Lag the server by spamming this many voicecommands per tick");
CatVar semiauto(CV_INT, "semiauto", "0", "Semiauto");
CatVar servercrash(CV_SWITCH, "servercrash", "0", "crash servers", "Crash servers by spamming signon net messages");
CatVar servercrash(CV_SWITCH, "servercrash", "0", "crash servers",
"Crash servers by spamming signon net messages");
bool *bSendPackets;
bool CreateMove_hook(void *thisptr, float inputSample, CUserCmd *cmd)
{
@ -519,15 +520,17 @@ bool CreateMove_hook(void *thisptr, float inputSample, CUserCmd *cmd)
if (cmd)
g_Settings.last_angles = cmd->viewangles;
}
if (serverlag_amount || votelogger::antikick_ticks) {
if (votelogger::antikick_ticks) {
votelogger::antikick_ticks--;
for (int i = 0; i < (int) 70; i++)
g_IEngine->ServerCmd("voicemenu 0 0", false);
}
else
for (int i = 0; i < (int) serverlag_amount; i++)
g_IEngine->ServerCmd("voicemenu 0 0", false);
if (serverlag_amount || votelogger::antikick_ticks)
{
if (votelogger::antikick_ticks)
{
votelogger::antikick_ticks--;
for (int i = 0; i < (int) 70; i++)
g_IEngine->ServerCmd("voicemenu 0 0", false);
}
else
for (int i = 0; i < (int) serverlag_amount; i++)
g_IEngine->ServerCmd("use", false);
}
// PROF_END("CreateMove");

View File

@ -1041,7 +1041,7 @@ void LevelInit_hook(void *_this, const char *newmap)
static const LevelInit_t original =
(LevelInit_t) hooks::clientmode.GetMethod(offsets::LevelInit());
playerlist::Save();
votelogger::antikick_ticks = 0;
votelogger::antikick_ticks = 0;
hacks::shared::lagexploit::bcalled = false;
typedef bool *(*LoadNamedSkys_Fn)(const char *);
uintptr_t addr =

View File

@ -7,31 +7,43 @@
#include "common.hpp"
using namespace re;
CTFInventoryManager *CTFInventoryManager::GTFInventoryManager() {
typedef CTFInventoryManager *(*GTFInventoryManager_t)();
uintptr_t address = gSignatures.GetClientSignature("55 A1 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 89 E5 56 53 83 EC ? 8B 5D ? C7 44 24 ? ? ? ? ?");
GTFInventoryManager_t GTFInventoryManager_fn = GTFInventoryManager_t(address);
return GTFInventoryManager_fn();
CTFInventoryManager *CTFInventoryManager::GTFInventoryManager()
{
typedef CTFInventoryManager *(*GTFInventoryManager_t)();
uintptr_t address = gSignatures.GetClientSignature(
"55 A1 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 89 E5 56 53 83 EC ? 8B "
"5D ? C7 44 24 ? ? ? ? ?");
GTFInventoryManager_t GTFInventoryManager_fn =
GTFInventoryManager_t(address);
return GTFInventoryManager_fn();
}
bool CTFInventoryManager::EquipItemInLoadout(int slot, int classid, unsigned long long uniqueid) {
typedef bool (*fn_t)(void*, int, int, unsigned long long);
return vfunc<fn_t>(
this, offsets::PlatformOffset(19, offsets::undefined, 19),
0)(this, slot, classid, uniqueid);
bool CTFInventoryManager::EquipItemInLoadout(int slot, int classid,
unsigned long long uniqueid)
{
typedef bool (*fn_t)(void *, int, int, unsigned long long);
return vfunc<fn_t>(this,
offsets::PlatformOffset(19, offsets::undefined, 19),
0)(this, slot, classid, uniqueid);
}
unsigned long long int CEconItem::uniqueid() {
return *((unsigned long long int*) this + 36);
unsigned long long int CEconItem::uniqueid()
{
return *((unsigned long long int *) this + 36);
}
CTFPlayerInventory *CTFPlayerInventory::GTFPlayerInventory() {
typedef CTFPlayerInventory *(*GTFPlayerInventory_t)();
uintptr_t address = gSignatures.GetClientSignature("55 B8 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 B8 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 89 E5 57 56 53 83 EC ? 8B 45 ? 8B 5D ?");
GTFPlayerInventory_t GTFPlayerInventory_fn = GTFPlayerInventory_t(address);
return GTFPlayerInventory_fn();
CTFPlayerInventory *CTFPlayerInventory::GTFPlayerInventory()
{
typedef CTFPlayerInventory *(*GTFPlayerInventory_t)();
uintptr_t address = gSignatures.GetClientSignature(
"55 B8 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 B8 ? ? ? ? 89 E5 5D C3 "
"8D B6 00 00 00 00 55 89 E5 57 56 53 83 EC ? 8B 45 ? 8B 5D ?");
GTFPlayerInventory_t GTFPlayerInventory_fn = GTFPlayerInventory_t(address);
return GTFPlayerInventory_fn();
}
CEconItem *CTFPlayerInventory::GetFirstItemOfItemDef(int id) {
typedef CEconItem *(*GetFirstItemOfItemDef_t)(CTFPlayerInventory*, int);
uintptr_t address = gSignatures.GetClientSignature("55 89 E5 57 56 53 83 EC ? 8B 4D ? 0F B7 45 ?");
GetFirstItemOfItemDef_t GetFirstItemOfItemDef_fn = GetFirstItemOfItemDef_t(address);
return GetFirstItemOfItemDef_fn(this, id);
CEconItem *CTFPlayerInventory::GetFirstItemOfItemDef(int id)
{
typedef CEconItem *(*GetFirstItemOfItemDef_t)(CTFPlayerInventory *, int);
uintptr_t address = gSignatures.GetClientSignature(
"55 89 E5 57 56 53 83 EC ? 8B 4D ? 0F B7 45 ?");
GetFirstItemOfItemDef_t GetFirstItemOfItemDef_fn =
GetFirstItemOfItemDef_t(address);
return GetFirstItemOfItemDef_fn(this, id);
}

View File

@ -13,7 +13,9 @@ namespace votelogger
static CatVar enabled(CV_SWITCH, "votelog", "0", "Log votes");
static CatVar requeue(CV_SWITCH, "votelog_requeue", "1",
"Auto requeue on vote kick", "Auto requeue on vote kick");
static CatVar anti_votekick(CV_SWITCH, "anti_votekick", "0", "requires votelog", "Prevent votekicks by lagging the server in a way that every vote comes in delayed");
static CatVar anti_votekick(CV_SWITCH, "anti_votekick", "0", "requires votelog",
"Prevent votekicks by lagging the server in a way "
"that every vote comes in delayed");
int antikick_ticks = 0;
void user_message(bf_read &buffer, int type)
{
@ -45,16 +47,17 @@ void user_message(bf_read &buffer, int type)
{
steamID = info.friendsID;
}
if (eid == LOCAL_E->m_IDX) {
if (eid == LOCAL_E->m_IDX)
{
islocalplayer = true;
if (anti_votekick) {
antikick_ticks = 600;
if (anti_votekick)
{
antikick_ticks = 600;
for (int i = 0; i < (int) 70; i++)
g_IEngine->ServerCmd("voicemenu 0 0", false);
}
}
logging::Info("Vote called to kick %s [U:1:%u] for %s", name, steamID,
reason);
break;