0% found this document useful (0 votes)
113 views

Gmod Net Logger

Uploaded by

adrien453434
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
113 views

Gmod Net Logger

Uploaded by

adrien453434
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 16

-- by https://steamcommunity.

com/id/Pastebin/
-- https://www.mpgh.net/forum/showthread.php?t=1432417

netCodes = netCodes or {
["SendToServer"] = net.SendToServer,
["Start"] = net.Start,
["WriteAngle"] = net.WriteAngle,
["WriteBit"] = net.WriteBit,
["WriteBool"] = net.WriteBool,
["WriteColor"] = net.WriteColor,
["WriteData"] = net.WriteData,
["WriteDouble"] = net.WriteDouble,
["WriteEntity"] = net.WriteEntity,
["WriteFloat"] = net.WriteFloat,
["WriteInt"] = net.WriteInt,
["WriteMatrix"] = net.WriteMatrix,
["WriteNormal"] = net.WriteNormal,
["WriteString"] = net.WriteString,
["WriteTable"] = net.WriteTable,
["WriteUInt"] = net.WriteUInt,
["WriteVector"] = net.WriteVector
}

function tableToString(t)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end

local buffer = ""

local function construct_net_block(t, netName)


makeString = "net." ..netName .. "("
for i=1, #t do
indexValue = t[i]
if (type(indexValue) == "number") then
if (i == #t) then makeString = makeString .. indexValue else
makeString = makeString .. indexValue .. ", " end
elseif (type(indexValue) == "boolean") then
makeString = makeString .. tostring(indexValue)
elseif (type(indexValue) == "string") then
if (i == #t) then makeString = makeString .. "\"" ..
indexValue .. "\"" else makeString = makeString .. "\"" .. indexValue .. "\", " end
elseif (type(indexValue) == "Player" || type(indexValue) == "Entity" ||
type(indexValue) == "NPC") then
makeString = makeString .. "Entity(" ..
tostring(indexValue:EntIndex()) .. ")"
elseif (type(indexValue) == "Vector") then
makeString = makeString .. "Vector(" ..
string.gsub(tostring(indexValue), "%s+", ", ") .. ")"
elseif (type(indexValue) == "table") then
print("INDEXVALUE IS TABLE")
print("indevalue", table.ToString(indexValue))
makeString = makeString .. table.ToString(indexValue)
else
ErrorNoHalt("[netlogthing] !!! UNHANDLED !!! " .. "type(index): "
.. "[" .. type(indexValue) .. "]" .. " index: " .. "[" .. tostring(indexValue) ..
"]")
end
end

buffer = buffer .. makeString .. ")" .. "\n"


if (string.match(buffer, "SendToServer")) then
hook.Run( "RecvNetMsg", buffer )
buffer = ""
end
end

-- net request sent


-- net requests go through our

function handle_net_message(netName)
return function (...) -- just doing this so I can give access to netName in
construct_net_block function
construct_net_block({...}, netName)
hook.Add( "RecvNetMsg", "netlogger", function(netmsg)
detour_net_functions(false)
RunString(netmsg)
detour_net_functions(true)
end)

-- netCodes[netName](...)
end
end

function detour_net_functions(bool) -- WriteTable calls a bunch of other net


functions internally, so got to turn it off
if (bool) then
for k, v in pairs(netCodes) do
net[k] = handle_net_message(k)
end
else
for k, v in pairs(netCodes) do
net[k] = v
end
end

end

if (!detoured_net_functions) then
detoured_net_functions = true
detour_net_functions(true)
else
print("\n\n\nAlready detoured net functions\n\n\n")
end

surface.CreateFont( "customFont2", {
font = "Verdana", -- Use the font-name which is shown to you by your
operating system Font Viewer, not the file name
extended = false,
size = 15,
weight = 100,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )

function mysplit(inputstr, sep)


if sep == nil then
sep = "%s"
end
local t={} ; i=1
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
t[i] = str
i = i + 1
end
return t
end

local net_message_box = {
setTextAndCount = function(self, text, count)
newLineCount = #mysplit(text, "\n")
self:SetTitle(" #" .. tostring(count))
self.netmsgBox:SetText(text)
W, H = self.netmsgBox:GetSize()
W, H = self.netmsgBox:GetSize()
self:SetSize(W, H + 200)
self:SizeToContents()

end,
Init = function(self)
outer_self = self
self:ShowCloseButton( false )
self:SetSize(150, 400)
self.W, self.H = self:GetSize()
self.netmsgBox = vgui.Create( "DTextEntry", self)
self.netmsgBox:SetPos( 40, 50 )
self.netmsgBox:Dock(FILL)
self.netmsgBox:SetMultiline(true);
self.netmsgBox.Paint = function(self,w,h)
draw.RoundedBox(0, 0, 0, w, h, Color(48,10,36, 255))
self:DrawTextEntryText(Color(255, 255, 255), Color(30, 130, 255),
Color(255, 255, 255))
end

local closeBtn = vgui.Create( "Button", self)


closeBtn:SetSize( 14,14 )
closeBtn:SetPos(5,6)
closeBtn:SetVisible( true )
closeBtn:SetText( "" )
closeBtn.Paint = function(self,w,h)
draw.RoundedBox(5, 0, 0, w, h, Color(225,81,32, 255))
-- surface.DrawCircle( 100, 100, 50, Color(255,255,255,255) )
draw.DrawText( "x", "customFont2", w/2, -1, Color( 255,255,255,
255 ), TEXT_ALIGN_CENTER )
end
print("outer_self", outer_self)
function closeBtn:OnMousePressed()
outer_self:SetVisible(false)
outer_self:Remove()
end

end,

Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(48,10,36, 255))
surface.SetDrawColor( Color( 200, 200, 200, 255 ) )
surface.DrawOutlinedRect(0,0, w-1,h-1)
surface.DrawOutlinedRect(0,0, w-1,25)
end,
Think = function(self, w, h)
if (self:IsHovered()) then

end
end
}

vgui.Register("netmessagebox", net_message_box, "DFrame")


-- net_message_box = vgui.Create("netmessagebox")
-- net_message_box:setTextAndCount("net.Start('test')\nnet.SendToServer()")

browser = {
Init = function(self)
self.W, self.H = self:GetSize()
self:SetSize(self.W * 15, 555)
self:ShowCloseButton(false)
self:SetDraggable(true)
self.gmodwiki = vgui.Create("DHTML", self)
self.gmodwiki:OpenURL("http://wiki.garrysmod.com/page/Main_Page")
self.gmodwiki.zoom = 100
self.gmodwiki:Dock(FILL)
self:SetTitle("")
-- self:MakePopup()

local addressBar = vgui.Create( "DTextEntry", self ) -- create the form


as a child of frame
addressBar:SetPos( 60, 2 )
addressBar:SetSize( 400, 25 )
addressBar:SetText("http://wiki.garrysmod.com/page/Main_Page")
addressBar.OnEnter = function( self1 )
self.gmodwiki:OpenURL( self1:GetValue() ) -- print the form's text
as server text
end

local backBtn = vgui.Create( "DButton", self ) -- create the form as a


child of frame
backBtn:SetPos( 5, 2 )
backBtn:SetSize( 25, 25 )
backBtn:SetText("<")
backBtn:SetTextColor(Color(255,255,255))
backBtn.DoClick = function()
self.gmodwiki:RunJavascript([[window.history.go(-1)]])
end

backBtn.Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(57, 58, 49))
end

local forwardBtn = vgui.Create( "DButton", self ) -- create the form as


a child of frame
forwardBtn:SetPos( 35, 2 )
forwardBtn:SetSize( 25, 25 )
forwardBtn:SetText(">")
forwardBtn:SetTextColor(Color(255,255,255))
forwardBtn.DoClick = function()
self.gmodwiki:RunJavascript([[window.history.go(1)]])
end
forwardBtn.Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(57, 58, 49))
end

self.gmodwiki:RunJavascript([[
String.prototype.startsWith = function(char){
return this[0] == char;
}
]]) -- pls update gmod's javascript engine

local zoomInBtn = vgui.Create( "DButton", self ) -- create the form as


a child of frame
zoomInBtn:SetPos( 465, 2 )
zoomInBtn:SetSize( 45, 25 )
zoomInBtn:SetText("Zoom in")
zoomInBtn:SetTextColor(Color(255,255,255))
zoomInBtn.DoClick = function()
self.gmodwiki.zoom = self.gmodwiki.zoom + 10
self.gmodwiki:RunJavascript("document.body.style.zoom = \"" ..
tostring(self.gmodwiki.zoom) .. "%\";")
end
zoomInBtn.Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(57, 58, 49))
end

local zoomOutBtn = vgui.Create( "DButton", self ) -- create the form as


a child of frame
zoomOutBtn:SetPos( 515, 2 )
zoomOutBtn:SetSize( 45, 25 )
zoomOutBtn:SetText("Zoom out")
zoomOutBtn:SetTextColor(Color(255,255,255))
zoomOutBtn.DoClick = function()
self.gmodwiki.zoom = self.gmodwiki.zoom - 10
self.gmodwiki:RunJavascript("document.body.style.zoom = \"" ..
tostring(self.gmodwiki.zoom) .. "%\";")
end
zoomOutBtn.Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(57, 58, 49))
end

-- local closeBtn = vgui.Create( "DButton", self )


-- closeBtn:SetText( "X" )
-- closeBtn:SetPos( 575, 5 )
-- closeBtn:SetSize( 20, 20 )
-- closeBtn:SetTextColor(Color(255,255,255))
-- closeBtn.DoClick = function()
--
self.gmodwiki:RunJavascript([[document.getElementsByTagName("body")[0].style.zoom =
"200%"]])
-- timer.Simple(5, function()
-- self:Close()
-- end)
-- end
-- closeBtn.Paint = function(self,w,h) draw.RoundedBox(0, 0, 0, w, h,
Color(170, 37, 37)) end

self.Paint = function(self, w,h)


draw.RoundedBox(0, 0, 0, w, h, Color(47, 48, 42, 255))
end
self.Think = function(self)

end
end,
}
vgui.Register("browser", browser, "DFrame")

-- vgui.Create("browser")

local infoPopup = {

setInfoText = function(self, tab_name)


-- print(self.infopopupTexts[tab_name].header)
self.header:SetText(self.infopopupTexts[tab_name].header)
self.infoText:SetText(self.infopopupTexts[tab_name].infoText)
end,

Init = function(self)

self.infopopupTexts = {
-- Tab = {header = "", infoText = ""},
ExploitTab = {header = "Exploit Tab", infoText = "You can upload
your exploits locally or to the web here. This tab is also responsible for finding
every single net message name on the server you load this menu on and saves it
locally so we can tell if other servers have common exploits"},
NetLoggerTab = {header = "Net logger Tab", infoText = "Logs all
the net messages that come through. Useful for things that you can easily interact
with that sends net messages i.e NPCs"},
RepeaterTab = {header = "Repeater Tab", infoText = "Repeats the
given net messages"},
interceptorTab = {header = "Intercepter Tab", infoText = "Repeats
the given net messages"},
LuaViewerTab = {header = "Lua viewer Tab", infoText = "View all
the server's client side files here"},
LuaEditorTab = {header = "Lua editor Tab", infoText = "Simple lua
editor with a \"browser\" built in"}
},

self:SetTitle("")
self:SetSize(350, 350)
self:Center()
self:MakePopup()
self:ShowCloseButton(false)

local closeBtn = vgui.Create( "DButton", self )


closeBtn:SetText( "X" )
closeBtn:SetPos( 325, 5 )
closeBtn:SetSize( 20, 20 )
closeBtn:SetTextColor(Color(255,255,255))
closeBtn.DoClick = function() self:Close() end
closeBtn.Paint = function(self,w,h) draw.RoundedBox(0, 0, 0, w, h,
Color(170, 37, 37)) end

self.header = vgui.Create("DLabel", self)


self.header:SetFont("headerFont1")
self.header:SetSize(150, 35)
-- self.header:SetText("Exploits tab")
self.header:Center()
self.header.posX, self.header.posY = self.header:GetPos()
self.header:SetPos(self.header.posX, 15)

self.infoText = vgui.Create("DLabel", self)


self.infoText:SetFont("infoFont")
self.infoText:SetSize(320, 200)
self.infoText:SetPos(30, 10)

-- self.infoText:SetText("You can upload your exploits locally or to


the web here. This tab is also responsible for finding every single net message
name on the server you load this menu on and saves it locally so we can tell if
other servers have common exploits")
self.infoText:SetWrap(true)

self.footerText = vgui.Create("DLabel", self)


self.footerText:SetFont("infoFont")
self.footerText:SetSize(100, 20)
self.footerText:Center()
self.footerText.posX, self.footerText.posY = self.footerText:GetPos()
self.footerText:SetPos(self.footerText.posX, 320)
self.footerText:SetText("Made by Riddle")
self.footerText:SetWrap(true)

self.Paint = function(self,w,h)
draw.RoundedBox(0, 0, 0, w, h, Color(39, 40, 34))

surface.SetDrawColor(Color(255,255,255))
startX = 0
endX = 350
startY = 65
endY = 65
surface.DrawLine( startX, startY, endX, endY )
DrawRainbowRectOutline(1, 0,0, w-1,h-1, 2)
end

end,

vgui.Register("infoPopup", infoPopup, "DFrame")

gmodWikiFrame = {
Init = function(self)
self:SetSize(700, 600)

self.gmodwiki = vgui.Create("DHTML", self)


self.gmodwiki:Dock(FILL)
self.gmodwiki:OpenURL("http://wiki.garrysmod.com/page/Main_Page")

end,
}

local CodeEditor = {
setFill = function(self, b)
if (b) then
self:Dock(FILL)
end
end,

setText = function(self, text)


self.html:RunJavascript("SetContent(" .. "'" .. text .. "')")
end,

createButton = function(self)

self.runLuaBtn = vgui.Create("DButton", self.right)


self.runLuaBtn:Dock(BOTTOM)
self.runLuaBtn:SetTall(self.runLuaBtn:GetTall() * 1.5)
self.runLuaBtn:SetText("Run lua")
self.runLuaBtn.DoClick = function()

if (not self.currentCode) then


print("[Warning] Nothing inside code editor")
return
end
RunString(self.currentCode)
end
self.runLuaBtn:SetTextColor(Color(255,255,255))
self.runLuaBtn.Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(57, 58, 49))
end

end,

showButton = function(self, b)
self.shouldHaveButton = b
end,

Init = function(self)
self.shouldHaveButton = true
self:SetSize(250, 250)

-- self:SetPos(20, 30)

self.right = vgui.Create("PANEL", self)


self.right:Dock(FILL)

self.html = vgui.Create("DHTML", self.right)


self.html:Dock(FILL)
self.html:SetAllowLua(true)

self.html:OpenURL("asset://garrysmod/lua/menu_plugins/luaviewer/index.html")
--thx metastruct
self.html:AddFunction("gmodinterface", "OnCode", function(code)
self.currentCode = code
end)

-- self.html:RunJavascript("SetContent(" .. "'" .. content .. "')")

self.html:AddFunction("gmodinterface", "DoLog", function(logstr)


print("Log\t=\t", logstr) end)
timer.Simple(0.1, function()
if (self.shouldHaveButton) then
self:createButton()
else
self.html:RunJavascript([[SetFontSize(10)]])
end
end)
end

}
vgui.Register("CodeEditor", CodeEditor, "DPanel")

surface.CreateFont( "questionMarkFont", {
font = "Arial", -- Use the font-name which is shown to you by your operating
system Font Viewer, not the file name
extended = false,
size = 17,
weight = 500,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )

-- if (string.len(file.Read( "exploits.txt", "DATA" )) < 5) then


-- default = {serversWithExploits = {}, exploits = {}, loggedServers = {}}
-- file.Write( "exploits.txt", util.TableToJSON(default) )
-- end

local net_message_table = {}
local PANEL = {
addToCatergory = function(self, netmsg, freq)
local name = mysplit(netmsg, "\n")[1]
if not net_message_table[name] then
local Category = self.CategoryList:Add(name)
Category:SetExpanded(false)

local countLabel = vgui.Create( "DLabel", Category )


countLabel:SetFont("customFont2")
countLabel:SetColor(Color(255,255,255))
countLabel:SetPos( 280, 0 )
countLabel:SetSize(200,16)
countLabel:SetText("COUNT: 1")

net_message_box = vgui.Create("netmessagebox")
net_message_box:Dock( TOP )
net_message_box:setTextAndCount(netmsg, 1)

DScrollPanel = vgui.Create( "DScrollPanel")


Category:SetContents(DScrollPanel)

DScrollPanel:Add(net_message_box)
DScrollPanel:Dock( FILL )
-- 51.38.95.230:27015

net_message_table[name] = {panel = Category, count = 1,


countLabel = countLabel, DScrollPanel = DScrollPanel}
Category.Paint = function (s,w,h)
draw.RoundedBox(0, 0, 0, w, h, Color(70,69,65))
end
else
count = net_message_table[name].count + 1
countLabel = net_message_table[name]["countLabel"]
panel = net_message_table[name]["panel"]
DScrollPanel = net_message_table[name]["DScrollPanel"]

net_message_table[name] = { panel = panel, count = count,


countLabel = countLabel, DScrollPanel = DScrollPanel}

panel:SetLabel(name)
countLabel:SetFont("customFont2")
countLabel:SetColor(Color(255,255,255))
countLabel:SetPos( 280, 0 )
countLabel:SetText("COUNT: " .. count)

net_message_box = vgui.Create("netmessagebox")
net_message_box:setTextAndCount(netmsg, count)
net_message_box:Dock( TOP )
DScrollPanel:Add(net_message_box)
DScrollPanel:Dock( FILL )

self.i = 0

end
end,

DrawRainbowRectOutline = function(self, frequency, x, y, w, h )


for i = x, x + w - 1 do
surface.SetDrawColor( HSVToColor( i * frequency % 360, 1, 1 ) )
surface.DrawLine( i, y, i + 1, y )
surface.DrawLine( i, y + h - 1, i + 1, y + h )
end
for i = y, y + h - 1 do
surface.SetDrawColor( HSVToColor( i * frequency % 360, 1, 1 ) )
surface.DrawLine( x, i, x, i + 1 )
surface.DrawLine( x + w - 1, i, x + w, i + 1 )
end
end,

Paint = function(self, w, h)
draw.RoundedBox(0, 0, 0, w, h, Color(47, 48, 42, 255))
self:DrawRainbowRectOutline(1,0,0, w-1,h-1, 2)
end,

Think = function(self, w, h)
self.W, self.H = self:GetSize()
if (self.isFrameOpen) then
self.openGmodWiki:SetVisible(true)
else
self.openGmodWiki:SetVisible(false)
end
self.W, self.H = w, h
end
}

function PANEL:IsOpen(b)
self.isFrameOpen = b
end

function PANEL:Init()
self.isFrameOpen = true

self.W, self.H = self:GetSize()

outside_self = self
self:SetSize(400, 400)
self:SetTitle("Riddle's menu")
self:Center()
self:SetVisible( true )
self:SetDeleteOnClose(false)
self.W, self.H = self:GetSize()
self:ShowCloseButton(false)

self.currentTab = "ExploitTab"

local closeBtn = vgui.Create( "DButton", self )


closeBtn:SetText( "X" )
closeBtn:SetPos( self.W * 0.93, 5 )
closeBtn:SetSize( 20, 20 )
closeBtn:SetTextColor(Color(255,255,255))
closeBtn.DoClick = function() self:Close() end
closeBtn.Paint = function(self,w,h) draw.RoundedBox(0, 0, 0, w, h,
Color(170, 37, 37)) end

local infoBtn = vgui.Create( "DButton", self )


infoBtn:SetText( "?" )
infoBtn:SetFont("questionMarkFont")
infoBtn:SetPos( self.W * 0.87, 5 )
infoBtn:SetSize( 20, 20 )
infoBtn:SetTextColor(Color(255,255,255))
infoBtn.DoClick = function()
infoPopup = vgui.Create("infoPopup")
infoPopup:setInfoText(self.currentTab)
end
infoBtn.Paint = function(self,w,h) draw.RoundedBox(0, 0, 0, w, h,
Color(37, 37, 170)) end

sheet = vgui.Create( "DPropertySheet", self )


sheet:SetPos(1, 20)
sheet:SetSize(397, 376)

local exploitsPanel = vgui.Create( "DPanel", sheet )


exploitsPanel:Dock(FILL)

self.NetLoggerPanel = vgui.Create( "DPanel", sheet )


self.NetLoggerPanel:Dock(FILL)

local repeaterPanel = vgui.Create( "DPanel", sheet )


repeaterPanel:Dock(FILL)

-- local luaViewerPanel = vgui.Create( "DPanel", sheet )


-- luaViewerPanel:Dock(FILL)

local luaEditorPanel = vgui.Create( "DPanel", sheet )


luaEditorPanel:Dock(FILL)

-- ExploitsTab = sheet:AddSheet( "Exploits", exploitsPanel,


"icon16/world.png" )
NetLoggerTab = sheet:AddSheet( "Net Logger", self.NetLoggerPanel,
"icon16/page_white_edit.png" )
repeaterTab = sheet:AddSheet( "Repeater", repeaterPanel,
"icon16/arrow_rotate_anticlockwise.png" )
interceptorTab = sheet:AddSheet( "Intcepter", repeaterPanel,
"icon16/lock_go.png" )
--luaViewerTab = sheet:AddSheet( "Lua Viewer", luaViewerPanel,
"icon16/folder.png", false, false, "See server's clientside files" )
luaEditorTab = sheet:AddSheet( "Lua Editor", luaEditorPanel,
"icon16/application_xp_terminal.png", false, false, "See server's clientside files"
)

self.NetLoggerPanel.Paint = function(s,w,h)
draw.RoundedBox(0, 0, 0, w, h, Color(39, 40, 34))
end

self.CategoryList = vgui.Create( "DCategoryList", self.NetLoggerPanel )


self.CategoryList.Paint = function(self,w,h) draw.RoundedBox(0, 0, 0,
w, h, Color(39, 40, 34)) end
self.CategoryList:Dock( FILL )

-- adding stuff to net_logger


c = 0
hook.Add( "RecvNetMsg", "netlogger2", function( netmsg )
c = c + 1
self:addToCatergory(netmsg, c)
end )

-- creating the panels


-- luaViewer = vgui.Create("luaviewer", luaViewerPanel)
luaEditor = vgui.Create("CodeEditor", luaEditorPanel)
luaEditor:setFill(true)
--main_menu = vgui.Create("main_menu", exploitsPanel)

local browser = vgui.Create("browser", self)


browser:SetPos(600,40)
browser:SetVisible(false)

-- Detouring and resizeing the panels when you click on them


-- DoClickExploitsTab = ExploitsTab.Tab.DoClick
DoClickNetLoggerTab = NetLoggerTab.Tab.DoClick
--DoClickrepeaterTab = luaViewerTab.Tab.DoClick
DoClickLuaViewerTab = repeaterTab.Tab.DoClick
DoClickluaEditorTab = luaEditorTab.Tab.DoClick
DoClickincepterTab = interceptorTab.Tab.DoClick

-- ExploitsTab.Tab.DoClick = function (...)


-- -- outside_self:SizeTo(400, 600, 0.2, 0, 4)
-- -- sheet:SetSize(397, 574)
-- browser:SetVisible(false)
-- outside_self:SizeTo(700, 600, 0.2, 0, 4)
-- sheet:SetSize(697, 574)

-- timer.Create( "Center2", 0.1, 5, function()


outside_self:Center() infoBtn:SetPos( self.W * 0.92, 5 ) closeBtn:SetPos(self.W *
0.96, 5) end )
-- self.currentTab = "ExploitTab"
-- DoClickExploitsTab(...)
-- end

NetLoggerTab.Tab.DoClick = function (...)


outside_self:SizeTo(400, 400, 0.2, 0, 4)
sheet:SetSize(397, 376)

-- closeBtn:SetPos(self.W * 0.95, 5)

timer.Create( "Center3", 0.1, 5, function() outside_self:Center()


infoBtn:SetPos( self.W * 0.87, 2 ) closeBtn:SetPos(self.W * 0.93, 2) end )
self.currentTab = "NetLoggerTab"
DoClickNetLoggerTab(...)
end

repeaterTab.Tab.DoClick = function (...)


-- outside_self:SizeTo(400, 400, 0.2, 0, 4)
-- sheet:SetSize(400, 379)

-- timer.Create( "Center2", 0.1, 5, function()


outside_self:Center() infoBtn:SetPos( self.W * 0.87, 2 ) closeBtn:SetPos(self.W *
0.93, 2) end )
-- self.currentTab = "RepeaterTab"
-- DoClickrepeaterTab(...) -- stops the click from going through
i.e wont switch when clicked
end

interceptorTab.Tab.DoClick = function (...)


-- outside_self:SizeTo(400, 400, 0.2, 0, 4)
-- sheet:SetSize(400, 379)

-- timer.Create( "Center2", 0.1, 5, function()


outside_self:Center() infoBtn:SetPos( self.W * 0.87, 2 ) closeBtn:SetPos(self.W *
0.93, 2) end )
-- self.currentTab = "interceptorTab"
-- DoClickincepterTab(...) -- stops the click from going through
i.e wont switch when clicked
end

-- luaViewerTab.Tab.DoClick = function(...)
-- outside_self:SizeTo(ScrW() * .95, ScrH() * .95, 0.2, 0, 4)
-- sheet:SetSize(ScrW() * .95, ScrH() * .95)
-- browser:SetVisible(false)
-- timer.Create( "Center1", 0.1, 5, function()
outside_self:Center() infoBtn:SetPos( self.W * 0.94, 5 ) closeBtn:SetPos(self.W *
0.97, 5) end )

-- self.currentTab = "LuaViewerTab"
-- DoClickLuaViewerTab(...)

-- end

luaEditorTab.Tab.DoClick = function (...)


outside_self:SizeTo(595, 600, 0.2, 0, 4)
sheet:SetSize(592, 578)

-- outside_self:SizeTo(1200, 600, 0.2, 0, 4)


-- sheet:SetSize(592, 578)
browser:SetVisible(true)
timer.Create( "Center4", 0.1, 5, function() outside_self:Center()
infoBtn:SetPos( self.W * 0.90, 5 ) closeBtn:SetPos(self.W * 0.95, 5) end )

self.currentTab = "LuaEditorTab"
DoClickluaEditorTab(...)

end
self.OnClose = function() self:IsOpen(false)
self.openGmodWiki:SetVisible(false) print("closing")
gui.EnableScreenClicker(false) end

self.openGmodWiki = vgui.Create("DButton", luaEditor)


self.openGmodWiki:SetPos(575, 250)
self.openGmodWiki:SetSize(15, 20)
self.openGmodWiki:SetText(">")
self.openGmodWiki:SetTextColor(Color(255,255,255))
self.openGmodWiki.isOpen = false
self.openGmodWiki.DoClick = function()
self.openGmodWiki.isOpen = !self.openGmodWiki.isOpen
if (self.openGmodWiki.isOpen) then
outside_self:SizeTo(ScrW() * 0.99, 600, 0.2, 0, 4)
self.openGmodWiki:SetText("<")
else
outside_self:SizeTo(595, 600, 0.2, 0, 4)
self.openGmodWiki:SetText(">")
end

sheet:SetSize(592, 578)

timer.Create( "Center4", 0.1, 20, function()


outside_self:Center() end )
end

self.openGmodWiki.Paint = function(self, w, h)
-- 39 G: 40 B: 34
draw.RoundedBox(0, 0, 0, w, h, Color(69, 70, 64))
end

self.Think = function()
self.W, self.H = self:GetSize()
-- print(self.W)
end

end

vgui.Register("frame_handler", PANEL, "DFrame")

exploit_menu = vgui.Create("frame_handler")
exploit_menu:MakePopup()

concommand.Add("_dbg", function()
net.Start("test_message")
net.SendToServer()
end)
concommand.Add("_menu", function ()
if (!exploit_menu) then
exploit_menu = vgui.Create("frame_handler")
end
gui.EnableScreenClicker(true)
exploit_menu:IsOpen(true)
exploit_menu:MakePopup()
exploit_menu:SetVisible( true )
end)

You might also like