Giter VIP home page Giter VIP logo

nullhooks's Introduction

NullHooks

CS:GO cheat I made based on designer's base, and many other cheats I found. Mainly made for learning.

Table of contents

  1. Description
  2. Notes
  3. Features
  4. Installing
  5. Todo
  6. Screenshots

Description

Edgy name but not as cool as PissHooks™ (RIP).

As I said I made this project to learn about game hacking and cpp in general, so expect some bad practises and errors, but feel free to improve them!

See contributing.md for contributing to the project and references.md for a list of cheats that helped me learn while making it.

Notes

⚠️ This project is currently inactive.
Working on this project has been a lot of fun, and I learned a lot in the process. Thank you to everyone who helped me and supported me.
My knowledge and my code style has improved notably since I started with this project, so if you are actually interested in some good code, I recommend you check out my osdev project: fs-os (and the wiki too!).

Note
Because @hBuffer dissapeared, I am transfering the repo from 8dcc/NullHooks to NullHooks/NullHooks. Make sure you update your remotes with git remote set-url origin https://github.com/NullHooks/NullHooks.

Note
If you are some kid from a third world country trying to sell this, please just don't, everyone knows how retarded you are.

Features

Aim
  • Triggerbot
    • With custom delay
  • Aimbot
    • Snappy
    • Silent
  • Autowall
    • Only visible
    • Autowall (Min damage)
    • Ignore walls
  • Autofire
    • On key
    • Auto if key is set to 'None'
  • Aimbot fov
    • Fov circle
  • Bodyaim if lethal. Will ignore enabled hitboxes if another one is lethal.
  • Priorize lethal targets. Will ignore closest target if there is a killable target inside the aimbot's fov.
  • Aimbot smoothness (Only on snappy aimbot)
  • Aimbot and triggerbot hitboxes
  • Only if scoped
  • Autorevolver
  • Aimpunch only on rifles (Looks more legit)
Antiaim
  • Antiaim with custom pitch and jaw
  • Spinbot with custom speed
Visuals

Player ESP

  • Enable/disable team ESP
  • Box ESP
  • Player skeleton
  • Name ESP
  • Health ESP
  • Line
  • Player info (flashed, weapons, etc.)
    • Current weapon
    • A - Armor
    • F - Is flashed
    • S - Is scoped
    • X - Can't shoot
    • D - Is defusing (soft)
    • D - Has defuser (hard)
    • B - Has bomb

Glow

  • Player glow
  • C4 glow
  • Dropped weapons and grenades glow
  • Chicken glow

Chams

  • Player chams
  • Hand chams
  • Sleeve chams
  • Weapon chams (viewmodel)
  • Change individual materials for the chams

Skinchanger

The skinchanger loads a json file called skins.json, inside DOCUMENTS/NullHooks/, DOCUMENTS being your windows documents folder (will be created if it doesn't exist). The json structure is very simple, having the weapon buy index enum name as a string (weapon name list), with the weapon properties as strings inside:

Setting name Description
"item_definition_index" Can have a weapon buy index as int or as enum name (Same names as weapons, like WEAPON_KNIFE_M9_BAYONET for example).
"paint_kit" The skin id as integer. You can find some skin ids here, here or here.
"seed" The skin seed as integer.
"stattrack" The stattrack kill number as int. -1 means disabled. ⚠️ Currently stattrack is not working properly becayse of an error. See todo list.
"quality" The int or enum string of the quality. List can be found here.
"wear" The float corresponding to the weapon wear. From 0.001f to 1.f, lower means better.
"custom_name" String containing the custom name for the weapon.

An example of a skin config file can be found in example-configs/skins.json.

The skin chager currently is able to change:

  • Weapon skins
  • Knife skins and models
  • Gloves

Model changer

There are currently 2 model changer methods. find_mdl and precached models. sv_pure bypass is integrated in the cheat.

The model changer is currently able to change:

  • Weapons
    • Normal weapons
    • Knifes
  • Players
    • Localplayer
    • Allies
    • Enemies
  • Arms

⚠️ All the models need to be downloaded manually.

  • When using find_mdl, it will hook to the function, and when the game tries to load a model, we will replace it with our own. find_mdl model paths are hardcoded in models.hpp. In that file explains where to put the models and all that. If an item is NULL it will be ignored.
  • Precached models are a way better alternative, because with my json config system you can edit and load the file any time you want during a match. For adding models to a weapon, simply add to the skin json the following options:
    • "viewmodel": The viewmodel path from the csgo directory. The viewmodel files usually start with v_.
      Example: "models/weapons/eminem/bananabit/v_bananabit.mdl"
    • "worldmodel": The worldmodel path from the csgo directory. The worldmodel files usually start with w_.
      Example: "models/weapons/eminem/bananabit/w_bananabit.mdl"

A good example of a json file for replacing the knives usin precached models would be like this:

Example skins.json file and explanation
{
    	"LOCAL_PLAYER": "models/player/custom_player/kuristaja/hitler/hitler.mdl",
	"PLAYER_ALLY": "models/player/custom_player/kolka/master_chief/master_chief.mdl",
	"PLAYER_ENEMY": "models/player/custom_player/nier_2b/nier_2b.mdl",
	"ARMS": "models/player/custom_player/nier_2b/nier_2b_arms.mdl",

	"WEAPON_KNIFE": {
		"item_definition_index": "WEAPON_KNIFE_KARAMBIT"
	},
	"WEAPON_KNIFE_T": {
		"item_definition_index": "WEAPON_KNIFE_WIDOWMAKER"
	},
	"WEAPON_KNIFE_WIDOWMAKER": {
		"paint_kit": 416,
		"seed": 420,
		"quality": "SKIN_QUALITY_VINTAGE"
	},
	"WEAPON_BAYONET": {
		"paint_kit": 44,
		"seed": 555,
		"quality": "SKIN_QUALITY_CUSTOMIZED",
		"viewmodel": "models/weapons/caleon1/screwdriver/v_knife_screwdriver.mdl",
		"worldmodel": "models/weapons/caleon1/screwdriver/w_knife_screwdriver.mdl"
	},
	"WEAPON_KNIFE_KARAMBIT": {
		"paint_kit": 416,
		"seed": 69,
		"quality": "SKIN_QUALITY_GENUINE",
		"custom_name": "Banana knife",
		"viewmodel": "models/weapons/eminem/bananabit/v_bananabit.mdl",
		"worldmodel": "models/weapons/eminem/bananabit/w_bananabit.mdl"
	}
}

The first 3 lines are for changing special models. In this case ally players, enemy players and localplayer. See special models here: Link.

Changes the default ct knife index to the karambit one, automatically changing the models and applaying the skins of the karambit. Since there is a custom viewmodel and worlmodel, the model will change but the rarity, skin name, kill icon, etc. will be the same.

You can add viewmodels to weapons that you are not currently using like the bayonet in this case. Right now we are replacing the terrorist knife with a Vintage Talon Knife Zaphire, but if we wanted to change that, we could just edit the file, replace the "item_definition_index" of the terrorist knife to the WEAPON_BAYONET, load the skins config from the config tab and press the full update button.

Misc

  • C4 timer and bar
  • Dropped weapons and grenades name
  • Dropped weapons and grenades icon
  • Nade projectile ESP
  • Nade projectile duration
  • Grenade prediction
  • No flash
  • No scope
  • Wireframe smoke (Open an issue if you want NoSmoke)
  • Worldcolor
  • Custom crosshair
  • Recoil crosshair
  • Bullet tracers (:warning: Broken in online matches. Check todo)
  • Fov changer
  • Thirdperson
  • Motion blur
Movement
  • Infinite duck (:warning: Untrusted)
  • BunnyHop
  • Autostrafe
    • Legit
    • Forward rage (Old one)
    • Multidirectional rage
  • Edgejump (On key)
  • Edgebug assist (Needs improvement)
  • Jumpbug (On key)
  • Slow walk (On key)
  • Speed graph (With color, height and position options)
Misc
  • Backtrack
  • Rank revealer
  • Spectator list
  • Stats watermark (username, cheat name, fps, ping...)
  • Hide cheat on screenshots
  • Hotkey system
    • Delete sets the hotkey to None, meaning that the hotkey will apear always as held
    • Esc will cancel the current hotkey selection, restoring it to its original state
Config system

Config system for skins and settings (independent for now). The skin configs should be placed under the NullHooks folder which is created in your documents folder, and your setting configs should be placed under the config directory. Example:

DOCUMENTS
    └─ NullHooks
        ├─ config
        │   ├─ my_config_1.json
        │   └─ my_name_123.json
        └─ skins.json

For more information and examples check config-examples.

Installing

Compiling from source (Recommended)

I recommend using Visual Studio 2022.

  1. Install Microsoft Visual Studio 2022 from this link
  2. Clone or download the project to your computer
  3. Open the file src/NullHooks.sln with Visual Studio 2022
  4. If an alert pops up, click Ok or Update, if it doesn't make sure the project is updated by clicking Project > Retarget solution in the window bar
  5. Make sure you are compiling the project in Release | x86 in the top bar
  6. Click Build > Build solution in the window bar (You can also press Ctrl+Shift+B)
  7. The final .dll file path should be in the output window of Visual Studio (Usually src/output/release/NullHooks.dll)
  8. Inject using your favourite injector

Note: If you have problems, make sure you follow the steps above and verify the integrity of your game files.

Downloading the .dll from releases

This method is not recommended as the cheat can be a bit outdated and you might encounter some problems depending on your computer.

  1. Go to the latest release page
  2. Download the file NullHooks.dll under "Assets"
  3. Inject using your favourite injector

Todo

Completed items
  • Clean the code
  • Choose team not working (click)
  • Move NullHooks-Lite to NullHooks branches
  • Change spectator list style
  • Add recoil crosshair
  • Make spectator list movable (same as menu)
  • Add active nade ESP
    • Fix smoke class id
  • Add nade prediction
  • Add player skeleton ESP
  • Bring menu tabs back (rip)
  • Make spectator list width dynamic depending on name lengths
  • Add line esp
  • Add glows
    • Add bomb glow
    • Add player glow
    • Add chicken glow
    • Add weapon glow
  • Add bomb timer
  • Add weapon info about player
  • Fix entity names showing outside the map if they dont exist (See entity_esp.cpp)
  • Remove glow on nade projectiles
  • Remove esp on spectated player
  • Nade projectiles outside screen
  • Add option for disabling watermark and stats
  • Make gui checkboxes enable by clicking the name of the feature
  • Add chams
  • Add section columns
  • Add hand chams
  • Add material selector to chams
  • Support wchar strings in renderer (Russian characers for example, see comment in renderer) (See this)
    • Spectator list repeating name again (const's fault?)
  • Fix chams on custom playermodels
  • Fix cursor position being relative to screen instead of game window
  • Add color picker (example)
    • Add popup system that renders after the menu so other elements don't render over the window
    • Fix gui::id_changer() decrease button. See issue
    • Add great global input system
  • Fix both spectator list and menu dragging when overlapped (See bottom of menu.cpp)
  • Add combobox (Will add multi-combobox when needed)
    • Make selected item highlighted in the popup
  • Replace noflash toggle with slider for opacity
  • Add speedgraph
  • Fix combobox crash when holding outside area
  • Add second color picker
    • Add color picker for friendly player chams
  • Fix chams render distance (link) (#18)
  • Add custom models
    • Check if model path exists (link)
  • Add custom hotkeys to framework
  • Add motion blur (See #25)
  • Add multicombobox
    • For selecting what parts of the speedgraph we should draw
  • Reset bomb timer on new round (sometimes?)
  • Add alt+tab checks to global input
  • Add skinchanger
    • Config based
  • Add config and all that (json or whatever)
    • Skins
    • Global config
  • Make config system more "nested"
  • Add can't shoot to player ESP
  • Add textbox to framework for creating new config files from menu
  • Add antiaim
  • Add killicons to knife skinchanger
  • Replace player_info esp with multicombobox
  • Replace findmdl model changer with precached models (link)
  • Add "defusing" to bomb timer
  • Add worldcolor
  • Entity glow won't turn off on weapons (will turn off if another glow is on)
  • Skinchanger fixes
    • Fix talon knife inspect animation
    • Get localplayer steam id to fix weapon stattrack
  • Add auto revolver

Pending items
  • Add aim stuff
    • Triggerbot
      • Add delay slider
    • Aimbot
      • Silent
      • Snappy
    • Aimbot fov circle (or square)
    • Custom aimbot key (autofire)
    • Add bodyaim if lethal
    • Make aimbot and triggerbot also aim for backtrack. (Get hitbox positions from matrix)
    • Fix aimbot shooting 1 tick behind (Try shooting moving targets with sv_showimpacts 1, it only hits locally)
  • Add movement stuff
    • EdgeJump
    • EdgeBug (Improve: link)
    • JumpBug
    • Slowwalk
  • Add event listeners (hook FireEventIntern)
    • Add bullet tracers
      • Fix bullet_impact event not working in online matches (without using event listener)
    • Add decoy timer
  • Arm models are only changed when having a custom playermodel. replace_arms_model() is always called.
  • Add no-recoil
  • Add scaleform ui
  • Add custom radar (See SEOwned for cool style)
  • Add player list
    • Ability to set certain players to rage and ignore aimbot smoothing, etc.
    • Ability to set certain players to friendly and ignore aimbot, etc.
  • Port to linux

Screenshots

Some screenshots might be a bit outdated...

screenshot-0 screenshot-1

Old screenshots

screenshot-2 screenshot-3 screenshot-4 screenshot-5

nullhooks's People

Contributors

8dcc avatar churka1339 avatar floatiest avatar kaimalek avatar patoke avatar slim420p avatar wolfycsgo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nullhooks's Issues

Backtrack - Valid Tick (Changes +Explanation)

if (records[i].size() && (records[i].front().simulation_time == entity->simulation_time())) continue;

You're first checking for if you have records for the current entity.
Then the newest record created with the current entity simulation time.

Remember that the update function is getting called constantly.
You don't want to have 9999 records of a player from the exact same tick.
Which would still be within your "backtrack range" meaning they won't get deleted.

Some people only created records when the player moved.
But that means you couldn't backtrack lby flicks from old hvh fake angles.
Or if the player is jittering but standing still.

So you create a new record every time the enemy's sim time updates.


Remove float maxtime from: (unless above is changed)

bool backtrack::valid_tick(float simtime, float maxtime)

As you are not using it at all. With all valid_tick usages having 0.2f as the parameter.

// The following lines determine if the tick is valid or not. We erase all the invalid ones
auto invalid = std::find_if(std::cbegin(records[i]), std::cend(records[i]), [](const player_record& rec) {
   return !valid_tick(rec.simulation_time, 0.2f);
if (!record || !valid_tick(record->simulation_time, 0.2f)) continue;

It would be fine if you were planning to use it to clamp your records to your slider, but you already have:

while (records[i].size() > 3 && records[i].size() > static_cast<size_t>(TIME_TO_TICKS(variables::misc::backtrack_ticks / 1000.f)))
   records[i].pop_back();

You really should just have your "valid_tick" be handling it. (Maybe even use that maxtime you put)


Remove

float time_limit = maxtime;
std::clamp(time_limit, 0.001f, 0.2f);

Clamping this is dumb, using any fake latency will delete the record past the 200ms area.
Meaning if you use fake latency, you will not be able to draw or backtrack past the 200ms default limit.
Make it more like:

// if your fake latency slider is gonna be from 0 - 200
float time_limit = (your ping spike setting) ? (0.2f + fake latency) : 0.2f

// or if your fake latency slider is (200 min -> 400 max)
float time_limit = (your ping spike setting) ?  fake latency : 0.2f

I'd personally just delete the clamp, as you also don't even use anything but 0.2f for the parameter


Change:

float delta_time = correct - (TICKS_TO_TIME(csgo::local_player->get_tick_base()) - simtime);

To:

float delta_time = correct - (interfaces::globals->cur_time - simtime);

I'm assuming you're using tick base due to: https://www.unknowncheats.me/forum/2137042-post9.html ?
a8pure is wrong here:

source-sdk-2013 uses tickcount, and hl2sdk-csgo uses curtime:

// source-sdk-2013
float deltaTime =  correct - ( gpGlobals->tickcount - flTargetTime );

//  hl2sdk-csgo
float deltaTime =  correct - ( gpGlobals->curtime - flTargetTime );

Finished should be:

bool backtrack::valid_tick(float simtime) noexcept {
	auto nci = interfaces::engine->get_net_channel_info();
	if (!nci) return false;

	// do these computations in float time, not ticks, to avoid big roundoff error accumulations in the math
	// true latency + network latency + interpolation latency (lerp time)
	float correct = nci->get_latency(0) + nci->get_latency(1) + get_lerp_time();

	// check to see if our correction is within 0 - sv_maxunlag
	std::clamp(correct, 0.f, interfaces::console->get_convar("sv_maxunlag")->get_float());

        // calc difference between tick sent by player and our latency based tick
	float delta_time = correct - (interfaces::globals->cur_time - simtime);

       // don't include these last 3 comments
       // add support for fake latency eventually (which should be dynamic to 0.2f -> 0.4f)
       // or if your are using maxtime for clamping record count, then use that instead of 0.2f
	return fabsf(delta_time) <= 0.2f;
}

Weapon font fix

interfaces::surface->set_font_glyph(render::fonts::weapon_icon_font, "Counter-Strike", 30, 300, 0, 0, 0x210);

[misc] Porting to linux

I made the cheat for windows because it's what I mainly use to play, and because it is the platform with more game-hacking resources, but it would be incredibly epic to port the cheat to linux. The problem is that I don't think I know enough/have enough time for doing it.

I open this issue to keep track of everything related to porting the cheat and in case anyone wants to contribute and help me/PR.

[fix] Crash fix (i guess)

file: csgo.hpp
line 51
replace sig_fire_event signature with "55 8B EC 83 E4 F8 83 EC 0C 8B C1"
file: netvars.cpp
line 73
replace uintptr_t with "uint32_t"
its can be wrong but working for me

[bug] Decrease button (id_changer) working only partially

Note: This issue is about the experimental-color branch

I am making an issue because I spent a lot of time trying to figure this out, and I don't want to get stuck trying to fix something like this while there are plenty of features I would like to add.

The problem is in the gui framework, in the gui::id_changer() to be precise. When rendering the 'increase' and 'decrease' buttons, the function checks if the cursor is in the button area to make the color a bit darker (hover effect), and then checks if the click is pressed to activate the button action (increase, decrease, etc.). The problem is that since I implemented the color picker, the 'decrease' button only works on the side that would be inside of the popup (see video bellow). The weird part is that it works on the first button (can't have a popup on top) and in the 'increase button'.

As I said this those changes were made in the experimental-color branch, so in the main branch it works fine. I checked the diffs between the branches but I cannot find the reason why this is happening. If you have any idea on what could be causing this, please feel free to write a comment.

gh-issue.mp4

[feature] Lua scripts

A amazing feature that you should add with time, should be Lua/ Lua Scripts. Like in gamesense, otc v3, or nansosense

[bug] Models dissapearing sometimes

Bug description

Sometimes the models do not render. Probably related to the chams occlusion change.

Steps to reproduce

For example in nuke, close to A. The player was kinda hidden but I don't know if that's related or not (see screenshot). The cheat options where the default ones (no chams activated, etc.)

Screenshot

image
Note: "Disable cheat on screenshot" was activated, that's why there is no watermark, etc.

[feature] AntiAim keybinds

Money Revealer
Rank Revealer
Standalone RCS (w/o aimbot)

Having the ability to completely UNBIND stuff (unless thats already possible but i wouldn't know how.)

Perhaps a standalone skinconfig configuratorinator-3000

keybinds for anti aim to invert position (like to turn a different direction without needing to reposition the slider)

[misc] motion blur amd fix

hey, if u want to fix the amd thing u only gotta detect if the user is an amd GPU and then apply this command mat_resolveFullFrameDepth 0

Ghetto Inaccuracy & autoscope

bad pasta for the pPasta hake $
(niceme.me)

if (variables::aim::autoscope)
{
    if (!csgo::local_player->is_scoped() && active_weapon->is_sniper())
    {
        cmd->buttons |= in_attack2;
    }
}

float inaccuracy = variables::aim::inaccuracy / 1000.f >= active_weapon->inaccuracy();
if (variables::aim::autofire && input::gobal_input.IsHeld(variables::aim::aimbot_key.key) && (inaccuracy >= active_weapon->inaccuracy()))

[bug] Tracers not working in multiplayer

Bug description

Bullet tracers only work when playing with bots. This is because the way the cheat gets the necessary game event (bullet_impact) is through FireEventIntern. This method is better in my opinion but has these kind of problems.

I would like to avoid using an event listener.

Steps to reproduce

  1. Join a bot match and try the tracers (option is in the visuals tab, under the misc group box)
  2. Join a multiplayer match and try the tracers. The event is not received.

Possible fix

There is a thread on UC talking about this topic. Find it here.

We could use an event listener, but it's the last option.

Using autofire without keybind

The only on press for the aimbot feature is good but I don't want to press that specific button every time I want to use aimbot or auto-fire. You cant use normal silent nor normal aimbot cause of that feature.

Backtrack suggestion

In my opinion the cheat lack of backtrack it would be really nice if you would add backtrack.

[feature] No recoil

Dudeee i just thought of this rn. a cool feature would be "No Recoil". aka a script. or whatever.

If you want me to keep giving you guys ideas i can.

[bug] Crashes while loading a new game.

Crashes while loading a new game. after injecting the hack in lobby.

followed All instructions.

while debugging i found these errors

image
image

crashes while loading any new mode . after injection

Injectors Used.
CouInjector, Roids
Compiled from source (both debug and release)

check image for better understanding

Saving new config

how do i save config its lit on red and when i click on it, it doesnt save

Offset location

I finished my own dumper. Less goooo

Where da offsets at doe...

[misc] Cheat is leaking something which makes it autodetected as a cheat while joining community servers

Like the title says you get insta banned from servers with the AntiDLL plugin which is most likely caused by event listeners as you will be able to see here

And doing something like this should fix it:

for (int i=0; i < m_GameEvents.Count(); i++) // what we want to listen to 
{
    CGameEventDescriptor &descriptor = m_GameEvents[i];
    if ( descriptor.local )
    {
        continue;  // event is not networked
    }
} 

Menu framework suggestions

i like this source a lot, the framework seems ok but i think you should use imgui it would be better (my opinion), but if you want to use your framework then can you please put priority on keybind and listbox? :)

[bug] Aimbot crash

Bug description

Using aimbot crash client randomly

Steps to reproduce

Using aimbot in casual match after some round
Using commit 4f23261

[feature] Aspect Ratio, easy c+p

Sry for .txt
saw #82

////////////////Hooks.hpp

namespace aspect_ratio {
    using fn = void(__fastcall*)(void*, void*, int32_t, int32_t);
    inline fn original;
    float __fastcall hook(void* ecx, void* edx, int32_t width, int32_t height);
}

////////////////Hooks.cpp

const auto aspect_ratio_target = reinterpret_cast<void*>(get_virtual(interfaces::engine, 101));
MAKE_HOOK(aspect_ratio_target, aspect_ratio::hook, aspect_ratio::original, "aspect_ratio");

////////////////aspect_ratio.cpp

float __fastcall hooks::aspect_ratio::hook(void* ecx, void* edx, int32_t width, int32_t height) {
    //	if (variables::misc::aspect_ratio == 0) original(ecx, edx, width, height);
    //else return ((float)variables::misc::aspect_ratio / 10);

    if (variables::misc::aspect_ratio)
        return ((float)variables::misc::aspect_ratio / 10);

    original(ecx, edx, width, height);
}

/////////////////save.cpp

save::parse_float(misc,			allocator,			variables::misc::aspect_ratio,			"aspect_ratio_slider"); 

/////////////////load.cpp

load::parse_float(doc,			variables::misc::aspect_ratio,				"misc",		"aspect_ratio_slider");

/////////////////variables.hpp

inline float aspect_ratio { 0 };

////////////////menu.cpp

gui::add_slider("Aspect ratio",			variables::misc::aspect_ratio, 0.f, 10.f);

[feature] Anti-votekick

THIS WILL BE THE BEST FEATURE EVER. in skeet/ nanosense paste or gamesense. They have a Anti - Kick / Anti - ban feature which what it does is "Force Vote Failed/ F2".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.