From 88915b54db3eb7b38fd9e66021029f1dd5ee2955 Mon Sep 17 00:00:00 2001 From: nullifiedcat Date: Wed, 16 Aug 2017 11:20:08 +0300 Subject: [PATCH] rename "tf-settings" folder to data, use /opt/cathook/data folder for data files now, "make data" --- check-data | 9 +++++++++ {tf-settings => data}/fonts/opensans-bold.ttf | Bin {tf-settings => data}/menu.json | 0 {tf-settings => data}/shaders/v2f-c4f.frag | 0 {tf-settings => data}/shaders/v2f-c4f.vert | 0 .../shaders/v2f-t2f-c4f.frag | 0 .../shaders/v2f-t2f-c4f.vert | 0 .../shaders/v3f-t2f-c4f.frag | 0 .../shaders/v3f-t2f-c4f.vert | 0 makefile | 8 ++++++-- src/globals.cpp | 1 + src/globals.h | 4 ++++ src/hack.cpp | 1 + src/hooks/others.cpp | 10 ++++++++++ src/ipc.cpp | 7 +++++++ src/ipc.h | 6 ++++++ update-data | 18 ------------------ 17 files changed, 44 insertions(+), 20 deletions(-) create mode 100755 check-data rename {tf-settings => data}/fonts/opensans-bold.ttf (100%) rename {tf-settings => data}/menu.json (100%) rename {tf-settings => data}/shaders/v2f-c4f.frag (100%) rename {tf-settings => data}/shaders/v2f-c4f.vert (100%) rename {tf-settings => data}/shaders/v2f-t2f-c4f.frag (100%) rename {tf-settings => data}/shaders/v2f-t2f-c4f.vert (100%) rename {tf-settings => data}/shaders/v3f-t2f-c4f.frag (100%) rename {tf-settings => data}/shaders/v3f-t2f-c4f.vert (100%) delete mode 100755 update-data diff --git a/check-data b/check-data new file mode 100755 index 00000000..eaa9abeb --- /dev/null +++ b/check-data @@ -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 diff --git a/tf-settings/fonts/opensans-bold.ttf b/data/fonts/opensans-bold.ttf similarity index 100% rename from tf-settings/fonts/opensans-bold.ttf rename to data/fonts/opensans-bold.ttf diff --git a/tf-settings/menu.json b/data/menu.json similarity index 100% rename from tf-settings/menu.json rename to data/menu.json diff --git a/tf-settings/shaders/v2f-c4f.frag b/data/shaders/v2f-c4f.frag similarity index 100% rename from tf-settings/shaders/v2f-c4f.frag rename to data/shaders/v2f-c4f.frag diff --git a/tf-settings/shaders/v2f-c4f.vert b/data/shaders/v2f-c4f.vert similarity index 100% rename from tf-settings/shaders/v2f-c4f.vert rename to data/shaders/v2f-c4f.vert diff --git a/tf-settings/shaders/v2f-t2f-c4f.frag b/data/shaders/v2f-t2f-c4f.frag similarity index 100% rename from tf-settings/shaders/v2f-t2f-c4f.frag rename to data/shaders/v2f-t2f-c4f.frag diff --git a/tf-settings/shaders/v2f-t2f-c4f.vert b/data/shaders/v2f-t2f-c4f.vert similarity index 100% rename from tf-settings/shaders/v2f-t2f-c4f.vert rename to data/shaders/v2f-t2f-c4f.vert diff --git a/tf-settings/shaders/v3f-t2f-c4f.frag b/data/shaders/v3f-t2f-c4f.frag similarity index 100% rename from tf-settings/shaders/v3f-t2f-c4f.frag rename to data/shaders/v3f-t2f-c4f.frag diff --git a/tf-settings/shaders/v3f-t2f-c4f.vert b/data/shaders/v3f-t2f-c4f.vert similarity index 100% rename from tf-settings/shaders/v3f-t2f-c4f.vert rename to data/shaders/v3f-t2f-c4f.vert diff --git a/makefile b/makefile index 86cb65b7..2ba97255 100644 --- a/makefile +++ b/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 diff --git a/src/globals.cpp b/src/globals.cpp index f4ad12e3..797b7db0 100644 --- a/src/globals.cpp +++ b/src/globals.cpp @@ -9,6 +9,7 @@ #include "sdk.h" #include "copypasted/CSignature.h" +time_t time_injected { 0 }; int g_AppID = 0; diff --git a/src/globals.h b/src/globals.h index 1615a516..a34b56e6 100644 --- a/src/globals.h +++ b/src/globals.h @@ -8,6 +8,8 @@ #ifndef GLOBALS_H_ #define GLOBALS_H_ +#include + 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(); diff --git a/src/hack.cpp b/src/hack.cpp index fd4cc96e..dab4898c 100644 --- a/src/hack.cpp +++ b/src/hack.cpp @@ -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 diff --git a/src/hooks/others.cpp b/src/hooks/others.cpp index 57b660aa..08230f27 100644 --- a/src/hooks/others.cpp +++ b/src/hooks/others.cpp @@ -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 } diff --git a/src/ipc.cpp b/src/ipc.cpp index 81ce34a0..33301d2d 100644 --- a/src/ipc.cpp +++ b/src/ipc.cpp @@ -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)); } diff --git a/src/ipc.h b/src/ipc.h index 9a3b7254..1c9c8702 100644 --- a/src/ipc.h +++ b/src/ipc.h @@ -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; diff --git a/update-data b/update-data deleted file mode 100755 index 3d594f93..00000000 --- a/update-data +++ /dev/null @@ -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 \ No newline at end of file