diff --git a/fonts/opensans.ttf b/fonts/opensans.ttf new file mode 100755 index 00000000..fd79d43b Binary files /dev/null and b/fonts/opensans.ttf differ diff --git a/fonts/roboto.ttf b/fonts/roboto.ttf new file mode 100755 index 00000000..aaf374d2 Binary files /dev/null and b/fonts/roboto.ttf differ diff --git a/fonts/tf2build.ttf b/fonts/tf2build.ttf new file mode 100755 index 00000000..d59eec96 Binary files /dev/null and b/fonts/tf2build.ttf differ diff --git a/fonts/unispace.ttf b/fonts/unispace.ttf new file mode 100755 index 00000000..89a1aadc Binary files /dev/null and b/fonts/unispace.ttf differ diff --git a/fonts/verasans.ttf b/fonts/verasans.ttf new file mode 100755 index 00000000..9be6547e Binary files /dev/null and b/fonts/verasans.ttf differ diff --git a/include/reclasses/C_MannVsMachineStats.hpp b/include/reclasses/C_MannVsMachineStats.hpp new file mode 100644 index 00000000..b174d798 --- /dev/null +++ b/include/reclasses/C_MannVsMachineStats.hpp @@ -0,0 +1,23 @@ +/* + * C_MannVsMachineStats.hpp + * + * Created on: Apr 10, 2018 + * Author: bencat07 + */ + +#pragma once +#include "reclasses.hpp" + +namespace re +{ + +class C_MannVsMachineStats +{ +public: + C_MannVsMachineStats() = delete; + static C_MannVsMachineStats *C_MannVsMachineStats(); + +public: + int AddLocalPlayerUpgrade(int id, unsigned &a3); +}; +} diff --git a/include/reclasses/reclasses.hpp b/include/reclasses/reclasses.hpp index 5d9f3e70..3eca5637 100755 --- a/include/reclasses/reclasses.hpp +++ b/include/reclasses/reclasses.hpp @@ -21,3 +21,5 @@ #include "CTFGCClientSystem.hpp" #include "ITFGroupMatchCriteria.hpp" #include "CTFPartyClient.hpp" + +#include "C_MannVsMachineStats.hpp" diff --git a/include/visual/EffectChams.hpp b/include/visual/EffectChams.hpp old mode 100755 new mode 100644 index a48e8e4d..22e6eaec --- a/include/visual/EffectChams.hpp +++ b/include/visual/EffectChams.hpp @@ -34,7 +34,7 @@ public: return enabled; }; - void SetEntityColor(CachedEntity* ent, rgba_t color); + void SetEntityColor(CachedEntity *ent, rgba_t color); rgba_t ChamsColor(IClientEntity *entity); bool ShouldRenderChams(IClientEntity *entity); void RenderChams(int idx); diff --git a/menu.json b/menu.json new file mode 100755 index 00000000..dc546321 --- /dev/null +++ b/menu.json @@ -0,0 +1,550 @@ +[ + { + "type": "list", + "name": "Aim Bot", + "list": [ + "aimbot_enabled", + "aimbot_aimkey", + "aimbot_aimkey_mode", + "aimbot_autoshoot", + "aimbot_hitboxmode", + "aimbot_fov", + "aimbot_fov_draw", + "aimbot_fov_draw_opacity", + "aimbot_prioritymode", + "aimbot_charge", + "aimbot_auto_unzoom", + "aimbot_auto_zoom", + "aimbot_rage_only", + { + "type": "list", + "name": "Ignore", + "list": [ + "aimbot_ignore_cloak", + "aimbot_ignore_deadringer", + "aimbot_ignore_vaccinator", + "ignore_taunting", + "aimbot_ignore_hoovy", + "aimbot_teammates", + "aimbot_buildings_sentry", + "aimbot_buildings_other", + "aimbot_stickys" + ] + }, + { + "type": "list", + "name": "Auto Heal", + "list": [ + "autoheal_enabled", + "autoheal_uber", + "autoheal_uber_health", + "autoheal_silent", + "autoheal_share_uber" + ] + }, + { + "type": "list", + "name": "Preferences", + "list": [ + "aimbot_miss_chance", + "aimbot_silent", + "aimbot_target_lock", + "aimbot_hitbox", + "aimbot_zoomed", + "aimbot_only_when_can_shoot", + "aimbot_maxrange", + "aimbot_slow", + { + "type": "list", + "name": "Projectile Aimbot Tweaks", + "list": [ + "aimbot_projectile", + "aimbot_proj_gravity", + "aimbot_proj_speed", + "aimbot_huntsman_charge" + ] + } + ] + } + ] + }, + { + "type": "list", + "name": "Trigger Bot", + "list": [ + "trigger_enabled", + "autobackstab", + { + "type": "list", + "name": "Auto Vaccinator", + "list": [ + "auto_vacc", + "auto_vacc_reset_timer", + "auto_vacc_default_resist", + "auto_vacc_bullets", + "auto_vacc_blast", + "auto_vacc_fire", + "auto_vacc_sniper_pop", + "auto_vacc_blast_pop_health", + "auto_vacc_blast_pop_crit", + "auto_vacc_rocket_range", + "auto_vacc_fire_pop_pyro", + "auto_vacc_afterburn", + "auto_vacc_pyro_range", + "auto_vacc_bullet_pop_ubers", + "auto_vacc_blast_pop_ubers", + "auto_vacc_fire_pop_ubers" + ] + }, + { + "type": "list", + "name": "Auto Sticky", + "list": [ + "sticky_enabled", + "sticky_buildings", + "sticky_legit" + ] + }, + { + "type": "list", + "name": "Auto Reflect", + "list": [ + "reflect_enabled", + "reflect_key", + "reflect_legit", + "reflect_only_idle", + "reflect_stickybombs", + "reflect_dodgeball" + ] + }, + { + "type": "list", + "name": "Triggerbot Ignores", + "list": [ + "trigger_ignore_cloak", + "trigger_ignore_hoovy", + "trigger_ignore_vaccinator", + "trigger_buildings_sentry", + "trigger_buildings_other", + "trigger_stickys", + "trigger_teammates" + ] + }, + { + "type": "list", + "name": "Triggerbot Preferences", + "list": [ + "trigger_delay", + "trigger_accuracy", + "trigger_zoomed", + "trigger_maxrange", + "trigger_charge", + "trigger_hitboxmode", + "trigger_key_mode", + "trigger_key" + ] + } + ] + }, + { + "type": "list", + "name": "Visuals", + "list": [ + { + "type": "list", + "name": "ESP", + "list": [ + "esp_enabled", + "esp_box", + "esp_box_corner_size", + "esp_health", + "esp_expand", + "esp_tracers", + "esp_text_position", + "esp_legit", + "esp_vischeck", + "esp_bones", + "esp_buildings", + "esp_teammates", + "esp_name", + "esp_class", + "esp_distance", + "esp_conds", + "esp_ubercharge", + "esp_weapon", + "esp_powerups", + "esp_show_tank", + "esp_weapon_spawners", + "esp_followbot_id", + "esp_local", + "esp_sightlines", + "esp_entity", + "esp_model_name", + "esp_entity_id", + "esp_spellbooks", + { + "type": "list", + "name": "Colors", + "list": [ + "esp_color_red_r", + "esp_color_red_g", + "esp_color_red_b", + "esp_color_blue_r", + "esp_color_blue_g", + "esp_color_blue_b" + ] + }, + { + "type": "list", + "name": "Emoji ESP", + "list": [ + "esp_emoji", + "esp_emoji_size", + "esp_emoji_scaling", + "esp_emoji_min_size" + ] + }, + { + "type": "list", + "name": "Item ESP", + "list": [ + "esp_item", + "esp_item_adrenaline", + "esp_item_powerups", + "esp_item_health", + "esp_item_ammo", + "esp_item_weapons", + "esp_money_red", + "esp_money" + ] + }, + { + "type": "list", + "name": "Projectile ESP", + "list": [ + "esp_proj", + "esp_proj_enemy", + "esp_proj_stickies", + "esp_proj_pipes", + "esp_proj_arrows", + "esp_proj_rockets" + ] + } + ] + }, + { + "type": "list", + "name": "Radar", + "list": [ + "radar", + "radar_size", + "radar_zoom", + "radar_health", + "radar_enemies_top", + "radar_icon_size", + "radar_x", + "radar_y", + "radar_healthpacks", + "radar_ammopacks", + "radar_teammates", + "radar_icons" + ] + }, + { + "type": "list", + "name": "Chams", + "list": [ + "chams_enable", + "chams_legit", + "chams_singlepass", + "chams_health", + "chams_players", + "chams_teammates", + "chams_buildings", + "chams_teammate_buildings", + "chams_flat", + "chams_recursive", + "chams_weapons_white", + "chams_medkits", + "chams_ammo", + "chams_stickies" + ] + }, + { + "type": "list", + "name": "Glow", + "list": [ + "glow_enable", + "glow_solid_when", + "glow_blur_scale", + "glow_health", + "glow_players", + "glow_teammates", + "glow_buildings", + "glow_teammate_buildings", + "glow_medkits", + "glow_ammo", + "glow_stickies", + "glow_powerups", + "glow_weapons_white" + ] + }, + { + "type": "list", + "name": "GUI Settings", + "list": [ + "gui_color_b", + "gui_color_g", + "gui_color_r", + "imgui_color_head_r", + "imgui_color_head_g", + "imgui_color_head_b", + "imgui_color_area_r", + "imgui_color_area_g", + "imgui_color_area_b", + "imgui_color_body_r", + "imgui_color_body_g", + "imgui_color_body_b", + "imgui_color_pops_r", + "imgui_color_pops_g", + "imgui_color_pops_b", + "imgui_color_text", + "imgui_custom", + "gui_rainbow" + ] + }, + { + "type": "list", + "name": "Miscellaneous Settings", + "list": [ + "pure_bypass", + "antidisguise", + "no_arms", + "no_hats", + "thirdperson", + "thirdperson_angles", + "render_zoomed", + "fov", + "fov_zoomed", + "no_zoom", + "clean_screenshots", + "info", + "font_ftgl_esp" + ] + } + ] + }, + { + "type": "list", + "name": "Anti-/Anti-Aim", + "list": [ + "aa_enabled", + "aa_pitch", + "aa_pitch_mode", + "aa_yaw", + "aa_yaw_mode", + "aa_spin", + "aa_roll", + "aa_no_clamp", + "resolver", + { + "type": "list", + "name": "Anti-Anti-Anti-Aim", + "list": [ + "aa_aaaa_enabled", + "aa_aaaa_interval", + "aa_aaaa_interval_low", + "aa_aaaa_interval_high", + "aa_aaaa_mode", + "aa_aaaa_flip_key" + ] + } + ] + }, + { + "type": "list", + "name": "Crit Hack", + "list": [ + "crit_info", + "crit_hack_next", + "crit_hack", + "crit_suppress", + "crit_melee", + "crit_hack_experimental" + ] + }, + { + "type": "list", + "name": "Chat Settings", + "list": [ + "spam", + "killsay", + "uberspam", + "spam_file", + "killsay_file", + "spam_random", + "chat_newlines", + "clean_chat", + "chat_crypto", + "uberspam_ready", + "uberspam_used", + "uberspam_ended", + "uberspam_team", + "uberspam_build", + "uberspam_file", + "spam_voicecommand", + "spam_teamname", + "chat_log", + "chat_log_noipc", + "chat_log_nospam", + "chat_log_template" + ] + }, + { + "type": "list", + "name": "Anti-Cheat", + "list": [ + "ac_enabled", + "ac_ignore_local", + "ac_chat", + "ac_aimbot", + "ac_aimbot_detections", + "ac_aimbot_angle", + "ac_removecond", + "ac_removecond_timer", + "ac_bhop_count" + ] + }, + { + "type": "list", + "name": "Followbot", + "list": [ + "fb_bot", + "fb_distance", + "fb_activation", + "fb_roaming", + "fb_mimic_slot", + "fb_always_medigun", + "fb_sync_taunt", + "fb_crumb_draw" + ] + }, + { + "type": "list", + "name": "Miscellaneous", + "list": [ + "name", + "disconnect_reason", + "name_stealer", + "bhop_enabled", + "nopush_enabled", + "noisemaker", + "tauntslide_tf2", + "anti_afk", + "events", + "airstuck", + "fast_vischeck", + "instant_weapon_switch", + "fakelag", + "skinchanger", + "autoqueue", + "autotaunt", + "autotaunt_chance", + "autojoin_team", + "autojoin_class", + "minigun_jump", + "tauntslide", + "flashlight", + "rollspeedhack", + "info", + "request_balance_spam", + { + "type": "list", + "name": "Remove Conditions", + "list": [ + "removecond_master", + "removecond_value", + "removecond_key", + "removecond_fire", + "removecond_taunt", + "removecond_bleeding", + "removecond_stun", + "spycrab", + "instant_decloak", + "instant_rezoom", + "infinite_packs", + "lagexploit_mini" + ] + }, + { + "type": "list", + "name": "Fidget Spinner", + "list": [ + "fidgetspinner", + "fidgetspinner_scale", + "fidgetspinner_decay_speed", + "fidgetspinner_speed_scale", + "fidgetspinner_speed_cap", + "fidgetspinner_min_speed" + ] + }, + { + "type": "list", + "name": "Heal Arrows", + "list": [ + "healarrow", + "healarrow_charge", + "healarrow_timeout", + "healarrow_callout", + "healarrow_callout_text" + ] + }, + { + "type": "list", + "name": "Spy Alert", + "list": [ + "spyalert_enabled", + "spyalert_warning", + "spyalert_backstab", + "spyalert_sound", + "spyalert_interval" + ] + }, + { + "type": "list", + "name": "Anti Backstab", + "list": [ + "antibackstab", + "antibackstab_nope", + "antibackstab_angle", + "antibackstab_distance", + "antibackstab_silent" + ] + }, + { + "type": "list", + "name": "Debug Settings", + "list": [ + "enabled", + "debug_projectiles", + "debug_aimbot_engine_pp", + "debug_ve_window", + "debug_ve_smooth", + "debug_ve_averaging", + "no_visuals", + "aimbot_debug", + "debug_info", + "log", + "setupbones_time", + "nolerp", + "skinchanger_debug", + "software_cursor_mode", + "experimental_cursor_fix", + "engine_prediction" + ] + } + ] + } +] + + diff --git a/preload.sh b/preload.sh new file mode 100755 index 00000000..e46247cb --- /dev/null +++ b/preload.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Credit to LWSS for doing this shit in Fuzion, looked and pasted a stuff from his preload meme + +# This assumes the presence of the ~/.steam symlink +GAMEROOT=$(realpath $HOME/.local/share/Steam/steamapps/common/Team\ Fortress\ 2) +GAMEEXE="hl2_linux" + +if [ ! -d "$GAMEROOT" ]; then + echo -e "\e[91mCould not find Team Fortress 2 directory. Check if Steam symlink at $HOME/.steam exists.\e[39m" + exit -1 +fi + +export LD_LIBRARY_PATH="$GAMEROOT"\ +":$GAMEROOT/bin"\ +":$GAMEROOT/bin/linux32"\ +":$HOME/.steam/steam/ubuntu12_32"\ +":$HOME/.steam/steam/ubuntu12_32/panorama"\ +":/lib/i386-linux-gnu"\ +":/usr/lib64/atlas"\ +":/usr/lib64/bind99"\ +":/usr/lib64/iscsi"\ +":/usr/lib64/nx"\ +":/usr/lib64/qt-3.3/lib"\ +":/usr/lib"\ +":/lib64"\ +":/usr/lib/i686"\ +":/usr/lib/sse2"\ +":/lib64/tls"\ +":/lib64/sse2"\ +":/usr/lib/steam"\ +":/usr/lib32/steam"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/lib"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu"\ +":$HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib"\ +":$HOME/.steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu"\ +":$HOME/.steam/ubuntu12_32/steam-runtime/amd64/lib"\ +":$HOME/.steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu"\ +":$HOME/.steam/ubuntu12_32/steam-runtime/amd64/usr/lib"\ +":$HOME/.steam/steam/ubuntu12_32"\ +":$HOME/.steam/steam/ubuntu12_64" + +# Set file descriptor limit +ulimit -n 2048 + +export LD_PRELOAD +LD_PRELOAD="$(pwd)/bin/libcathook.so" + +# Enable nVidia threaded optimizations +export __GL_THREADED_OPTIMIZATIONS=1 +# Enable Mesa threaded shader compiles +export multithread_glsl_compiler=1 + +cd "$GAMEROOT" + +STATUS=42 +while [ $STATUS -eq 42 ]; do + if [ "${DEBUGGER}" == "gdb" ] || [ "${DEBUGGER}" == "cgdb" ]; then + echo -e "\e[92mSuccess! Launching TF2 using ${DEBUGGER} as debugger.\e[39m" + + ARGSFILE=$(mktemp "$(whoami)".hl2.gdb.XXXX) + echo b main > "$ARGSFILE" + + # Set the LD_PRELOAD varname in the debugger, and unset the global version. This makes it so that + # gameoverlayrenderer.so and the other preload objects aren't loaded in our debugger's process. + echo set env LD_PRELOAD=$LD_PRELOAD >> "$ARGSFILE" + echo show env LD_PRELOAD >> "$ARGSFILE" + unset LD_PRELOAD + + echo run $@ >> "$ARGSFILE" + echo show args >> "$ARGSFILE" + ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} -x "$ARGSFILE" + rm "$ARGSFILE" + else + echo -e "\e[92mSuccess! Launching TF2.\e[39m" + ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@" + fi + STATUS=$? +done + +exit ${STATUS} diff --git a/shaders/v2f-c4f.frag b/shaders/v2f-c4f.frag new file mode 100755 index 00000000..89946792 --- /dev/null +++ b/shaders/v2f-c4f.frag @@ -0,0 +1,4 @@ +// 2D drawing shader +void main() { + gl_FragColor = gl_Color; +} diff --git a/shaders/v2f-c4f.vert b/shaders/v2f-c4f.vert new file mode 100755 index 00000000..dda5f179 --- /dev/null +++ b/shaders/v2f-c4f.vert @@ -0,0 +1,13 @@ +// 2D drawing shader +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; + +attribute vec2 vertex; +attribute vec4 color; + +void main() +{ + gl_FrontColor = color; + gl_Position = projection*(view*(model*vec4(vertex,0.0,1.0))); +} diff --git a/shaders/v2f-t2f-c4f.frag b/shaders/v2f-t2f-c4f.frag new file mode 100755 index 00000000..3cdf9801 --- /dev/null +++ b/shaders/v2f-t2f-c4f.frag @@ -0,0 +1,6 @@ +// 2D drawing shader +uniform sampler2D texture; +void main() +{ + gl_FragColor = texture2D(texture, gl_TexCoord[0].xy) * gl_Color; +} diff --git a/shaders/v2f-t2f-c4f.vert b/shaders/v2f-t2f-c4f.vert new file mode 100755 index 00000000..1927b815 --- /dev/null +++ b/shaders/v2f-t2f-c4f.vert @@ -0,0 +1,15 @@ +// 2D drawing shader - modified freetype-gl shader +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; + +attribute vec2 vertex; +attribute vec2 tex_coord; +attribute vec4 color; + +void main() +{ + gl_TexCoord[0].xy = tex_coord.xy; + gl_FrontColor = color; + gl_Position = projection*(view*(model*vec4(vertex,0.0,1.0))); +} diff --git a/shaders/v3f-t2f-c4f.frag b/shaders/v3f-t2f-c4f.frag new file mode 100755 index 00000000..4b37f859 --- /dev/null +++ b/shaders/v3f-t2f-c4f.frag @@ -0,0 +1,11 @@ +/* Freetype GL - A C OpenGL Freetype engine + * + * Distributed under the OSI-approved BSD 2-Clause License. See accompanying + * file `LICENSE` for more details. + */ +uniform sampler2D texture; +void main() +{ + float a = texture2D(texture, gl_TexCoord[0].xy).r; + gl_FragColor = vec4(gl_Color.rgb, gl_Color.a*a); +} diff --git a/shaders/v3f-t2f-c4f.vert b/shaders/v3f-t2f-c4f.vert new file mode 100755 index 00000000..5d0232c3 --- /dev/null +++ b/shaders/v3f-t2f-c4f.vert @@ -0,0 +1,18 @@ +/* Freetype GL - A C OpenGL Freetype engine + * + * Distributed under the OSI-approved BSD 2-Clause License. See accompanying + * file `LICENSE` for more details. + */ +uniform mat4 model; +uniform mat4 view; +uniform mat4 projection; + +attribute vec3 vertex; +attribute vec2 tex_coord; +attribute vec4 color; +void main() +{ + gl_TexCoord[0].xy = tex_coord.xy; + gl_FrontColor = color; + gl_Position = projection*(view*(model*vec4(vertex,1.0))); +} diff --git a/sound/combowhore.wav b/sound/combowhore.wav new file mode 100755 index 00000000..802efbe4 Binary files /dev/null and b/sound/combowhore.wav differ diff --git a/sound/dominating.wav b/sound/dominating.wav new file mode 100755 index 00000000..1c19acb7 Binary files /dev/null and b/sound/dominating.wav differ diff --git a/sound/doublekill.wav b/sound/doublekill.wav new file mode 100755 index 00000000..df6022ee Binary files /dev/null and b/sound/doublekill.wav differ diff --git a/sound/firstblood.wav b/sound/firstblood.wav new file mode 100755 index 00000000..3646b4a2 Binary files /dev/null and b/sound/firstblood.wav differ diff --git a/sound/godlike.wav b/sound/godlike.wav new file mode 100755 index 00000000..6c3dce8a Binary files /dev/null and b/sound/godlike.wav differ diff --git a/sound/hattrick.wav b/sound/hattrick.wav new file mode 100755 index 00000000..59071307 Binary files /dev/null and b/sound/hattrick.wav differ diff --git a/sound/headhunter.wav b/sound/headhunter.wav new file mode 100755 index 00000000..e7396023 Binary files /dev/null and b/sound/headhunter.wav differ diff --git a/sound/headshot.wav b/sound/headshot.wav new file mode 100755 index 00000000..6a768614 Binary files /dev/null and b/sound/headshot.wav differ diff --git a/sound/holyshit.wav b/sound/holyshit.wav new file mode 100755 index 00000000..4b2da972 Binary files /dev/null and b/sound/holyshit.wav differ diff --git a/sound/humiliation.wav b/sound/humiliation.wav new file mode 100755 index 00000000..170eabc2 Binary files /dev/null and b/sound/humiliation.wav differ diff --git a/sound/impressive.wav b/sound/impressive.wav new file mode 100755 index 00000000..09a48715 Binary files /dev/null and b/sound/impressive.wav differ diff --git a/sound/killingspree.wav b/sound/killingspree.wav new file mode 100755 index 00000000..e7cb3ba9 Binary files /dev/null and b/sound/killingspree.wav differ diff --git a/sound/ludicrouskill.wav b/sound/ludicrouskill.wav new file mode 100755 index 00000000..a6c0aca2 Binary files /dev/null and b/sound/ludicrouskill.wav differ diff --git a/sound/megakill.wav b/sound/megakill.wav new file mode 100755 index 00000000..022d135c Binary files /dev/null and b/sound/megakill.wav differ diff --git a/sound/monsterkill.wav b/sound/monsterkill.wav new file mode 100755 index 00000000..1dfb0698 Binary files /dev/null and b/sound/monsterkill.wav differ diff --git a/sound/multikill.wav b/sound/multikill.wav new file mode 100755 index 00000000..0a9f1f66 Binary files /dev/null and b/sound/multikill.wav differ diff --git a/sound/perfect.wav b/sound/perfect.wav new file mode 100755 index 00000000..a0a6c25c Binary files /dev/null and b/sound/perfect.wav differ diff --git a/sound/play.wav b/sound/play.wav new file mode 100755 index 00000000..f9300dbb Binary files /dev/null and b/sound/play.wav differ diff --git a/sound/prepare.wav b/sound/prepare.wav new file mode 100755 index 00000000..4ac754eb Binary files /dev/null and b/sound/prepare.wav differ diff --git a/sound/rampage.wav b/sound/rampage.wav new file mode 100755 index 00000000..97324ab1 Binary files /dev/null and b/sound/rampage.wav differ diff --git a/sound/teamkiller.wav b/sound/teamkiller.wav new file mode 100755 index 00000000..f9bbb140 Binary files /dev/null and b/sound/teamkiller.wav differ diff --git a/sound/triplekill.wav b/sound/triplekill.wav new file mode 100755 index 00000000..39485e73 Binary files /dev/null and b/sound/triplekill.wav differ diff --git a/sound/ultrakill.wav b/sound/ultrakill.wav new file mode 100755 index 00000000..448e67e9 Binary files /dev/null and b/sound/ultrakill.wav differ diff --git a/sound/unstoppable.wav b/sound/unstoppable.wav new file mode 100755 index 00000000..59e202f1 Binary files /dev/null and b/sound/unstoppable.wav differ diff --git a/sound/wickedsick.wav b/sound/wickedsick.wav new file mode 100755 index 00000000..937709df Binary files /dev/null and b/sound/wickedsick.wav differ diff --git a/src/crits.cpp b/src/crits.cpp old mode 100755 new mode 100644 index 465b676d..130d93cd --- a/src/crits.cpp +++ b/src/crits.cpp @@ -95,7 +95,8 @@ static const model_t *lastweapon = nullptr; bool force_crit(IClientEntity *weapon) { if (lastnumber < g_pUserCmd->command_number || - lastweapon != weapon->GetModel() || lastnumber - g_pUserCmd->command_number > 1000) + lastweapon != weapon->GetModel() || + lastnumber - g_pUserCmd->command_number > 1000) { if (cached_calculation.init_command > g_pUserCmd->command_number || g_pUserCmd->command_number - cached_calculation.init_command > diff --git a/src/fidgetspinner.cpp b/src/fidgetspinner.cpp index 756d119e..ac5d2997 100644 --- a/src/fidgetspinner.cpp +++ b/src/fidgetspinner.cpp @@ -92,12 +92,13 @@ void DrawSpinner() const glez_rgba_t color = glez_rgba(255, 255, 255, 255); - draw_api::texture_handle_t text = draw_api::create_texture(DATA_PATH"/res/atlas.png"); + draw_api::texture_handle_t text = + draw_api::create_texture(DATA_PATH "/res/atlas.png"); while (!text.handle || text.handle == 4294967295) - text = draw_api::create_texture(DATA_PATH"/res/atlas.png"); - draw_api::draw_rect_textured(draw::width / 2, draw::height / 2, size, size, colors::white, - text, 0 + 64 * state, (3 + (v9mode ? 1 : 0)) * 64, 64, 64, - angle); + text = draw_api::create_texture(DATA_PATH "/res/atlas.png"); + draw_api::draw_rect_textured(draw::width / 2, draw::height / 2, size, size, + colors::white, text, 0 + 64 * state, + (3 + (v9mode ? 1 : 0)) * 64, 64, 64, angle); if (angle > PI * 4) angle -= PI * 4; } diff --git a/src/hack.cpp b/src/hack.cpp old mode 100755 new mode 100644 index 6c2b0f13..ac81ea0c --- a/src/hack.cpp +++ b/src/hack.cpp @@ -82,7 +82,10 @@ std::stack &hack::command_stack() */ #define red 184, 56, 59, 255 #define blu 88, 133, 162, 255 -static CatVar cat_event_hurt(CV_SWITCH, "cat_event_hurt", "1", "Enable OnHurt Event", "Disable if your chat gets spammed with \"blah damaged blah down to blah hp\""); +static CatVar cat_event_hurt(CV_SWITCH, "cat_event_hurt", "1", + "Enable OnHurt Event", + "Disable if your chat gets spammed with \"blah " + "damaged blah down to blah hp\""); class AdvancedEventListener : public IGameEventListener { public: @@ -92,21 +95,25 @@ public: return; const char *name = event->GetName(); if (!strcmp(name, "player_connect_client")) - PrintChat("\x07%06X%s\x01 \x07%06X%s\x01 joining", 0xa06ba0,event->GetString("name"), 0x914e65,event->GetString("networkid")); + PrintChat("\x07%06X%s\x01 \x07%06X%s\x01 joining", 0xa06ba0, + event->GetString("name"), 0x914e65, + event->GetString("networkid")); else if (!strcmp(name, "player_activate")) { int uid = event->GetInt("userid"); int entity = g_IEngine->GetPlayerForUserID(uid); player_info_s info; if (g_IEngine->GetPlayerInfo(entity, &info)) - PrintChat("\x07%06X%s\x01 connected", 0xa06ba0, info.name); - + PrintChat("\x07%06X%s\x01 connected", 0xa06ba0, info.name); } else if (!strcmp(name, "player_disconnect")) { CachedEntity *player = ENTITY(g_IEngine->GetPlayerForUserID(event->GetInt("userid"))); - PrintChat("\x07%06X%s\x01 \x07%06X%s\x01 disconnected",colors::chat::team(player->m_iTeam),event->GetString("name"), 0x914e65,event->GetString("networkid")); + PrintChat("\x07%06X%s\x01 \x07%06X%s\x01 disconnected", + colors::chat::team(player->m_iTeam), + event->GetString("name"), 0x914e65, + event->GetString("networkid")); } else if (!strcmp(name, "player_team")) { @@ -116,54 +123,78 @@ public: int nteam = event->GetInt("team"); const char *oteam_s = teamname(oteam); const char *nteam_s = teamname(nteam); - PrintChat("\x07%06X%s\x01 changed team (\x07%06X%s\x01 -> ""\x07%06X%s\x01)",0xa06ba0, event->GetString("name"),colors::chat::team(oteam), oteam_s,colors::chat::team(nteam), nteam_s); + PrintChat("\x07%06X%s\x01 changed team (\x07%06X%s\x01 -> " + "\x07%06X%s\x01)", + 0xa06ba0, event->GetString("name"), + colors::chat::team(oteam), oteam_s, + colors::chat::team(nteam), nteam_s); } } - else if (!strcmp(name, "player_hurt")) { - int victim = event->GetInt("userid"); - int attacker = event->GetInt("attacker"); - int health = event->GetInt("health"); - player_info_s kinfo; - player_info_s vinfo; - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(victim), &vinfo); - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(attacker), &kinfo); - CachedEntity* vic = ENTITY(g_IEngine->GetPlayerForUserID(victim)); - CachedEntity* att = ENTITY(g_IEngine->GetPlayerForUserID(attacker)); - PrintChat("\x07%06X%s\x01 hurt \x07%06X%s\x01 down to \x07%06X%d\x01hp", colors::chat::team(att->m_iTeam), kinfo.name, colors::chat::team(vic->m_iTeam), vinfo.name, 0x2aaf18, health); + else if (!strcmp(name, "player_hurt")) + { + int victim = event->GetInt("userid"); + int attacker = event->GetInt("attacker"); + int health = event->GetInt("health"); + player_info_s kinfo; + player_info_s vinfo; + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(victim), + &vinfo); + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(attacker), + &kinfo); + CachedEntity *vic = ENTITY(g_IEngine->GetPlayerForUserID(victim)); + CachedEntity *att = ENTITY(g_IEngine->GetPlayerForUserID(attacker)); + PrintChat( + "\x07%06X%s\x01 hurt \x07%06X%s\x01 down to \x07%06X%d\x01hp", + colors::chat::team(att->m_iTeam), kinfo.name, + colors::chat::team(vic->m_iTeam), vinfo.name, 0x2aaf18, health); } - else if (!strcmp(name, "player_death")) { - int victim = event->GetInt("userid"); - int attacker = event->GetInt("attacker"); - player_info_s kinfo; - player_info_s vinfo; - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(victim), &vinfo); - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(attacker), &kinfo); - CachedEntity* vic = ENTITY(g_IEngine->GetPlayerForUserID(victim)); - CachedEntity* att = ENTITY(g_IEngine->GetPlayerForUserID(attacker)); - PrintChat("\x07%06X%s\x01 killed \x07%06X%s\x01", colors::chat::team(att->m_iTeam), kinfo.name, colors::chat::team(vic->m_iTeam), vinfo.name); + else if (!strcmp(name, "player_death")) + { + int victim = event->GetInt("userid"); + int attacker = event->GetInt("attacker"); + player_info_s kinfo; + player_info_s vinfo; + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(victim), + &vinfo); + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(attacker), + &kinfo); + CachedEntity *vic = ENTITY(g_IEngine->GetPlayerForUserID(victim)); + CachedEntity *att = ENTITY(g_IEngine->GetPlayerForUserID(attacker)); + PrintChat("\x07%06X%s\x01 killed \x07%06X%s\x01", + colors::chat::team(att->m_iTeam), kinfo.name, + colors::chat::team(vic->m_iTeam), vinfo.name); } - else if (!strcmp(name, "player_spawn")) { - int id = event->GetInt("userid"); - player_info_s info; - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(id), &info); - CachedEntity* player = ENTITY(g_IEngine->GetPlayerForUserID(id)); - PrintChat("\x07%06X%s\x01 (re)spawned", colors::chat::team(player->m_iTeam), info.name); + else if (!strcmp(name, "player_spawn")) + { + int id = event->GetInt("userid"); + player_info_s info; + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(id), &info); + CachedEntity *player = ENTITY(g_IEngine->GetPlayerForUserID(id)); + PrintChat("\x07%06X%s\x01 (re)spawned", + colors::chat::team(player->m_iTeam), info.name); } - else if (!strcmp(name, "player_changeclass")) { - int id = event->GetInt("userid"); - player_info_s info; - g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(id), &info); - CachedEntity* player = ENTITY(g_IEngine->GetPlayerForUserID(id)); - PrintChat("\x07%06X%s\x01 changed to \x07%06X%s\x01", colors::chat::team(player->m_iTeam), info.name, 0xa06ba0, classname(event->GetInt("class"))); + else if (!strcmp(name, "player_changeclass")) + { + int id = event->GetInt("userid"); + player_info_s info; + g_IEngine->GetPlayerInfo(g_IEngine->GetPlayerForUserID(id), &info); + CachedEntity *player = ENTITY(g_IEngine->GetPlayerForUserID(id)); + PrintChat("\x07%06X%s\x01 changed to \x07%06X%s\x01", + colors::chat::team(player->m_iTeam), info.name, 0xa06ba0, + classname(event->GetInt("class"))); } - else if (!strcmp(name, "vote_cast")) { - int vote_option = event->GetInt("vote_option"); - int team = event->GetInt("team"); - int idx = event->GetInt("entityid"); - player_info_s info; - const char *team_s = teamname(team); - g_IEngine->GetPlayerInfo(idx, &info); - PrintChat("\x07%06X%s\x01 Voted \x07%06X%d\x01 on team \x07%06X%s\x01", colors::chat::team(team), info.name, colors::chat::team(team), vote_option, colors::chat::team(team), team_s); + else if (!strcmp(name, "vote_cast")) + { + int vote_option = event->GetInt("vote_option"); + int team = event->GetInt("team"); + int idx = event->GetInt("entityid"); + player_info_s info; + const char *team_s = teamname(team); + g_IEngine->GetPlayerInfo(idx, &info); + PrintChat( + "\x07%06X%s\x01 Voted \x07%06X%d\x01 on team \x07%06X%s\x01", + colors::chat::team(team), info.name, colors::chat::team(team), + vote_option, colors::chat::team(team), team_s); }; } }; diff --git a/src/hacks/AntiBackstab.cpp b/src/hacks/AntiBackstab.cpp index 5e76c1f6..31de012d 100644 --- a/src/hacks/AntiBackstab.cpp +++ b/src/hacks/AntiBackstab.cpp @@ -19,7 +19,7 @@ static CatVar enabled(CV_SWITCH, "antibackstab", "0", "Enable", "Main anti-backstab switch"); static CatVar distance(CV_FLOAT, "antibackstab_distance", "200", "Distance", "Distance Until anti-backstab reacts"); -static CatVar angle(CV_FLOAT, "antibackstab_angle", "150", "Detection Angle"); +static CatVar angle(CV_FLOAT, "antibackstab_angle", "90", "Detection Angle"); static CatVar sayno(CV_SWITCH, "antibackstab_nope", "0", "Nope!", "Memes"); void SayNope() @@ -87,8 +87,6 @@ CachedEntity *ClosestSpy() } return closest; } -static CatVar test(CV_FLOAT, "a_t", "180", ""); -static CatVar test2(CV_SWITCH, "a_t2", "0", ""); void CreateMove() { CachedEntity *spy; @@ -103,8 +101,10 @@ void CreateMove() ConVar *var = g_ICvar->FindVar("cl_pitchdown"); if (!var) return; - var->SetValue(140.0f); - g_pUserCmd->viewangles.x = 140.0f; + Vector angles = CE_VECTOR(spy, netvar.angEyeAngles); + + var->SetValue(360.0f); + g_pUserCmd->viewangles.x = angles.x + 180.0f; g_pLocalPlayer->bUseSilentAngles = true; if (sayno) SayNope(); diff --git a/src/hacks/ESP.cpp b/src/hacks/ESP.cpp index 2046db6b..5702a897 100644 --- a/src/hacks/ESP.cpp +++ b/src/hacks/ESP.cpp @@ -378,7 +378,7 @@ void _FASTCALL emoji(CachedEntity *ent) if (ent->m_Type == ENTITY_PLAYER) { static glez_texture_t textur = - glez_texture_load_png_rgba(DATA_PATH"/res/atlas.png"); + glez_texture_load_png_rgba(DATA_PATH "/res/atlas.png"); static glez_texture_t idspecific; if (emoji_ok) auto hit = hitboxcache[ent->m_IDX][0]; @@ -402,8 +402,8 @@ void _FASTCALL emoji(CachedEntity *ent) } glez_rgba_t white = glez_rgba(255, 255, 255, 255); while (!textur || textur == 4294967295) - textur = glez_texture_load_png_rgba( - DATA_PATH"/res/atlas.png"); + textur = glez_texture_load_png_rgba(DATA_PATH + "/res/atlas.png"); player_info_s info; unsigned int steamID; unsigned int steamidarray[32]{}; @@ -416,7 +416,7 @@ void _FASTCALL emoji(CachedEntity *ent) steamID = info.friendsID; if (!idspecific) idspecific = glez_texture_load_png_rgba( - DATA_PATH"/res/idspec.png"); + DATA_PATH "/res/idspec.png"); if (idspecific && playerlist::AccessData(steamID).state == playerlist::k_EState::CAT) @@ -429,7 +429,7 @@ void _FASTCALL emoji(CachedEntity *ent) { while (!idspecific) idspecific = glez_texture_load_png_rgba( - DATA_PATH"/res/idspec.png"); + DATA_PATH "/res/idspec.png"); if (idspecific) glez_rect_textured(head_scr.x - size / 2, head_scr.y - size / 2, size, diff --git a/src/hooks/others.cpp b/src/hooks/others.cpp index 055dff4b..036b8718 100644 --- a/src/hooks/others.cpp +++ b/src/hooks/others.cpp @@ -15,7 +15,6 @@ #if ENABLE_VISUALS == 1 - static CatVar medal_flip(CV_SWITCH, "medal_flip", "0", "Infinite Medal Flip", ""); @@ -593,7 +592,7 @@ void FrameStageNotify_hook(void *_this, int stage) if (nightmode) { static int OldNightmode = 0; - if (OldNightmode != (int)nightmode) + if (OldNightmode != (int) nightmode) { static ConVar *r_DrawSpecificStaticProp = @@ -902,18 +901,25 @@ bool DispatchUserMessage_hook(void *_this, int type, bf_read &buf) } } } - if (sendmsg.test_and_set(300000) && hacks::shared::antiaim::communicate) - chat_stack::Say("!!meow"); + if (sendmsg.test_and_set(300000) && + hacks::shared::antiaim::communicate) + chat_stack::Say("!!meow"); if (crypt_chat) { if (message.find("!!") == 0) { if (ucccccp::validate(message)) { - if (ucccccp::decrypt(message) == "meow" && hacks::shared::antiaim::communicate && data[0] != LOCAL_E->m_IDX && playerlist::AccessData(ENTITY(data[0])).state != playerlist::k_EState::CAT) { - playerlist::AccessData(ENTITY(data[0])).state = playerlist::k_EState::CAT; - chat_stack::Say("!!meow"); - } + if (ucccccp::decrypt(message) == "meow" && + hacks::shared::antiaim::communicate && + data[0] != LOCAL_E->m_IDX && + playerlist::AccessData(ENTITY(data[0])).state != + playerlist::k_EState::CAT) + { + playerlist::AccessData(ENTITY(data[0])).state = + playerlist::k_EState::CAT; + chat_stack::Say("!!meow"); + } PrintChat("\x07%06X%s\x01: %s", 0xe05938, name.c_str(), ucccccp::decrypt(message).c_str()); } diff --git a/src/reclasses/C_MannVsMachineStats.cpp b/src/reclasses/C_MannVsMachineStats.cpp new file mode 100644 index 00000000..a2b48aec --- /dev/null +++ b/src/reclasses/C_MannVsMachineStats.cpp @@ -0,0 +1,34 @@ +/* + * CMannVsMachineStats.cpp + * + * Created on: Apr 10, 2018 + * Author: bencat07 + */ +#include "common.hpp" +using namespace re; + +// Unsued right now because of unclear values in AddLocalPlayerUpgrade +C_MannVsMachineStats C_MannVsMachineStats::C_MannVsMachineStats() +{ + typedef C_MannVsMachineStats *(*C_MannVsMachineStats_t)(); + static uintptr_t addr = gSignatures.GetClientSignature( + "55 A1 ? ? ? ? 89 E5 5D C3 8D B6 00 00 00 00 55 89 E5 53 83 EC ? 8B 5D " + "? C7 83 ? ? ? ? ? ? ? ?"); + static C_MannVsMachineStats_t C_MannVsMachineStats_fn = + C_MannVsMachineStats_t(addr); + + return C_MannVsMachineStats_fn(); +} +int C_MannVsMachineStats::AddLocalPlayerUpgrade(int id, unsigned &a3) +{ + typedef int *(*AddLocalPlayerUpgrade_t)(C_MannVsMachineStats *, int, + unsigned); + static uintptr_t addr = gSignatures.GetClientSignature( + "55 89 E5 57 56 53 83 EC ? 8B 5D ? 8B 75 ? 8B 7D ? 8B 43 ? 8B 53 ? 83 " + "C0 ? 39 D0 7E ? 29 D0 89 1C 24 89 44 24 ? E8 ? ? ? ? 8B 43 ? 83 C0 ? " + "8B 13 89 43 ? 29 F0 83 E8 ? 89 F1 C1 E1 ?"); + static AddLocalPlayerUpgrade_t AddLocalPlayerUpgrade_fn = + AddLocalPlayerUpgrade_t(addr); + + return AddLocalPlayerUpgrade_fn(this, id, &a3); +} diff --git a/src/visual/EffectChams.cpp b/src/visual/EffectChams.cpp old mode 100755 new mode 100644 index 526ed533..365e529c --- a/src/visual/EffectChams.cpp +++ b/src/visual/EffectChams.cpp @@ -102,15 +102,17 @@ void EffectChams::EndRenderChams() g_IVModelRender->ForcedMaterialOverride(nullptr); } bool data[32] = {}; -void EffectChams::SetEntityColor (CachedEntity* ent, rgba_t color) { - data[ent->m_IDX] = color; +void EffectChams::SetEntityColor(CachedEntity *ent, rgba_t color) +{ + data[ent->m_IDX] = color; } rgba_t EffectChams::ChamsColor(IClientEntity *entity) { CachedEntity *ent = ENTITY(entity->entindex()); - if (data[entity->entindex()]) { - data[entity->entindex()] = false; - return colors::pink; + if (data[entity->entindex()]) + { + data[entity->entindex()] = false; + return colors::pink; } if (CE_BAD(ent)) return colors::white; diff --git a/src/visual/drawmgr.cpp b/src/visual/drawmgr.cpp index 847ed50d..e3294f35 100644 --- a/src/visual/drawmgr.cpp +++ b/src/visual/drawmgr.cpp @@ -56,36 +56,40 @@ void DrawCheatVisuals() PROF_SECTION(DRAW_info); std::string name_s, reason_s; PROF_SECTION(PT_info_text); - AddSideString("cathook by nullifiedcat", colors::RainbowCurrent()); - if (!info_text_min) + if (info_text) { - AddSideString(hack::GetVersion(), - GUIColor()); // github commit and date - AddSideString(hack::GetType(), GUIColor()); // Compile type + AddSideString("cathook by nullifiedcat", colors::RainbowCurrent()); + if (!info_text_min) + { + AddSideString(hack::GetVersion(), + GUIColor()); // github commit and date + AddSideString(hack::GetType(), GUIColor()); // Compile type #if ENABLE_GUI - AddSideString( - "Press 'INSERT' or 'F11' key to open/close cheat menu.", - GUIColor()); - AddSideString("Use mouse to navigate in menu.", GUIColor()); + AddSideString( + "Press 'INSERT' or 'F11' key to open/close cheat menu.", + GUIColor()); + AddSideString("Use mouse to navigate in menu.", GUIColor()); #endif - if (!g_IEngine->IsInGame() + if (!g_IEngine->IsInGame() #if ENABLE_GUI /* || g_pGUI->Visible() */ #endif - ) - { - name_s = force_name.GetString(); - if (name_s.length() < 3) - name_s = "*Not Set*"; - reason_s = disconnect_reason.GetString(); - if (reason_s.length() < 3) - reason_s = "*Not Set*"; - AddSideString(""); // foolish - AddSideString(format("Custom Name: ", name_s), GUIColor()); - AddSideString(format("Custom Disconnect Reason: ", reason_s), - GUIColor()); + ) + { + name_s = force_name.GetString(); + if (name_s.length() < 3) + name_s = "*Not Set*"; + reason_s = disconnect_reason.GetString(); + if (reason_s.length() < 3) + reason_s = "*Not Set*"; + AddSideString(""); // foolish + AddSideString(format("Custom Name: ", name_s), GUIColor()); + AddSideString( + format("Custom Disconnect Reason: ", reason_s), + GUIColor()); + } } } } diff --git a/src/votelogger.cpp b/src/votelogger.cpp old mode 100755 new mode 100644 index fa964076..8cc299c3 --- a/src/votelogger.cpp +++ b/src/votelogger.cpp @@ -11,11 +11,12 @@ 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 requeue(CV_SWITCH, "votelog_requeue", "1", + "Auto requeue on vote kick", "Auto requeue on vote kick"); void user_message(bf_read &buffer, int type) { - bool islocalplayer = false; + bool islocalplayer = false; if (!enabled) return; @@ -26,7 +27,7 @@ void user_message(bf_read &buffer, int type) break; case 46: { - islocalplayer = false; + islocalplayer = false; unsigned char caller = buffer.ReadByte(); // unknown buffer.ReadByte(); @@ -45,7 +46,7 @@ void user_message(bf_read &buffer, int type) steamID = info.friendsID; } if (eid == LOCAL_E->m_IDX) - islocalplayer = true; + islocalplayer = true; logging::Info("Vote called to kick %s [U:1:%u] for %s", name, steamID, reason); @@ -54,7 +55,7 @@ void user_message(bf_read &buffer, int type) case 47: logging::Info("Vote passed"); if (islocalplayer && requeue) - tfmm::queue_start(); + tfmm::queue_start(); break; case 48: logging::Info("Vote failed");