rename "tf-settings" folder to data, use /opt/cathook/data folder for
data files now, "make data"
This commit is contained in:
parent
6555ed90f2
commit
88915b54db
9
check-data
Executable file
9
check-data
Executable file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if ! [ -d "$1" ]; then
|
||||
echo "Creating cathook data directory at $1"
|
||||
sudo mkdir -p "$1"
|
||||
sudo chown -R $USER "$1"
|
||||
sudo chmod -R 777 "$1"
|
||||
rsync -avh --progress "data/" "$1"
|
||||
fi
|
8
makefile
8
makefile
@ -22,7 +22,7 @@ ENABLE_IPC=1
|
||||
ENABLE_NULL_GRAPHICS=0
|
||||
TEXTMODE_STDIN=0
|
||||
TEXTMODE_VAC=0
|
||||
DATA_PATH="/opt/cathook-data"
|
||||
DATA_PATH="/opt/cathook/data"
|
||||
NO_LTO=0
|
||||
ifdef CLANG
|
||||
override NO_LTO=1
|
||||
@ -137,14 +137,18 @@ OBJECTS = $(patsubst %.c,%.o, $(patsubst %.cpp,%.o, $(SOURCES)))
|
||||
OBJECTS += $(shell find $(RES_DIR) -name "*.o" -print)
|
||||
DEPENDS = $(patsubst %.c,%.d, $(patsubst %.cpp,%.d, $(SOURCES)))
|
||||
|
||||
.PHONY: clean directories echo
|
||||
.PHONY: clean directories echo data
|
||||
|
||||
all:
|
||||
mkdir -p $(OUT_DIR)
|
||||
$(MAKE) data
|
||||
$(MAKE) $(TARGET)
|
||||
|
||||
echo:
|
||||
echo $(OBJECTS)
|
||||
|
||||
data:
|
||||
./check-data "$(DATA_PATH)"
|
||||
|
||||
# 3rd party source files, we don't need warnings there
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "sdk.h"
|
||||
#include "copypasted/CSignature.h"
|
||||
|
||||
time_t time_injected { 0 };
|
||||
|
||||
int g_AppID = 0;
|
||||
|
||||
|
@ -8,6 +8,8 @@
|
||||
#ifndef GLOBALS_H_
|
||||
#define GLOBALS_H_
|
||||
|
||||
#include <time.h>
|
||||
|
||||
class Vector;
|
||||
class ConVar;
|
||||
class CatVar;
|
||||
@ -37,6 +39,8 @@ extern int last_cmd_number;
|
||||
extern char* disconnect_reason_newlined;
|
||||
extern CatVar disconnect_reason;
|
||||
|
||||
extern time_t time_injected;
|
||||
|
||||
class GlobalSettings {
|
||||
public:
|
||||
void Init();
|
||||
|
@ -162,6 +162,7 @@ void hack::CC_Cat(const CCommand& args) {
|
||||
}
|
||||
|
||||
void hack::Initialize() {
|
||||
time_injected = time(nullptr);
|
||||
// Essential files must always exist, except when the game is running in text mode.
|
||||
#if ENABLE_VISUALS == 1
|
||||
|
||||
|
@ -531,6 +531,11 @@ void LevelInit_hook(void* _this, const char* newmap) {
|
||||
hacks::shared::anticheat::ResetEverything();
|
||||
original(_this, newmap);
|
||||
hacks::shared::walkbot::OnLevelInit();
|
||||
#if IPC_ENABLED
|
||||
if (ipc::peer) {
|
||||
ipc::peer->memory->peer_user_data[ipc::peer->client_id].ts_connected = time(nullptr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void LevelShutdown_hook(void* _this) {
|
||||
@ -542,5 +547,10 @@ void LevelShutdown_hook(void* _this) {
|
||||
chat_stack::Reset();
|
||||
hacks::shared::anticheat::ResetEverything();
|
||||
original(_this);
|
||||
#if IPC_ENABLED
|
||||
if (ipc::peer) {
|
||||
ipc::peer->memory->peer_user_data[ipc::peer->client_id].ts_disconnected = time(nullptr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,10 @@ CatCommand connect("ipc_connect", "Connect to IPC server", []() {
|
||||
hack::command_stack().push(std::string((const char*)payload));
|
||||
});
|
||||
hacks::shared::followbot::AddMessageHandlers(peer);
|
||||
user_data_s& data = peer->memory->peer_user_data[peer->client_id];
|
||||
memset(&data, 0, sizeof(data));
|
||||
StoreClientData();
|
||||
Heartbeat();
|
||||
thread_running = true;
|
||||
pthread_create(&listener_thread, nullptr, listen, nullptr);
|
||||
} catch (std::exception& error) {
|
||||
@ -183,6 +186,9 @@ void UpdateTemporaryData() {
|
||||
data.last_score = data.score;
|
||||
}
|
||||
data.team = g_pPlayerResource->GetTeam(g_IEngine->GetLocalPlayer());
|
||||
data.x = g_pLocalPlayer->v_Origin.x;
|
||||
data.y = g_pLocalPlayer->v_Origin.y;
|
||||
data.z = g_pLocalPlayer->v_Origin.z;
|
||||
} else {
|
||||
data.good = false;
|
||||
}
|
||||
@ -193,6 +199,7 @@ void StoreClientData() {
|
||||
UpdateServerAddress();
|
||||
user_data_s& data = peer->memory->peer_user_data[peer->client_id];
|
||||
data.friendid = g_ISteamUser->GetSteamID().GetAccountID();
|
||||
data.ts_injected = time_injected;
|
||||
strncpy(data.name, GetFriendPersonaName_hook(g_ISteamFriends, g_ISteamUser->GetSteamID()), sizeof(data.name));
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,12 @@ struct user_data_s {
|
||||
int last_score;
|
||||
int total_score;
|
||||
time_t heartbeat;
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
time_t ts_injected;
|
||||
time_t ts_connected;
|
||||
time_t ts_disconnected;
|
||||
};
|
||||
|
||||
using peer_t = cat_ipc::Peer<server_data_s, user_data_s>;
|
||||
|
18
update-data
18
update-data
@ -1,18 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo "Searching for Team Fortress 2"
|
||||
echo "Please wait..."
|
||||
|
||||
find / -type d -name "Team Fortress 2" 2>/dev/null | while read path; do
|
||||
if [ -e "$path/tf/gameinfo.txt" ]; then
|
||||
if grep -q 440 "$path/tf/gameinfo.txt"; then
|
||||
echo "Found Team Fortress 2 installation at $path"
|
||||
mkdir -p "$path/cathook"
|
||||
ln -s "$path/cathook" "Data Folder"
|
||||
rsync -avh --progress tf-settings/ "$path/cathook"
|
||||
echo "Symbolic link created (Data Folder)"
|
||||
echo "You can close this window"
|
||||
read -p "Press ENTER to continue"
|
||||
fi
|
||||
fi
|
||||
done
|
Reference in New Issue
Block a user