Thumbs upLuaCSGO. A Lua API for CSGO

Posts 1–15 of 42 · Page 1 of 3
LuaCSGO. A Lua API for CSGO
]Just something I've been working on on the weekends.

This is a Lua "API" for CSGO. I used LuaBind for the interactions between Lua and C++. There's a lot of info on the github repository, link below.

Screenshot:


Github repository: https://github.com/MarkHC/LuaCSGO

The provided scripts have these features:
  1. ESP boxes
  2. Names
  3. RCS
  4. Removed visual recoil

You can always add more if you know Lua though, just change the scripts.

How to use this:
  1. At the bottom of this post there's a download link for the Dll + Scripts.
  2. Scripts MUST be placed at "steamapps\common\Counter-Strike Global Offensive\LuaCSGO\"
  3. After having everything on its place, you can inject the Dll into CSGO


This is a proof of concept. As of right now it is safe, but there's nothing to help avoid detection and it will be detected soon, beware.

Sample script: (Also provided on the download link)
Code:
require("LuaCSGO/Settings")
require("LuaCSGO/LuaESP")

g_pEngine         = Interfaces:GetEngineInterface()
g_pEngineTrace    = Interfaces:GetEngineTraceInterface()
g_pEntityList     = Interfaces:GetEntityListInterface() 
g_pVGUIPanel    = Interfaces:GetPanelInterface()
g_pGlobals         = Interfaces:GetGlobalVars()

local g_pMenuFont     = nil
local iTopPanel        = nil

function OnKeyEvent(keyEvent)
    if keyEvent.Type == EVENT_KEYDOWN then
        if keyEvent.KeyCode == KEY_HOME then
            LuaCSGO:Toggle()
            if not LuaCSGO:IsActive() then 
                --Not active, disable all callbacks except the keyboard
                Callbacks:DisableAllExcept(CALLBACK_KEYBOARD)
            else 
                --Enable all of the registered callbacks
                Callbacks:EnableAllCallbacks()
            end
        elseif keyEvent.KeyCode == KEY_INSERT then
            --This will force a reload of all the scripts
            RELOAD()
        end
        
    end
    
    return false
end

function OnPaintTraverse(vguiPanel)
    if iTopPanel == nil then
        szPanelName = g_pVGUIPanel:GetName(vguiPanel)
        print(szPanelName)
        --Is this panel the top panel?
        if szPanelName == "MatSystemTopPanel" then
        
            --If it is, then save its number so we dont have to compare strings anymore
            iTopPanel = vguiPanel
            print("MatSystemTopPanel found. ID = " .. iTopPanel)
            
            --Create a font for drawing
            g_pMenuFont = DrawManager:CreateNewFont("Courier New", 16, false, false, true, true)
        end
    elseif vguiPanel == iTopPanel then
        
        --Is the local player in-game?
        if g_pEngine:IsInGame() then
            
            --Taking a screenshot. Don't draw anything, let's look legit! :-)
            if g_pEngine:IsTakingScreenshot() then return end
        
            local pLocalPlayer = g_pEntityList:GetEntityFromIndex(g_pEngine:GetLocalPlayer())
            
            --If local player is not valid then we return immediately.
            --This should never happen, but it is good to check anyways.
            if not pLocalPlayer:IsValid() then 
                return 
            end
            
            --For each entity...
            for i = 1, g_pEntityList:GetHighestEntityIndex() do
                --Grab the entity from the entity list
                local pEntity = g_pEntityList:GetEntityFromIndex(i)
                
                --Is it a valid entity?
                if pEntity:IsValid() then
                    
                    iClassID = pEntity:GetClassID()
                    --Is it a player? (This check is not a must, but it is useful when you want to do something with entities that are not players)
                    --    You could also compare by name, if you dont know the ID. like so: if pEntity:GetClassName() == "CCSPlayer"
                    if iClassID == 34 --[[CCSPlayer]] then
                        
                        --Is it alive, not dormant and is not the local player?
                        if pEntity:IsAlive() and not pEntity:IsDormant() and i ~= g_pEngine:GetLocalPlayer() then
                            
                            DrawBox(pLocalPlayer, pEntity)
                            DrawNames(pLocalPlayer, pEntity, i)
                        end    
                    elseif iClassID == 103 then
                        --Do something with CCSPlantedC4
                    end
                end
            end
        end
    end
end

function Clamp(vec)
    if vec.Y > 180.0 then
        vec.Y = vec.Y - 360.0
    elseif vec.Y < -180.0 then
        vec.Y = vec.Y + 360.0
    end

    if vec.X > 89.0 then
        vec.X = 89.0;
    elseif vec.X < -89.0 then
        vec.X = -89.0
    end
    
    vec.Z = 0.0
    
    return vec
end

function OnCreateMove(userCmd,verifiedCmd)
    --Local player will always be valid on CreateMove (LuaCSGO does the check before calling the callback)
    local pLocalPlayer = g_pEntityList:GetEntityFromIndex(g_pEngine:GetLocalPlayer())
    local oldAngles = userCmd.ViewAngles
    local punchAngles = pLocalPlayer:GetAimPunch()
    
    local newAngles = oldAngles - punchAngles * 2
    
    userCmd.ViewAngles = Clamp(newAngles)
    
    --Apply new UserCMD and updates CRC
    verifiedCmd:Update(userCmd)
end

local oldAimPunch = Vector()
local oldViewPunch = Vector()
local bRestore = false

function OnFrameStageNotifyBegin(stage)
    if stage == FRAME_RENDER_START then
        local pLocalPlayer = g_pEntityList:GetEntityFromIndex(g_pEngine:GetLocalPlayer())
        if pLocalPlayer:IsValid() then
            --Save the old angles
            oldViewPunch = pLocalPlayer:GetViewPunch()
            oldAimPunch = pLocalPlayer:GetAimPunch()
            
            --Reset view and aim punch
            pLocalPlayer:SetViewPunch(Vector(0,0,0))
            pLocalPlayer:SetAimPunch(Vector(0,0,0))
            
            --Set the restore flag
            bRestore = true
        end
    end
end

function OnFrameStageNotifyEnd(stage)
    --If the flag is set, then we have angles to restore
    if bRestore then
        local pLocalPlayer = g_pEntityList:GetEntityFromIndex(g_pEngine:GetLocalPlayer())
        if pLocalPlayer:IsValid() then
            pLocalPlayer:SetViewPunch(oldViewPunch)
            pLocalPlayer:SetAimPunch(oldAimPunch)
            bRestore = false
        end
    end
end

--Register used callbacks
Callbacks:Register(CALLBACK_KEYBOARD,                     OnKeyEvent)
Callbacks:Register(CALLBACK_PAINTTRAVERSE,                 OnPaintTraverse)
Callbacks:Register(CALLBACK_CREATEMOVE,                 OnCreateMove)
Callbacks:Register(CALLBACK_FRAMESTAGENOTIFY_BEGIN,     OnFrameStageNotifyBegin)
Callbacks:Register(CALLBACK_FRAMESTAGENOTIFY_END,         OnFrameStageNotifyEnd)
Thanks @dude719 for his SDK.

https://virusscan.jotti.org/en-US/fi...job/ct3w9845l9
https://www.virustotal.com/en/file/1...is/1438739967/

[/FONT]
LuaCSGO_mpgh.net.zip182 KB · 244 downloads 2/56 malicious
Seems you know simple and never seen one with nametags very neat much excited
This is really nice, thanks for releasing !
This is amazing thanks for the release dude
. @MarkHC Next time add scans.

//Approved
Quote Originally Posted by Color View Post
. @MarkHC Next time add scans.

//Approved
Oops, my bad. I was in a hurry when I posted it. Sorry.
Looks amazing! Thank you!
Gmod section incoming

- - - Updated - - -

too bad that this will be patched/deteced soon
sory for asking.. how do i use this? tq very much sir. very good hack.. already injected using injector still nothing come up
When using the hack csgo crashes after playing for a while. Any suggestions or fixes? It may be the injector actually, is anyone else having this issue?

Edit: it is definitely the hack and not the injector.
Quote Originally Posted by stonedpanda69 View Post
When using the hack csgo crashes after playing for a while. Any suggestions or fixes? It may be the injector actually, is anyone else having this issue?

Edit: it is definitely the hack and not the injector.
Any additional info? Does it crash when you do something specific? You could try and open up the script on notepad or something and remove some features.

Quote Originally Posted by p100 body shot View Post
lua aimbot on csgo ?
Definitely possible. You can do it if you want, I haven't because I dont like aimbots.
For some reason it's just working on my laptop
Looks great dude!
quick question, is it alright to scramble the dll??
Posts 1–15 of 42 · Page 1 of 3

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?