rendered paste body#pragma once#include <string>#include <Windows.h>extern HANDLE g_Process;template <class Type> class Cheat{private: void* m_Addr; wstring m_ProcName; //most errors are here?? DWORD m_Size; Type m_Value, m_PreValue;public: Cheat(wstring ProcessName, void* Address, Type Value); ~Cheat(); int ModifyProcess(Type* Val, Type* PreVal = NULL); int EnableCheat(bool SavePre = false); int DisableCheat();};template <class Type> Cheat<Type>::Cheat(wstring ProcessName, void* Address, Type Value){ DWORD ProcessID; HWND SA; m_Addr = Address; g_Process = NULL; m_ProcName = ProcessName; m_Value = Value; m_PreValue = NULL; m_Size = sizeof(Type); if(!g_Process) { if((SA = FindWindow(NULL, _T(m_ProcName.c_str())))) { if(GetWindowThreadProcessId(SA, &ProcessID)) { g_Process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID); } } }}template <class Type> Cheat<Type>::~Cheat(){ if(g_Process) { CloseHandle(g_Process); }}template <class Type> int Cheat<Type>::ModifyProcess(Type* Val, Type* PreVal = NULL){ if(g_Process) { if(PreVal) ReadProcessMemory(g_Process, m_Addr, PreVal, NULL); if(WriteProcessMemory(g_Process, m_Addr, Val, m_Size, NULL)) { return 1; } } return 0;}template <class Type> int Cheat<Type>::EnableCheat(bool SavePre = false){ if(SavePre) { return ModifyProcess(m_Value, m_PreVal); } return ModifyProcess(m_Value);}template <class Type> int Cheat<Type>::DisableCheat(){ return ModifyProcess(m_PreVal);}