MeepDarknessMeep

RIP dismay5 menu

Aug 3rd, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.05 KB | None | 0 0
  1. print('***[M] - Loading');
  2.  
  3. print("***[D] - DEV");
  4.  
  5. dismay = dismay or {};
  6. dismay.version = 8;
  7. dismay.link = "";
  8. dismay.private = dismay.private or {};
  9.  
  10. local function ReplaceG(index)
  11.     dismay[index] = _G[index];
  12.     _G[index] = nil;
  13. end
  14. local function ReplaceUN(index)
  15.     dismay.private[index] = _G[index];
  16.     _G[index] = nil;
  17. end
  18.  
  19. ReplaceG    ("SetIGN");
  20. ReplaceG    ("RunClient");
  21. ReplaceG    ("OpenClient");
  22. ReplaceG    ("RunMenu");
  23. ReplaceG    ("OpenMenu");
  24. ReplaceG    ("rversion");
  25. ReplaceG    ("CreateMenuItem");
  26. ReplaceG    ("RemoveMenuItem");
  27. ReplaceG    ("SetItemActive");
  28. ReplaceG    ("SetItemCallback");
  29. ReplaceG    ("SetItemName");
  30. ReplaceG    ("Paint");
  31. ReplaceG    ("LoadWebScript");
  32.  
  33. dismay.SpeedNum     = 0;
  34. dismay.SpeedKey     = false;
  35. dismay.SKey         = cookie.GetNumber("__skey", KEY_G);
  36. dismay.AddHook      = hook.Add;
  37.  
  38. local self;
  39. self = dismay.CreateMenuItem("Change sh key", function(bOn)
  40.     local a = vgui.Create("DFrame");
  41.     hook.Add("DrawOverlay", "SpeedKey", function()
  42.         draw.DrawText("Open Menu! (esc key)", "BudgetLabel", 2, 3, Color(255,0,255,255));
  43.     end)
  44.     function a:OnKeyCodePressed(key)
  45.         dismay.SKey = key;
  46.         cookie.Set("__skey", key);
  47.         dismay.RunClient("dismay.SKey = "..tostring(key)..";");
  48.         self:Remove();
  49.         a:SetIsMenu(false);
  50.     end
  51.     function a:Think()
  52.         self:RequestFocus();
  53.     end
  54.     a:SetSize(ScrW(), ScrH());
  55.     a:MakePopup();
  56.     a.self = self;
  57.     function a:OnRemove()
  58.         hook.Remove("DrawOverlay", "SpeedKey");
  59.         dismay.SetItemActive(a.self, false);
  60.     end
  61.     dismay.SetItemActive(a.self, true);
  62. end);
  63. local self;
  64. self = dismay.CreateMenuItem("Speedhack key", function(bOn)
  65.     dismay.SpeedKey = bOn;
  66.     dismay.RunClient("dismay.SpeedKey = "..tostring(bOn)..";");
  67.     dismay.SetItemName(self, "Speedhack key");
  68. end);
  69. local self;
  70. self = dismay.CreateMenuItem("Speedhack Speed (0)", function(bOn)
  71.     if(dismay.SpeedNum > 20) then dismay.SpeedNum = -1; end
  72.     dismay.SpeedNum = dismay.SpeedNum + 1;
  73.     dismay.RunClient("dismay.SpeedNum = "..tostring(dismay.SpeedNum)..";");
  74.     dismay.SetItemName(self, "Speedhack Speed ("..dismay.SpeedNum..")");
  75.     dismay.SetItemActive(self, false);
  76. end);
  77.  
  78. dismay.real_g = {};
  79.  
  80. dismay.metas = {};
  81.  
  82. local fetch = http.Fetch;
  83. local abort = abort;
  84.  
  85. dismay.metas._G = {
  86.     __index = function(self, k)
  87.         if dismay.real_g[k] then return dismay.real_g[k]; end
  88.     end;
  89.     __newindex = function(self, k, v)
  90.         if (string.find(string.lower(k), "g_")) then
  91.             if (v == "") then
  92.                 return;
  93.             end
  94.             dismay.real_g[k] = v;
  95.             return;
  96.         end
  97.     end;
  98. };
  99.  
  100. setmetatable(_G, dismay.metas._G);
  101.  
  102. g_ServerName        = nil;
  103. g_MapName       = nil;
  104. g_ServerURL     = nil;
  105. g_MaxPlayers        = nil;
  106. g_SteamID       = nil;
  107.  
  108. dismay.adrsrvlist = {};
  109. local adrsrvlist = dismay.adrsrvlist;
  110. dismay.gmsrvlist = {};
  111. local gmsrvlist = dismay.gmsrvlist;
  112. dismay.nmsrvlist = {};
  113. local nmsrvlist = dismay.nmsrvlist;
  114.  
  115. function GetServers(type, id)
  116.     local data =
  117.     {
  118.         Finished = function()
  119.         end,
  120.         Callback = function( ping , name, desc, map, players, maxplayers, botplayers, pass, lastplayed, address, gamemode, workshopid )
  121.            
  122.             nmsrvlist[name] = {
  123.                 ping = ping;
  124.                 desc = desc;
  125.                 map = map;
  126.                 players = players;
  127.                 maxplayers = maxplayers;
  128.                 botplayers = botplayers;
  129.                 pass = pass and "true" or "false";
  130.                 lastplayed = lastplayed;
  131.                 address = address;
  132.                 gamemode = gamemode;
  133.                 workshopid = workshopid;
  134.             }
  135.            
  136.             adrsrvlist[address] = {
  137.                 ping = ping;
  138.                 name = name;
  139.                 desc = desc;
  140.                 map = map;
  141.                 players = players;
  142.                 maxplayers = maxplayers;
  143.                 botplayers = botplayers;
  144.                 pass = pass and "true" or "false";
  145.                 lastplayed = lastplayed;
  146.                 address = address;
  147.                 gamemode = gamemode;
  148.                 workshopid = workshopid;
  149.             }
  150.            
  151.             gmsrvlist[gamemode] = gmsrvlist or {};
  152.             gmsrvlist[gamemode][address] = {
  153.                 ping = ping;
  154.                 name = name;
  155.                 desc = desc;
  156.                 map = map;
  157.                 players = players;
  158.                 maxplayers = maxplayers;
  159.                 botplayers = botplayers;
  160.                 pass = pass and "true" or "false";
  161.                 lastplayed = lastplayed;
  162.                 address = address;
  163.                 workshopid = workshopid;
  164.             }
  165.            
  166.             name    = string.JavascriptSafe( name );
  167.             desc    = string.JavascriptSafe( desc );
  168.             map     = string.JavascriptSafe( map );
  169.             address = string.JavascriptSafe( address );
  170.             gamemode = string.JavascriptSafe( gamemode );
  171.             workshopid = string.JavascriptSafe( workshopid );
  172.            
  173.             if (pass) then pass = "true" else pass = "false" end
  174.            
  175.             pnlMainMenu:Call("AddServer( '"..type.."', '"..id.."', "..ping..", \""..name.."\", \""..desc.."\", \""..map.."\", "..players..", "..maxplayers..", "..botplayers..", "..pass..", "..lastplayed..", \""..address.."\", \""..gamemode.."\", \""..workshopid.."\", 50 )");
  176.            
  177.         end,
  178.         Type = type,
  179.         GameDir = 'garrysmod',
  180.         AppID = 4000,
  181.     }
  182.     serverlist.Query(data) 
  183. end
  184.  
  185. function dismay.GetServersByName(name, bRemoveCurrent)
  186.     local ret = {};
  187.     for n, info in pairs(nmsrvlist) do
  188.         if(string.find(string.lower(n), string.lower(name))) then
  189.             ret[n] = info;
  190.         end
  191.     end
  192.     if(bRemoveCurrent) then
  193.         for k,v in pairs(ret) do
  194.             if(v.address == dismay.LastJoin) then
  195.                 ret[k] = nil;
  196.             end
  197.         end
  198.     end
  199.     return ret;
  200. end
  201.  
  202. function dismay.GetServersByGamemode(gm)
  203.     return gmsrvlist[gm];
  204. end
  205.  
  206. local o = JoinServer;
  207.  
  208. function JoinServer(ip)
  209.     dismay.LastJoin = ip;
  210.     (dismay.OnJoinServer or function() end)(ip);
  211.     return o(ip);
  212. end
  213. dismay.Panel = {};
  214.  
  215. function dismay.Panel:OnMousePressed()
  216.     self:SetBeingPressed(true);
  217.     local mx, my = input.GetCursorPos();
  218.     local x, y = self:GetPos();
  219.     self.OffX = mx - x;
  220.     self.OffY = my - y;
  221. end
  222. function dismay.Panel:Think()
  223.     if(self:GetDraggable() and self:GetBeingPressed() and not self:GetMinimized()) then
  224.         if(input.IsMouseDown(MOUSE_LEFT)) then
  225.             local mx, my = input.GetCursorPos();
  226.             local rx = math.min(ScrW(), math.max(0, mx - self.OffX) + self:GetWide()) - self:GetWide();
  227.             local ry = math.min(ScrH(), math.max(0, my - self.OffY) + self:GetTall()) - self:GetTall();
  228.             self:SetPos(rx, ry);
  229.         else
  230.             self:SetBeingPressed(false);
  231.         end
  232.     end
  233.    
  234.     if(self:GetMinimized()) then
  235.         if(not self:GetWasMinimized()) then
  236.             local x, y = self:GetPos();
  237.             local w, h = self:GetWide(), self:GetTall();
  238.             local r = {
  239.                 x = x;
  240.                 y = y;
  241.                 w = w;
  242.                 h = h;
  243.             };
  244.             self.oldInfo = r;
  245.             dismay.WindowList:AddPnl(self);
  246.         end
  247.         self.btnMaxim:SetDisabled(false);
  248.         self.btnMinim:SetDisabled(true);
  249.     else
  250.         if(self:GetWasMinimized()) then
  251.             self:SetPos(self.oldInfo.x, self.oldInfo.y);
  252.             self:SetTall(self.oldInfo.h);
  253.             self:SetWide(self.oldInfo.w);
  254.             self.btnMaxim:SetDisabled(true);
  255.             self.btnMinim:SetDisabled(false);
  256.         end
  257.     end
  258.     self:SetWasMinimized(self:GetMinimized());
  259. end
  260.  
  261. dismay.Panel.btnMaxim = {}
  262. function dismay.Panel.btnMaxim:DoClick()
  263.     self:GetParent():SetMinimized(false);
  264.     dismay.WindowList:RemPnl(self:GetParent())
  265. end
  266. dismay.Panel.btnMinim = {}
  267. function dismay.Panel.btnMinim:DoClick()
  268.     self:GetParent():SetMinimized(true);
  269. end
  270.  
  271. function dismay.Panel:Init()
  272.     self.m_bMinimized = false;
  273.     self.m_bWasMinimized = false;
  274.     self.m_bIsBeingPressed = false;
  275.    
  276.     function self.GetMinimized(self)
  277.         return self.m_bMinimized;
  278.     end
  279.    
  280.     function self.SetMinimized(self, b)
  281.         self.m_bMinimized = b;
  282.     end
  283.    
  284.     function self.GetWasMinimized(self)
  285.         return self.m_bWasMinimized;
  286.     end
  287.    
  288.     function self.SetWasMinimized(self, b)
  289.         self.m_bWasMinimized = b;
  290.     end
  291.    
  292.     function self.GetBeingPressed(self)
  293.         return self.m_bIsBeingPressed;
  294.     end
  295.    
  296.     function self.SetBeingPressed(self, b)
  297.         self.m_bIsBeingPressed = b;
  298.     end
  299.    
  300.     self.btnClose:SetDisabled(true);
  301.    
  302.     self.btnMaxim.DoClick = dismay.Panel.btnMaxim.DoClick;
  303.    
  304.     self.btnMinim:SetDisabled(false);
  305.     self.btnMinim.DoClick = dismay.Panel.btnMinim.DoClick;
  306. end
  307.  
  308. local PANEL = {};
  309.  
  310. PANEL.m_pPanels = {};
  311. PANEL.pWidth = 220;
  312. PANEL.pHeight = 21;
  313.  
  314. function PANEL:AddPnl(pnl)
  315.     table.insert(self.m_pPanels, pnl);
  316. end
  317. function PANEL:RemPnl(rpnl)
  318.     for i, pnl in ipairs(self.m_pPanels) do
  319.         if(pnl == rpnl) then
  320.             table.remove(self.m_pPanels, i);
  321.         end
  322.     end
  323. end
  324. function PANEL:Think()
  325.     local curx = 0;
  326.     local width = math.min(self.pWidth, #self.m_pPanels > 0 and ScrW() / #self.m_pPanels or ScrW());
  327.     for i, pnl in ipairs(self.m_pPanels) do
  328.         if(not pnl or not IsValid(pnl)) then table.remove(self.m_pPanels, i); end
  329.         local s, c = pcall(function()
  330.             pnl:SetPos(curx, ScrH() - self.pHeight);
  331.             pnl:SetTall(self.pHeight);
  332.             pnl:SetWide(width);
  333.             curx = curx + width;
  334.         end)
  335.         if(not s) then table.remove(self.m_pPanels,i); end
  336.     end
  337. end
  338. function PANEL:Init()
  339.    
  340. end
  341.  
  342. vgui.Register("DWindowList", PANEL, "EditablePanel")
  343. dismay.WindowList = vgui.Create("DWindowList");
  344.  
  345. local PANEL = {};
  346.  
  347. PANEL.colDev = Color(0,255,125,255);
  348. PANEL.colOld = Color(255,0,0,255);
  349. PANEL.colRel = Color(0,255,0,255);
  350.  
  351. function PANEL:Think()
  352. end
  353.  
  354. function PANEL:Paint()
  355. end
  356.  
  357. function PANEL:Init()
  358.     if(dismay.version == dismay.rversion) then
  359.         self.colCur = self.colRel;
  360.         self.szExtra = "(Current)";
  361.     elseif(dismay.version < dismay.rversion) then
  362.         self.colCur = self.colDev;
  363.         self.szExtra = "(Dev)";
  364.     else
  365.         self.colCur = self.colOld;
  366.         self.szExtra = "(Old)\n"..dismay.link;
  367.     end
  368.     self:SetWide(ScrW() / 2);
  369.     self:SetTall(40);
  370.     self:SetPos(ScrW() / 2 - self:GetWide() / 2, 0);
  371.     self:MakePopup();
  372.    
  373.     self.lbl1 = vgui.Create("DLabel", self);
  374.     self.lbl1:SetFont("BudgetLabel");
  375.     self.lbl1:SetText("DLL Version r"..dismay.rversion.." "..self.szExtra)
  376.     self.lbl1:SizeToContents();
  377.     self.lbl1:SetTextColor(self.colCur);
  378.     self.lbl1:SetPos(self:GetWide() / 2 - self.lbl1:GetWide() / 2, 2);
  379. end
  380.  
  381. vgui.Register("DVersionWin", PANEL, "EditablePanel")
  382.  
  383. dismay.VersionPanel = vgui.Create("DVersionWin");
  384.  
  385.  
  386. dismay.LuaPanel = false
  387. function dismay.CreateWindow()
  388.     if(IsValid(dismay.LuaPanel)) then return; end
  389.     dismay.LuaPanel = vgui.Create("DFrame");
  390.     dismay.LuaPanel:SetSize(300, 200);
  391.     dismay.LuaPanel:SetTitle("Lua Options");
  392.     dismay.Panel.Init(dismay.LuaPanel);
  393.     function dismay.LuaPanel:OnMousePressed()
  394.         dismay.Panel.OnMousePressed(self);
  395.     end
  396.     function dismay.LuaPanel:Think()
  397.         dismay.Panel.Think(self);
  398.     end
  399.     dismay.LuaPanel:Center()
  400.     local t = vgui.Create("DTextEntry", dismay.LuaPanel);
  401.     local b = vgui.Create("DComboBox", dismay.LuaPanel);
  402.     b:SetValue("CL - Run");
  403.     b:AddChoice("CL - Run");
  404.     b:AddChoice("CL - Open");
  405.     b:AddChoice("MN - Run");
  406.     b:AddChoice("MN - Open");
  407.  
  408.     b.m_pFunc = dismay.RunClient;
  409.  
  410.     dismay.LuaPanel.m_pText = t;
  411.     dismay.LuaPanel.m_pBox = b;
  412.  
  413.     function b:OnSelect(index, value, data)
  414.         if(index == 1) then
  415.             self.m_pFunc = dismay.RunClient;
  416.         elseif(index == 2) then
  417.             self.m_pFunc = dismay.OpenClient;
  418.         elseif(index == 3) then
  419.             self.m_pFunc = dismay.RunMenu;
  420.         elseif(index == 4) then
  421.             self.m_pFunc = dismay.OpenMenu;
  422.         end
  423.     end
  424.     function b:Think()
  425.         self:SetWide(self:GetParent():GetWide() * 3 / 4);
  426.         self:SetPos(self:GetParent():GetWide() / 2 - self:GetWide() / 2, 30);
  427.     end
  428.  
  429.     function t:Think()
  430.         self:SetWide(self:GetParent():GetWide() * 2 / 3);
  431.         self:SetTall(self:GetParent():GetTall() / 2);
  432.         self:SetPos(self:GetParent():GetWide() / 2 - self:GetWide() / 2, self:GetParent():GetTall() / 2 - self:GetTall() / 2 + 30)
  433.     end
  434.  
  435.     function t:OnEnter()
  436.         self:GetParent().m_pBox.m_pFunc(self:GetValue());
  437.     end
  438.  
  439.     dismay.LuaPanel:MakePopup();
  440. end
  441.  
  442. hook.Add("DrawOverlay", "H", function()
  443.     dismay.Paint();
  444. end);
  445.  
  446.  
  447. print("***[M] - Loaded");
  448. MsgC(Color(200,100, 100,255),[[
  449. *** - menu autorun file is C:\\dismay\\dismay_menu.lua
  450. *** - Hit insert to toggle menu input. Up/Down arrows go up and down on the menu.
  451. *** - Hit the right arrow to toggle the option highlighted.
  452. *** - G is speedhack key. Highlighted speedhack on top right is faster. (16 compared to 9 disabled)
  453. ]]);
  454. if(dismay.version == dismay.rversion) then
  455.     MsgC(Color(0,255,0,255), [[
  456. [!] - YOU HAVE THE LATEST VERSION.
  457. ]]);
  458. elseif(dismay.version > dismay.rversion) then
  459.     MsgC(Color(255,0,0,255), [[
  460. *** - YOU DON'T HAVE THE LATEST VERSION.
  461. *** - ]]..dismay.link..[[
  462. ]]);
  463. else
  464.     MsgC(Color(0,255,125,255), [[
  465. *** - YOU HAVE A DEV VERSION.
  466. ]]);
  467. end
  468.  
  469. MsgC(Color(0,255,200,255),"\n\n\tSpecial thanks to:\n\t\tNanoCat (for help)\n\t\tvec (for helping me learn)\n\t\tsasha\n\n");
Advertisement
Add Comment
Please, Sign In to add comment