PCSGOLH - Pointless Counter-Strike: Global Offensive Lua Hooks. A open-source Lua API for CS:GO hacking written in modern C++
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. (Documentation still not finished)
Visual Studio 2013+
Open up a project, make sure that build mode is set to Release, click build. Now the compiler should build all the required libraries and then the main project.
Default script location is not defined, to change it to whatever you want, head to sdk/sdk.hpp
and change the SCRIPT_DIR
.
If you already sucessfully build project, head to Release folder where you should find Injector.exe
and PCSGOLH.dll
. Open a console there and type Injector.exe <dir to your project>/Release/PCSGOLH.dll
. Make sure that Counter-Strike Global Offensive is running if not injector will throw an error.
DLL Injection works by tricking/forcing the target process into loading a DLL of your choice. After that, the code in that DLL will get executed as part of the target process and will be able to do anything the process itself can.
Usage of included injector: Injector.exe <dir to .dll>
Simple esp boxes
_Engine = Interfaces:GetEngine()
_EntityList = Interfaces:GetEntityList()
function DrawBox(pEntity)
local vEyePos = pEntity:GetEyePos()
local vOrigin = pEntity:GetAbsOrigin()
local vHeadScreen = Vector()
local vOrigScreen = Vector()
Utils:WorldToScreen(vEyePos, vHeadScreen)
Utils:WorldToScreen(vOrigin, vOrigScreen)
local iBoxHeight = math.abs(vHeadScreen.Y - vOrigScreen.Y)
local iBoxWidth = iBoxHeight / 1.8
DrawManager:DrawRect(vHeadScreen.X - iBoxWidth / 2, vHeadScreen.Y, iBoxWidth, iBoxHeight, 255, 0, 255, 255)
end
function OnPaint(panel)
if _Engine:IsInGame() then
local pLocal = _EntityList:GetEntityFromIndex(_Engine:GetLocalPlayer())
if not pLocal:IsValid() then return end
for i = 1, _EntityList:GetHighestEntityIndex() do
local pEntity = _EntityList:GetEntityFromIndex(i)
if pEntity:IsValid() then
if pEntity:GetClassId() == 38 then
if pEntity:IsAlive()
and not pEntity:IsDormant()
and i ~= _Engine:GetLocalPlayer() then
DrawBox(pEntity)
end
end
end
end
end
end
Hooks:Register(HOOK_PAINTTRAVERSE, OnPaint)
For more examples check examples
- Boost - LuaBind required utilities.
- Lua - Programming language.
- LuaBind - Binding C++ functions to lua.
- My script crashes without throwing any errors
Make sure that your syntax is right, im working on thisFixed.
- Sebastian Lyko - Initial work - xrivendell
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details