Hi guys, I will share a simple method to do Bunny Hop externally for CSGO
The address and offsets are updated !

memw.h

Code:
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>

class CHackProcess
{
public:
 
	PROCESSENTRY32 __gameProcess;
	HANDLE __HandleProcess;
	HWND __HWNDCss; 
	DWORD __dwordClient;
	DWORD __dwordEngine;
	DWORD __dwordOverlay;
	DWORD __dwordVGui;
	DWORD __dwordLibCef;
	DWORD __dwordSteam; 
	DWORD FindProcessName(const char *__ProcessName, PROCESSENTRY32 *pEntry)
	{	 
		PROCESSENTRY32 __ProcessEntry;
		__ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
		HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
		if (hSnapshot == INVALID_HANDLE_VALUE) return 0;        if (!Process32First(hSnapshot, &__ProcessEntry))
		{
			CloseHandle(hSnapshot);
			return 0;
		}
		do{if (!_strcmpi(__ProcessEntry.szExeFile, __ProcessName))
		{
			memcpy((void *)pEntry, (void *)&__ProcessEntry, sizeof(PROCESSENTRY32));
			CloseHandle(hSnapshot);
			return __ProcessEntry.th32ProcessID;
		}} while (Process32Next(hSnapshot, &__ProcessEntry));
		CloseHandle(hSnapshot);
        return 0;
}
 
 
DWORD getThreadByProcess(DWORD __DwordProcess)
{	 
		THREADENTRY32 __ThreadEntry;
		__ThreadEntry.dwSize = sizeof(THREADENTRY32);
		HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
		if (hSnapshot == INVALID_HANDLE_VALUE) return 0;
 
		if (!Thread32First(hSnapshot, &__ThreadEntry)) {CloseHandle(hSnapshot); return 0; }
 
        do {if (__ThreadEntry.th32OwnerProcessID == __DwordProcess)
		{
			CloseHandle(hSnapshot);
			return __ThreadEntry.th32ThreadID;
		}} while (Thread32Next(hSnapshot, &__ThreadEntry)); 
		CloseHandle(hSnapshot);       
		return 0;
}
 
DWORD GetModuleNamePointer(LPSTR LPSTRModuleName, DWORD __DwordProcessId)
{ 
		MODULEENTRY32 lpModuleEntry = {0};
		HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, __DwordProcessId);
		if(!hSnapShot)
			return NULL;  
		lpModuleEntry.dwSize = sizeof(lpModuleEntry);
		BOOL __RunModule = Module32First( hSnapShot, &lpModuleEntry );
		while(__RunModule)
		{
			if(!strcmp(lpModuleEntry.szModule, LPSTRModuleName ) )
			{CloseHandle( hSnapShot );
			return (DWORD)lpModuleEntry.modBaseAddr;
			}
			__RunModule = Module32Next( hSnapShot, &lpModuleEntry );
		}
		CloseHandle( hSnapShot );
		return NULL;
}
 
 
void runSetDebugPrivs() 
{
	HANDLE __HandleProcess=GetCurrentProcess(), __HandleToken;
	TOKEN_PRIVILEGES priv;
	LUID __LUID; 
	OpenProcessToken(__HandleProcess, TOKEN_ADJUST_PRIVILEGES, &__HandleToken);
	LookupPrivilegeValue(0, "seDebugPrivilege", &__LUID);
    priv.PrivilegeCount = 1;
	priv.Privileges[0].Luid = __LUID;
	priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(__HandleToken, false, &priv, 0, 0, 0);
	CloseHandle(__HandleToken);
	CloseHandle(__HandleProcess);
}
};
main.cpp

Code:
#include "memw.h"

using namespace std;

CHackProcess fProcess; 

// Address CSGO

#define LocalPlayer          0x00A31504
#define dwForceJump          0x04EE1EF0

// OffSets

#define m_Flags              0x100

class cLocalPlayer
{
public:

	int Local, pFlags;

	void Read(HANDLE hProc, DWORD dwClient)
	{
		ReadProcessMemory(hProc, (LPVOID)(dwClient + LocalPlayer), &Local, sizeof(DWORD), 0);
		ReadProcessMemory(hProc, (LPVOID)(Local + m_Flags), &pFlags, sizeof(int), 0);
	}
};

int main()
{
	int valueon = 5;
	int valueoff = 4;

	HANDLE hProc;

	HWND hWND = FindWindow(0,"Counter-Strike: Global Offensive");

	if(hWND == 0)
	{
		cout << "Cannot found the window !\n\n" << endl;
	} else {
		cout << "We found the window !";

		DWORD pId;
		GetWindowThreadProcessId(hWND, &pId);
		hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pId);

		DWORD dwClient = fProcess.GetModuleNamePointer("client.dll", pId);

		cLocalPlayer *pLocal = new cLocalPlayer();
		pLocal->Read(hProc, dwClient);

		if(!hProc)
		{
			cout << "\n\nFail to get the process.";
		} else {

			cout << "\n\nWe got the process, now we will read and modify.\n\n";

			for(;;)
			{
				if(GetAsyncKeyState(0x20) && pLocal->pFlags == 257)
				{
					WriteProcessMemory(hProc, (LPVOID)(dwClient + dwForceJump), &valueon, sizeof(valueon), 0);
				} else {
					WriteProcessMemory(hProc, (LPVOID)(dwClient + dwForceJump), &valueoff, sizeof(valueoff), 0);
				}
			}

			CloseHandle(hProc);
		}
	}

	system("pause");

	return 0;
}
Credits to Fleep, Y3t1y3t, gtaplayer2 ( I learned a lot things reading your bases! ) and me