Skip to content

Commit

Permalink
Improved kill sound + Improved Anti-AFK + Added customization
Browse files Browse the repository at this point in the history
also fixed bugs yk yk
  • Loading branch information
womblee committed Jun 25, 2024
1 parent a53b908 commit 3f628d4
Show file tree
Hide file tree
Showing 16 changed files with 130 additions and 66 deletions.
Binary file modified .vs/spankerfield/v17/.suo
Binary file not shown.
Binary file modified .vs/spankerfield/v17/Browse.VC.db
Binary file not shown.
9 changes: 6 additions & 3 deletions spankerfield/Features/Anti AFK/anti_afk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@ namespace plugins
const auto input = input_cache->m_Event;
if (!input) return;

// Shouldn't interrupt anything
input[ConceptJump] = 1.f;
input[ConceptJump] = 0.f;
// Picked the ones that don't conflict with player movement
input[ConceptMoveFB] = 1.0f;
input[ConceptMoveLR] = 1.0f;
input[ConceptFreeCameraMoveFB] = -1.0f;
input[ConceptFreeCameraRotateX] = 1.0f;
input[ConceptFreeCameraRotateY] = 1.0f;

last_check = GetTickCount64();
}
Expand Down
37 changes: 25 additions & 12 deletions spankerfield/Features/Kill Sound/kill_sound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ using namespace big;
namespace plugins
{
static int previous_kills = 0;
static bool first_run = true;
static std::chrono::steady_clock::time_point last_kill_time;
void kill_sound()
{
if (!g_settings.kill_sound) return;
Expand Down Expand Up @@ -33,33 +35,44 @@ namespace plugins
const auto score = score_manager->getScore(local_player);
if (!score) return;

// Simple kill sound
// Our current kills
int current_kills = score->m_playerScore.m_kills;

if (current_kills > previous_kills)
// We do this to prevent issues with injecting the cheat and hearing a kill sound, if you already have kills
if (first_run)
{
std::string file_path(g_settings.kill_sound_path);
first_run = false;
previous_kills = current_kills;
last_kill_time = std::chrono::steady_clock::now();

return;
}

// Time check to prevent multiple sounds (debouncing)
auto now = std::chrono::steady_clock::now();
if (current_kills > previous_kills && std::chrono::duration_cast<std::chrono::milliseconds>(now - last_kill_time).count() > 100)
{
std::string file_path(g_settings.kill_sound_path);
if (std::filesystem::exists(file_path) && !std::filesystem::is_directory(file_path))
{
// Wave only so that we don't have any issues
bool is_wav_file = file_path.size() > 3 && std::equal(file_path.end() - 4, file_path.end(), xorstr_(".wav"), [](char a, char b) { return std::tolower(a) == std::tolower(b); });
bool is_wav_file = file_path.size() > 3 && std::equal(file_path.end() - 4, file_path.end(), ".wav", [](char a, char b) { return std::tolower(a) == std::tolower(b); });

if (is_wav_file)
{
g_thread_pool->push([&]
g_thread_pool->push([file_path]
{
// Convert std::string to std::wstring
int size_needed = MultiByteToWideChar(CP_UTF8, 0, file_path.c_str(), (int)file_path.size(), NULL, 0);
std::vector<wchar_t> wstrTo(size_needed + 1);
MultiByteToWideChar(CP_UTF8, 0, file_path.c_str(), (int)file_path.size(), wstrTo.data(), size_needed);
wstrTo[size_needed] = 0;
std::wstring wstr_to(size_needed, 0);
MultiByteToWideChar(CP_UTF8, 0, file_path.c_str(), (int)file_path.size(), &wstr_to[0], size_needed);

// This triggers the FairFight screenshot for some reason
PlaySound(wstrTo.data(), NULL, SND_FILENAME | SND_ASYNC);
PlaySound(wstr_to.c_str(), NULL, SND_FILENAME | SND_ASYNC);
});
}
}
}

last_kill_time = now;
}

previous_kills = current_kills;
Expand Down
2 changes: 1 addition & 1 deletion spankerfield/Features/Minimap/minimap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ namespace plugins
if (!IsValidPtr(components)) continue;

const auto map = components->GetComponentByClassId<ClientSpottingTargetComponent>(378);
if (!IsValidPtrWithVTable(map))
if (IsValidPtrWithVTable(map))
map->activeSpotType = g_globals.g_should_draw ? ClientSpottingTargetComponent::SpotType_Active : ClientSpottingTargetComponent::SpotType_None;
}
}
Expand Down
2 changes: 1 addition & 1 deletion spankerfield/Features/Overheat/overheat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace plugins
if (!player_manager) return;

const auto local_player = player_manager->m_pLocalPlayer;
if (!local_player) return;
if (!IsValidPtrWithVTable(local_player)) return;

const auto vehicle = local_player->GetVehicle();
if (!IsValidPtrWithVTable(vehicle)) return;
Expand Down
11 changes: 7 additions & 4 deletions spankerfield/Features/Radar/radar.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
#include "radar.h"
#include "../../settings.h"
#include "../../Utilities/other.h"
#include "../../Utilities/math.h"
#include "../../Rendering/draw-list.h"

#pragma warning( disable : 4244 )

#define M_PI 3.14159265358979323846

using namespace big;
namespace plugins
{
Expand Down Expand Up @@ -34,7 +37,7 @@ namespace plugins

const auto aiming = weapon->m_pAuthoritativeAiming;
if (!aiming) return;

const auto yaw = aiming->m_Yaw;
if (!yaw) return;

Expand All @@ -45,22 +48,22 @@ namespace plugins
// Radar filler
if (g_settings.radar_circular)
{
m_drawing->AddCircleFilled(center, radius, ImColor(0, 0, 0, 160));
m_drawing->AddCircleFilled(center, radius, g_settings.radar_background_color);

if (g_settings.radar_outline)
m_drawing->AddCircle(center, radius, g_settings.radar_outline_color);
}
else
{
m_drawing->DrawFillArea(g_settings.radar_x, g_settings.radar_y, g_settings.radar_width, g_settings.radar_height, ImColor(0, 0, 0, 160));
m_drawing->DrawFillArea(g_settings.radar_x, g_settings.radar_y, g_settings.radar_width, g_settings.radar_height, g_settings.radar_background_color);

if (g_settings.radar_outline)
m_drawing->DrawBoxOutline(g_settings.radar_x, g_settings.radar_y, g_settings.radar_width, g_settings.radar_height, g_settings.radar_outline_color);
}

// You
if (g_settings.radar_draw_you)
m_drawing->AddCircleFilled(center, 3.5f, ImColor(255, 255, 255, 200));
m_drawing->AddCircleFilled(center, 3.5f, g_settings.radar_you_color);

// Cross (for both rectangular and circular radars)
if (g_settings.radar_cross)
Expand Down
2 changes: 2 additions & 0 deletions spankerfield/Features/Rainbow Mode/rainbow_mode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ namespace plugins
g_rainbow_manager.add_color(g_settings.crosshair_color);
g_rainbow_manager.add_color(g_settings.radar_outline_color);
g_rainbow_manager.add_color(g_settings.radar_cross_color);
g_rainbow_manager.add_color(g_settings.radar_you_color);
g_rainbow_manager.add_color(g_settings.radar_enemies_color);
g_rainbow_manager.add_color(g_settings.radar_enemy_vehicles_color);
g_rainbow_manager.add_color(g_settings.blacklist_color);
Expand All @@ -91,6 +92,7 @@ namespace plugins
g_rainbow_manager.add_color(g_settings.explosives_color);
g_rainbow_manager.add_color(g_settings.missiles_color);
g_rainbow_manager.add_color(g_settings.spectator_color);
g_rainbow_manager.add_color(g_settings.screenshots_color);
}

void rainbow_mode()
Expand Down
2 changes: 1 addition & 1 deletion spankerfield/Features/Screenshots/screenshots.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace plugins
if (count >= 1)
{
std::string str = text + std::to_string(count);
m_drawing->AddText(12.5f, (float)g_globals.g_height - offset, ImColor(255, 255, 255, 255), 25.f, FL_NONE, str.c_str());
m_drawing->AddText(12.5f, (float)g_globals.g_height - offset, g_settings.screenshots_color, 25.f, FL_NONE, str.c_str());
offset += 22.5f;
}
};
Expand Down
30 changes: 27 additions & 3 deletions spankerfield/Rendering/gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ namespace big
ImGui::Text(xorstr_("Smoothing"));

ImGui::PushItemWidth(300.f);
ImGui::SliderFloat(xorstr_("Minimum time to target (seconds)##Aimbot"), &g_settings.aim_min_time_to_target, 0.f, g_settings.aim_max_time_to_target);
ImGui::SliderFloat(xorstr_("Minimum time to target (seconds)##Aimbot"), &g_settings.aim_min_time_to_target, 0.01f, g_settings.aim_max_time_to_target);
ImGui::SliderFloat(xorstr_("Maximum time to target (seconds)##Aimbot"), &g_settings.aim_max_time_to_target, g_settings.aim_min_time_to_target, 10.f);
ImGui::PopItemWidth();

Expand All @@ -170,6 +170,8 @@ namespace big

static bool enable_editor = false;
ImGui::Checkbox(xorstr_("Enable weapon editor (Risky)"), &enable_editor);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("Highly do not recommend this while playing on servers, it was made for testing purposes only."));

// This is for current weapon only, and made for debugging, you can make all of these as features
if (enable_editor)
Expand Down Expand Up @@ -415,6 +417,7 @@ namespace big

if (ImGui::SliderFloat(xorstr_("Radar size##RDR"), &radar_size, 0.f, (float)g_globals.g_height))
{
// Should've made this one variable, honestly
g_settings.radar_width = radar_size;
g_settings.radar_height = radar_size;
}
Expand Down Expand Up @@ -452,6 +455,10 @@ namespace big
if (g_settings.radar_outline)
color_wrapper(xorstr_("Outline##RDR"), &g_settings.radar_outline_color);

if (g_settings.radar_draw_you)
color_wrapper(xorstr_("Self##RDR"), &g_settings.radar_you_color);

color_wrapper(xorstr_("Background##RDR"), &g_settings.radar_background_color);
color_wrapper(xorstr_("Teammates##RDR"), &g_settings.radar_teammates_color);
color_wrapper(xorstr_("Ememies##RDR"), &g_settings.radar_enemies_color);
color_wrapper(xorstr_("Teammate vehicles##RDR"), &g_settings.radar_teammate_vehicles_color);
Expand Down Expand Up @@ -537,12 +544,16 @@ namespace big
ImGui::Checkbox(xorstr_("Auto-spot"), &g_settings.minimap);
ImGui::SameLine();
ImGui::Checkbox(xorstr_("Unspot when using OBS"), &g_settings.obs_check);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("Big random chance of unspotting enemies when OBS is running."));

ImGui::Checkbox(xorstr_("Auto jet speed"), &g_settings.jet_speed);
ImGui::SameLine();
ImGui::Checkbox(xorstr_("Unlock everything"), &g_settings.unlock_all);
ImGui::SameLine();
ImGui::Checkbox(xorstr_("No hardcore restrictions (PBSS risk)"), &g_settings.no_hc_restrictions);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("The risk is small, although you can get screenshotted with your crosshair visible while playing HC."));

ImGui::Separator();

Expand All @@ -554,6 +565,9 @@ namespace big
ImGui::Separator();

ImGui::Checkbox(xorstr_("Kill sound (FFSS risk)"), &g_settings.kill_sound);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("This triggers a screenshot by FairFight the first time you use it."));

ImGui::PushItemWidth(500.f);
ImGui::InputText(xorstr_("Path to file (.wav)"), g_settings.kill_sound_path, MAX_PATH);
ImGui::PopItemWidth();
Expand Down Expand Up @@ -614,6 +628,10 @@ namespace big
if (ImGui::BeginTabItem(xorstr_("Settings")))
{
ImGui::Checkbox(xorstr_("Draw PB & FF screenshots amount"), &g_settings.screenshots);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("Shows the total amount of times you've been screenshotted by FF or PB."));


ImGui::SameLine();

if (ImGui::Button(xorstr_("Reset counters")))
Expand All @@ -622,6 +640,9 @@ namespace big
g_globals.screenshots_pb = NULL;
}

if (g_settings.screenshots)
color_wrapper(xorstr_("Text##SC"), &g_settings.screenshots_color);

ImGui::Separator();

ImGui::Checkbox(xorstr_("Spoof local name"), &g_settings.spoof_name);
Expand All @@ -648,11 +669,11 @@ namespace big

ImGui::Checkbox(xorstr_("Rainbow mode"), &g_settings.rainbow_mode);
if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("This will make every Visual color have the Rainbow effect."));
ImGui::SetTooltip(xorstr_("This will make every visual color have the Rainbow effect."));

ImGui::Separator();

ImGui::Text(xorstr_("Config"));
ImGui::Text(xorstr_("Configuration"));

if (ImGui::Button(xorstr_("Load")))
g_config.load();
Expand All @@ -667,6 +688,9 @@ namespace big
if (ImGui::Button(xorstr_("Unload")))
g_globals.g_running = false;

if (ImGui::IsItemHovered())
ImGui::SetTooltip(xorstr_("This function is not safe at all, there is a big chance your game might crash."));

ImGui::SameLine();

ImGui::Text(fmt::format(xorstr_("Release rev: {}"), xorstr_(__DATE__)).c_str());
Expand Down
72 changes: 36 additions & 36 deletions spankerfield/Rendering/nicknames.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,40 @@
// Nickname list, add other ones freely
std::vector<std::string> weird_nicknames =
{
"viper_rgoimpact", "lav25_sniper", "abrams_redeploy", "redeploy_jeepstuff",
"mortar_lethal", "rus_aek971KILLA", "ucav_burst", "aek971JEEP", "shotgun7_AEK971",
"lethal_rgoimpact11", "shotgun_REDPLOYX", "GhostBF420", "m1abrams_smaw33",
"aek971_redeployER", "bf4_LETHALz", "phantombow_ucAv17", "mortar_ucAv48",
"KillerM1ABRAMS", "870MCS_FraGGER", "phantom_REDPLOYER", "SPEC OPS_shotgun",
"VIPER27_RUS", "ucav_KILLER88", "bf4_is_LIFE", "abrams_KILLA", "rpg_smaw45",
"870MCS_VATNIK", "GHOSTFRAGGER", "burst_BURSTER", "lethal_FRAG10",
"SPEC OPS_PHANTOM", "marksman_GHOST", "redeploy_VATNIK14", "phantoMGHOST",
"M1ABRAMS_RUSKILLER", "SPEC_VIPER", "mortar_SNIPER1", "RUS_VATNIK007",
"LAV25_M1ABRAMS", "mortar_BURST21", "frag_RUS", "rpg_SPECIALIST",
"RUS_MARKSMAN7", "870MCS_SPEC OPS", "lethal_JEEPSTUFF", "phantom_SMAW",
"RGOIMPACT_abrams", "GHOST_SPECIALIST", "redeploy_RGO12", "aek971_MORTAR",
"ucav_FRAGBOMB", "870MCS_MORTAR", "SPECOPS_MORTAR", "ucav_UCAV",
"M1ABRAMS_BF4", "SMAW_GHOST", "redeploy_BF4ER", "abrams_FRAGGER",
"bf4_JEEPSTUFF", "sniper_VIPER", "frag_870MCS", "SMAW_REDPLOYER",
"VATNIK_PHANTOM", "SPEC OPS_SMAW", "frag_AEK971", "JEEPSTUFF_BURST",
"VATNIK_AEK971", "VIPER_VATNIK", "abrams_JEEP", "M1ABRAMS_VATNIK",
"frag_PHANTOM", "phantom_JEEP", "SMAW_FRAGS", "M1ABRAMS_PHANTOM",
"SMAW_870MCS", "KILLER_RPG", "GHOST_MARKSMAN", "ucav_ABRAMS",
"VIPER_REDPLOY2", "burst_PHANTOM", "USMC_Doomguy", "Doomguy_noob",
"PLmarine", "German_engineer", "noob_killerUA", "Monkey_Marksman",
"US_specialist", "APE_M1ABRAMS", "LAV25_specialist", "phantombow_us",
"DOOMGUYPL", "ua_frag", "rpg_specialist", "Marine_Monkey",
"LMG_SPRAYER420", "DeSeRT_EAGLE_Ace", "pdw_RushERrr", "Carbine_VETERAN7", "PISTOL_KING1337",
"C4_SpecialistX", "DeFuSeKiNG", "CLAYMORE_MASTERmind", "ShOtGuN_Brawler9000", "SNIPER_ELITE_",
"TaNk_Commander", "HeLiCoPtEr_PiLoT", "JeT_FiGhTeR19", "APC_DriVeR", "BoAt_CaPtAiN_",
"AgGrEsSiVe_RuShEr", "Tactical_DefenderX", "ObJeCtIvE_PLAYER_", "SuppOrt_Specialist7",
"StEaLtHy_FlAnKeR", "Camping_Nooblet", "KNIFE_FIGHTER1337", "GRENADE_SPAMMER420", "One_Man_ArMYyy",
"NooB_CRUSHER9000", "PrO_GaMeR69", "KeYbOaRd_WaRrIoR", "ClIcKeR_HeRo", "PoTaTo_AiM_",
"WaLlHaCk_SuSpEcT", "LaG_LoRd", "DeSyNc_DeMoN", "MiCrOtRaNsAcTiOn_MaStEr", "GiT_GuD_ScRuB1337",
"JoHn_WiCk", "RaMbO_ClOnE", "TeRmInAtOr_X", "IrOn_MaN_WaNnAbE", "CaPtAiN_AmErIcA",
"DuMbLeDoRe_SpElLs", "GaNdAlF_ThE_GrEy",
"M4A1_MaStEr", "RPG_Avenger", "RUSH_B_NO_STOP", "SMOKEGUN_Ninja", "CQB_Destroyer",
"DEFUSE_Squad", "MEDIC_Here", "REvive_Me_PLS", "No_Mic_No_Skills", "Clutch_KING_",
"Wallbang_WIZARD", "Spray_Control", "Headshot_Machine", "Ninja_Defuse", "Spawn_Peek_Master",
"One_Tap_Wonder", "Tactical_Reload", "camper_KILLER", "Grenade_God", "Vehicle_Destroyer"
xorstr_("viper_rgoimpact"), xorstr_("lav25_sniper"), xorstr_("abrams_redeploy"), xorstr_("redeploy_jeepstuff"),
xorstr_("mortar_lethal"), xorstr_("rus_aek971KILLA"), xorstr_("ucav_burst"), xorstr_("aek971JEEP"), xorstr_("shotgun7_AEK971"),
xorstr_("lethal_rgoimpact11"), xorstr_("shotgun_REDPLOYX"), xorstr_("GhostBF420"), xorstr_("m1abrams_smaw33"),
xorstr_("aek971_redeployER"), xorstr_("bf4_LETHALz"), xorstr_("phantombow_ucAv17"), xorstr_("mortar_ucAv48"),
xorstr_("KillerM1ABRAMS"), xorstr_("870MCS_FraGGER"), xorstr_("phantom_REDPLOYER"), xorstr_("SPEC OPS_shotgun"),
xorstr_("VIPER27_RUS"), xorstr_("ucav_KILLER88"), xorstr_("bf4_is_LIFE"), xorstr_("abrams_KILLA"), xorstr_("rpg_smaw45"),
xorstr_("870MCS_VATNIK"), xorstr_("GHOSTFRAGGER"), xorstr_("burst_BURSTER"), xorstr_("lethal_FRAG10"),
xorstr_("SPEC OPS_PHANTOM"), xorstr_("marksman_GHOST"), xorstr_("redeploy_VATNIK14"), xorstr_("phantoMGHOST"),
xorstr_("M1ABRAMS_RUSKILLER"), xorstr_("SPEC_VIPER"), xorstr_("mortar_SNIPER1"), xorstr_("RUS_VATNIK007"),
xorstr_("LAV25_M1ABRAMS"), xorstr_("mortar_BURST21"), xorstr_("frag_RUS"), xorstr_("rpg_SPECIALIST"),
xorstr_("RUS_MARKSMAN7"), xorstr_("870MCS_SPEC OPS"), xorstr_("lethal_JEEPSTUFF"), xorstr_("phantom_SMAW"),
xorstr_("RGOIMPACT_abrams"), xorstr_("GHOST_SPECIALIST"), xorstr_("redeploy_RGO12"), xorstr_("aek971_MORTAR"),
xorstr_("ucav_FRAGBOMB"), xorstr_("870MCS_MORTAR"), xorstr_("SPECOPS_MORTAR"), xorstr_("ucav_UCAV"),
xorstr_("M1ABRAMS_BF4"), xorstr_("SMAW_GHOST"), xorstr_("redeploy_BF4ER"), xorstr_("abrams_FRAGGER"),
xorstr_("bf4_JEEPSTUFF"), xorstr_("sniper_VIPER"), xorstr_("frag_870MCS"), xorstr_("SMAW_REDPLOYER"),
xorstr_("VATNIK_PHANTOM"), xorstr_("SPEC OPS_SMAW"), xorstr_("frag_AEK971"), xorstr_("JEEPSTUFF_BURST"),
xorstr_("VATNIK_AEK971"), xorstr_("VIPER_VATNIK"), xorstr_("abrams_JEEP"), xorstr_("M1ABRAMS_VATNIK"),
xorstr_("frag_PHANTOM"), xorstr_("phantom_JEEP"), xorstr_("SMAW_FRAGS"), xorstr_("M1ABRAMS_PHANTOM"),
xorstr_("SMAW_870MCS"), xorstr_("KILLER_RPG"), xorstr_("GHOST_MARKSMAN"), xorstr_("ucav_ABRAMS"),
xorstr_("VIPER_REDPLOY2"), xorstr_("burst_PHANTOM"), xorstr_("USMC_Doomguy"), xorstr_("Doomguy_noob"),
xorstr_("PLmarine"), xorstr_("German_engineer"), xorstr_("noob_killerUA"), xorstr_("Monkey_Marksman"),
xorstr_("US_specialist"), xorstr_("APE_M1ABRAMS"), xorstr_("LAV25_specialist"), xorstr_("phantombow_us"),
xorstr_("DOOMGUYPL"), xorstr_("ua_frag"), xorstr_("rpg_specialist"), xorstr_("Marine_Monkey"),
xorstr_("LMG_SPRAYER420"), xorstr_("DeSeRT_EAGLE_Ace"), xorstr_("pdw_RushERrr"), xorstr_("Carbine_VETERAN7"), xorstr_("PISTOL_KING1337"),
xorstr_("C4_SpecialistX"), xorstr_("DeFuSeKiNG"), xorstr_("CLAYMORE_MASTERmind"), xorstr_("ShOtGuN_Brawler9000"), xorstr_("SNIPER_ELITE_"),
xorstr_("TaNk_Commander"), xorstr_("HeLiCoPtEr_PiLoT"), xorstr_("JeT_FiGhTeR19"), xorstr_("APC_DriVeR"), xorstr_("BoAt_CaPtAiN_"),
xorstr_("AgGrEsSiVe_RuShEr"), xorstr_("Tactical_DefenderX"), xorstr_("ObJeCtIvE_PLAYER_"), xorstr_("SuppOrt_Specialist7"),
xorstr_("StEaLtHy_FlAnKeR"), xorstr_("Camping_Nooblet"), xorstr_("KNIFE_FIGHTER1337"), xorstr_("GRENADE_SPAMMER420"), xorstr_("One_Man_ArMYyy"),
xorstr_("NooB_CRUSHER9000"), xorstr_("PrO_GaMeR69"), xorstr_("KeYbOaRd_WaRrIoR"), xorstr_("ClIcKeR_HeRo"), xorstr_("PoTaTo_AiM_"),
xorstr_("WaLlHaCk_SuSpEcT"), xorstr_("LaG_LoRd"), xorstr_("DeSyNc_DeMoN"), xorstr_("MiCrOtRaNsAcTiOn_MaStEr"), xorstr_("GiT_GuD_ScRuB1337"),
xorstr_("JoHn_WiCk"), xorstr_("RaMbO_ClOnE"), xorstr_("TeRmInAtOr_X"), xorstr_("IrOn_MaN_WaNnAbE"), xorstr_("CaPtAiN_AmErIcA"),
xorstr_("DuMbLeDoRe_SpElLs"), xorstr_("GaNdAlF_ThE_GrEy"),
xorstr_("M4A1_MaStEr"), xorstr_("RPG_Avenger"), xorstr_("RUSH_B_NO_STOP"), xorstr_("SMOKEGUN_Ninja"), xorstr_("CQB_Destroyer"),
xorstr_("DEFUSE_Squad"), xorstr_("MEDIC_Here"), xorstr_("REvive_Me_PLS"), xorstr_("No_Mic_No_Skills"), xorstr_("Clutch_KING_"),
xorstr_("Wallbang_WIZARD"), xorstr_("Spray_Control"), xorstr_("Headshot_Machine"), xorstr_("Ninja_Defuse"), xorstr_("Spawn_Peek_Master"),
xorstr_("One_Tap_Wonder"), xorstr_("Tactical_Reload"), xorstr_("camper_KILLER"), xorstr_("Grenade_God"), xorstr_("Vehicle_Destroyer")
};
5 changes: 5 additions & 0 deletions spankerfield/Utilities/math.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@

namespace big
{
float radians_to_degrees(float radians)
{
return radians * (180.0f / PI);
}

float degrees_to_radians(float degrees)
{
return degrees * ((float)(PI) / 180.0f);
Expand Down
1 change: 1 addition & 0 deletions spankerfield/Utilities/math.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

namespace big
{
float radians_to_degrees(float radians);
float degrees_to_radians(float degrees);
float get_fov_radius(float fov_degrees, float screen_width, float screen_height);
void normalize_angle(Vector2& angle);
Expand Down
Loading

0 comments on commit 3f628d4

Please sign in to comment.