Advertisement
TheDenVxUA

Untitled

Nov 3rd, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 19.13 KB | None | 0 0
  1. --[[ #NoSimplerr# ]]
  2. local function timeToStr(time)
  3.     local tmp = time
  4.     local s = tmp % 60
  5.     tmp = math.floor(tmp / 60)
  6.     local m = tmp % 60
  7.     tmp = math.floor(tmp / 60)
  8.     local h = tmp % 24
  9.     tmp = math.floor(tmp / 24)
  10.     local d = tmp % 7
  11.     local w = math.floor(tmp / 7)
  12.  
  13.     return string.format("%02iн %iд %02iч %02iм %02iс", w, d, h, m, s)
  14. end
  15.  
  16. -- position of the menu
  17. local C_CONFIG_POSITION = "right" -- left, right, top or bottom
  18. local Menu = {}
  19.  
  20. local function Option(title, icon, cmd, check)
  21.     table.insert(Menu, {
  22.         title = title,
  23.         icon = icon,
  24.         cmd = cmd,
  25.         check = check
  26.     })
  27. end
  28.  
  29. local function SubMenu(title, icon, func, check)
  30.     table.insert(Menu, {
  31.         title = title,
  32.         icon = icon,
  33.         func = func,
  34.         check = check
  35.     })
  36. end
  37.  
  38. local function Spacer(check)
  39.     table.insert(Menu, {
  40.         check = check
  41.     })
  42. end
  43.  
  44. local function Request(title, text, func)
  45.     return function()
  46.         Derma_StringRequest(DarkRP.getPhrase(title) or title, DarkRP.getPhrase(text) or text, nil, function(s)
  47.             func(s)
  48.         end)
  49.     end
  50. end
  51.  
  52. local function isCP()
  53.     return LocalPlayer():isCP()
  54. end
  55. --[[ ТЕЛЕФОН И ПРОЧЕЕ ]] --
  56. Option("Службы", "icon16/newspaper.png",  function()
  57.  
  58.     RunConsoleCommand("say", "/services")
  59.  
  60. end)
  61.  
  62. Option("ЗАСТРЯЛ!", "icon16/brick_error.png",  function()
  63.  
  64.     RunConsoleCommand("say", "!stuck")
  65.  
  66. end)
  67.  
  68. Option("Мусорный Пакет", "icon16/package.png",  function()
  69.  
  70.     RunConsoleCommand("say", "/buytrashbag")
  71. end, function() return ULib.ucl.query(LocalPlayer(), "say", "/buytrashbag") end)
  72.  
  73. Option("Банда", "icon16/flag_red.png",  function()
  74.  
  75.     RunConsoleCommand("say", "!gang")
  76.  
  77. end)
  78.  
  79. Option("Управление Битмайнерами", "materials/s_phone.png",  function()
  80.  
  81.     RunConsoleCommand("say", "!remotebitminers")
  82.  
  83. end)
  84.  
  85. Option("Прглашения в БАНДУ", "icon16/flag_red.png",  function()
  86.  
  87.     RunConsoleCommand("say", "!ganginvites")
  88.  
  89. end)
  90.  
  91.  
  92. Option("Ввести купон", "icon16/css.png",  function()
  93.  
  94.     RunConsoleCommand("say", "/promo")
  95.  
  96. end)
  97.  
  98.  
  99. --[[ YOU CAN EDIT STUFF BELOW THIS POINT ]]
  100. --[[*
  101.  * Начало кнопок денежных операций
  102.  ]]
  103. Option("Бросить денег", "icon16/money_delete.png", Request("Бросить денег", "Сколько денег вы хотите бросить?", function(s)
  104.     RunConsoleCommand("darkrp", "dropmoney", s)
  105. end))
  106.  
  107. Option("Дать денег тому, на кого смотрите", "icon16/money.png", Request("Дать денег", "Сколько денег вы хотите дать?", function(s)
  108.     RunConsoleCommand("darkrp", "give", s)
  109. end))
  110.  
  111. SubMenu("Выписать чек", "icon16/script_edit.png", function(self)
  112.     for k, v in pairs(player.GetAll()) do
  113.         if v == LocalPlayer() then continue end
  114.  
  115.         self:AddOption(v:Name(), Request("Выписка чека", "Сколько денег должен получить человек?", function(s)
  116.             RunConsoleCommand("darkrp", "cheque", v:UserID(), s)
  117.         end)):SetColor(v:getJobTable().color)
  118.     end
  119. end)
  120.  
  121. --[[
  122. Option("Симон", "materials/gta5hud/radar/simon.png",  function()
  123.  
  124.     RunConsoleCommand("say", "!mission")
  125.  
  126. end)
  127. ]]
  128.  
  129. --[[Option("Организация", "icon16/group.png",  function()
  130.  
  131.     RunConsoleCommand("say", "!orgmenu")
  132.  
  133. end)]]
  134.  
  135. --[[
  136. Option("Реферальная система", "icon16/coins.png",  function()
  137.  
  138.     RunConsoleCommand("say", "!rewardmenu")
  139.  
  140. end)
  141. ]]
  142.  
  143. Option("Приглашения на работу", "icon16/coins.png",  function()
  144.  
  145.     RunConsoleCommand("say", "/jobs")
  146.  
  147. end)
  148.  
  149.  
  150. Option("Меню заказов киллера", "icon16/database_table.png",  function()
  151.  
  152.     RunConsoleCommand("say", "!hits")
  153.  
  154. end)
  155. --[[
  156. Option("Админ Меню киллера", "materials/services/knife.png",  function()
  157.  
  158.     RunConsoleCommand("say", "!hitsconfig")
  159.  
  160. end)
  161. ]]--
  162. Option("Подать заказ на убийство игрока", "icon16/script_go.png",  function()
  163.  
  164.     RunConsoleCommand("say", "!placehit")
  165.  
  166. end)
  167.  
  168. --[[Option("Законы", "icon16/application_view_list.png",  function()
  169.  
  170.     RunConsoleCommand("say", "/law")
  171.  
  172. end) ]]
  173.  
  174.  
  175.  
  176. --[[*
  177.  * Начало общих кнопок
  178.  ]]
  179. Spacer()
  180.  
  181. Option("Поддержка", "icon16/award_star_add.png",  function()
  182.  
  183.     RunConsoleCommand("support")
  184.  
  185. end)
  186.  
  187. Spacer()
  188.  
  189. Option("Выбросить оружие", "icon16/gun.png", function()
  190.     RunConsoleCommand("darkrp", "dropweapon")
  191. end)
  192.  
  193. SubMenu("Понизить игрока", "icon16/user_delete.png", function(self)
  194.     for k, v in pairs(player.GetAll()) do
  195.         if v == LocalPlayer() then continue end
  196.  
  197.         self:AddOption(v:Name(), Request("Понизить игрока", "За что вы хотите его понизить?", function(s)
  198.             RunConsoleCommand("darkrp", "demote", v:UserID(), s)
  199.         end)):SetColor(v:getJobTable().color)
  200.     end
  201. end)
  202. --[[
  203. Option("Сменить имя", "icon16/vcard_edit.png", Request("Смена имени", "Как вы хотите называться? Вводите корректные имена", function(s)
  204.     RunConsoleCommand("darkrp", "rpname", s)
  205. end))
  206.  
  207.  
  208. Option("Уникальная работа", "icon16/user.png", Request("Получение уникальной работы", "Введите имя уникальной работы. Например \"бизнесмен\"", function(s)
  209.     RunConsoleCommand("darkrp", "job", s)
  210. end))
  211. ]]
  212. --[[*
  213.  * Начало кнопок для ГО
  214.  ]]
  215. Spacer(isCP)
  216.  
  217. SubMenu("Повесить розыск", "icon16/flag_red.png", function(self)
  218.     for k, v in pairs(player.GetAll()) do
  219.         if v == LocalPlayer() then continue end
  220.  
  221.         if not v:isWanted() then
  222.             self:AddOption(v:Name(), Request("Повесить розыск", "Для чего вы ищите его?", function(s)
  223.                 RunConsoleCommand("darkrp", "wanted", v:UserID(), s)
  224.             end)):SetColor(v:getJobTable().color)
  225.         end
  226.     end
  227. end, isCP)
  228.  
  229. SubMenu("Снять розыск", "icon16/flag_green.png", function(self)
  230.     for k, v in pairs(player.GetAll()) do
  231.         if v:isWanted() then
  232.             self:AddOption(v:Name(), function()
  233.                 RunConsoleCommand("darkrp", "unwanted", v:UserID(), s)
  234.             end):SetColor(v:getJobTable().color)
  235.         end
  236.     end
  237. end, isCP)
  238.  
  239. SubMenu("Запросить ордер", "icon16/door_in.png", function(self)
  240.     for k, v in pairs(player.GetAll()) do
  241.         if v == LocalPlayer() then continue end
  242.  
  243.         self:AddOption(v:Name(), function(s)
  244.             RunConsoleCommand("darkrp", "warrant", v:UserID(), s)
  245.         end):SetColor(v:getJobTable().color)
  246.     end
  247. end, isCP)
  248.  
  249. Option("Выдать лицензию", "icon16/page_add.png", function(self)
  250.     RunConsoleCommand("darkrp", "givelicense")
  251. end, function()
  252.     local ply = LocalPlayer()
  253.     local noMayorExists = fn.Compose{fn.Null, fn.Curry(fn.Filter, 2)(ply.isMayor), player.GetAll}
  254.     local noChiefExists = fn.Compose{fn.Null, fn.Curry(fn.Filter, 2)(ply.isChief), player.GetAll}
  255.     local canGiveLicense = fn.FOr{ply.isMayor, fn.FAnd{ply.isChief, noMayorExists}, fn.FAnd{ply.isCP, noChiefExists, noMayorExists}}
  256.  
  257.     -- Mayors can hand out licenses
  258.     -- Chiefs can if there is no mayor
  259.     -- CP's can if there are no chiefs nor mayors
  260.     return canGiveLicense(ply)
  261. end)
  262.  
  263. --[[*
  264.  * Начало кнопок для мэра
  265.  ]]
  266. Spacer(function() return LocalPlayer():isMayor() end)
  267.  
  268. Option("Объявить ком. час", "icon16/stop.png", function()
  269.     RunConsoleCommand("darkrp", "lockdown")
  270. end, function() return LocalPlayer():isMayor() and not GetGlobalBool("DarkRP_LockDown") end)
  271.  
  272. Option("Отменить ком. час", "icon16/stop.png", function()
  273.     RunConsoleCommand("darkrp", "unlockdown")
  274. end, function() return LocalPlayer():isMayor() and GetGlobalBool("DarkRP_LockDown") end)
  275.  
  276. Option("Дать задание", "icon16/application.png",
  277.     Request("Дать задание", "Что нужно делать?", function(s)
  278.         RunConsoleCommand("darkrp", "agenda", s)
  279.     end),
  280. function()
  281.     for k, v in pairs(DarkRPAgendas) do
  282.         if type(v.Manager) == "table" then
  283.             if table.HasValue(v.Manager, LocalPlayer():Team()) then return true end
  284.         elseif v.Manager == LocalPlayer():Team() then
  285.             return true
  286.         end
  287.     end
  288. end)
  289.  
  290. Spacer()
  291.  
  292.  
  293. SubMenu("Показать SteamID", "icon16/tag_green.png", function(self)
  294.  
  295.     for k, v in pairs(player.GetAll()) do
  296.  
  297.         self:AddOption(v:Name() .. " - " .. v:SteamID(), function()
  298.  
  299.             SetClipboardText(time)
  300.  
  301.             LocalPlayer():ChatPrint("SteamID скопирован в буфер обмена")
  302.  
  303.         end):SetColor(v:getJobTable().color)
  304.  
  305.     end
  306.  
  307. end)
  308.  
  309.  
  310. SubMenu("Телепортироваться к", "icon16/arrow_up.png", function(self)
  311.     for k, v in pairs(player.GetAll()) do
  312.         if v == LocalPlayer() then continue end
  313.  
  314.         self:AddOption(v:Nick(), function()
  315.             RunConsoleCommand("ulx", "goto", v:Nick())
  316.         end):SetColor(v:getJobTable().color)
  317.     end
  318. end, function() return ULib.ucl.query(LocalPlayer(), "ulx goto") end)
  319.  
  320. SubMenu("Вернуть", "icon16/arrow_up.png", function(self)
  321.     for k, v in pairs(player.GetAll()) do
  322.         if v == LocalPlayer() then continue end
  323.  
  324.         self:AddOption(v:Nick(), function()
  325.             RunConsoleCommand("ulx", "return", v:Nick())
  326.         end):SetColor(v:getJobTable().color)
  327.     end
  328. end, function() return ULib.ucl.query(LocalPlayer(), "ulx return") end)
  329.  
  330. SubMenu("Телепортировать к себе ", "icon16/arrow_up.png", function(self)
  331.     for k, v in pairs(player.GetAll()) do
  332.         if v == LocalPlayer() then continue end
  333.  
  334.         self:AddOption(v:Nick(), function()
  335.             RunConsoleCommand("ulx", "bring", v:Nick())
  336.         end):SetColor(v:getJobTable().color)
  337.     end
  338. end, function() return ULib.ucl.query(LocalPlayer(), "ulx bring") end)
  339. SubMenu("ULX Cmds", "icon16/application_xp_terminal.png", function(self)
  340.  
  341.     self:AddOption("Невидимость", function()
  342.         RunConsoleCommand("ulx", "cloak")
  343.     end):SetIcon("icon16/status_offline.png")
  344.  
  345.     self:AddOption("Видимость", function()
  346.         RunConsoleCommand("ulx", "uncloak")
  347.     end):SetIcon("icon16/status_offline.png")
  348.  
  349.     self:AddOption("Бессмертие", function()
  350.         RunConsoleCommand("ulx", "god")
  351.     end):SetIcon("icon16/shield.png")
  352.  
  353.     self:AddOption("Смертие", function()
  354.         RunConsoleCommand("ulx", "ungod")
  355.     end):SetIcon("icon16/shield.png")
  356. end, function() return LocalPlayer():IsAdmin() end)
  357.  
  358. Option("Ноуклип", "icon16/arrow_out.png", function()
  359.     RunConsoleCommand("ulx", "noclip")
  360. end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
  361.  
  362. Option("АДМИН МЕНЮ КИЛЛЕРА", "icon16/arrow_out.png", function()
  363.     RunConsoleCommand("say", "!hitsconfig")
  364. end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
  365.  
  366. Option("!Reviveme", "icon16/shield.png", function()
  367.     RunConsoleCommand("say", "!reviveme")
  368. end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
  369.  
  370. --[[ DO NOT EDIT STUFF BELOW THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING ]]
  371. local menu
  372.  
  373. hook.Add("OnContextMenuOpen", "CMenuOnContextMenuOpen", function()
  374.     if not g_ContextMenu:IsVisible() then
  375.         local orig = g_ContextMenu.Open
  376.  
  377.         g_ContextMenu.Open = function(self, ...)
  378.             self.Open = orig
  379.             orig(self, ...)
  380.             menu = vgui.Create("CMenuExtension")
  381.             menu:SetDrawOnTop(false)
  382.  
  383.             for k, v in pairs(Menu) do
  384.                 if not v.check or v.check() then
  385.                     if v.cmd then
  386.                         menu:AddOption(v.title, isfunction(v.cmd) and v.cmd or function()
  387.                             RunConsoleCommand(v.cmd)
  388.                         end):SetImage(v.icon)
  389.                     elseif v.func then
  390.                         local m, s = menu:AddSubMenu(v.title)
  391.                         s:SetImage(v.icon)
  392.                         v.func(m)
  393.                     else
  394.                         menu:AddSpacer()
  395.                     end
  396.                 end
  397.             end
  398.  
  399.             menu:Open()
  400.  
  401.             if C_CONFIG_POSITION == "bottom" then
  402.                 menu:CenterHorizontal()
  403.                 menu.y = ScrH()
  404.                 menu:MoveTo(menu.x, ScrH() - menu:GetTall() - 8, .1, 0)
  405.             elseif C_CONFIG_POSITION == "right" then
  406.                 menu:CenterVertical()
  407.                 menu.x = ScrW()
  408.                 menu:MoveTo(ScrW() - menu:GetWide() - 8, menu.y, .1, 0)
  409.             elseif C_CONFIG_POSITION == "left" then
  410.                 menu:CenterVertical()
  411.                 menu.x = -menu:GetWide()
  412.                 menu:MoveTo(8, menu.y, .1, 0)
  413.             else
  414.                 menu:CenterHorizontal()
  415.                 menu.y = -menu:GetTall()
  416.                 menu:MoveTo(menu.x, 30 + 8, .1, 0)
  417.             end
  418.  
  419.             menu:MakePopup()
  420.         end
  421.     end
  422. end)
  423.  
  424. hook.Add("CloseDermaMenus", "CMenuCloseDermaMenus", function()
  425.     if menu and menu:IsValid() then
  426.         menu:MakePopup()
  427.     end
  428. end)
  429.  
  430. hook.Add("OnContextMenuClose", "CMenuOnContextMenuClose", function()
  431.     menu:Remove()
  432. end)
  433.  
  434. --[[   _                                
  435.     ( )                              
  436.    _| |   __   _ __   ___ ___     _ _
  437.  /'_` | /'__`\( '__)/' _ ` _ `\ /'_` )
  438. ( (_| |(  ___/| |   | ( ) ( ) |( (_| |
  439. `\__,_)`\____)(_)   (_) (_) (_)`\__,_)
  440.     DMenu
  441. --]]
  442. local PANEL = {}
  443. AccessorFunc(PANEL, "m_bBorder", "DrawBorder")
  444. AccessorFunc(PANEL, "m_bDeleteSelf", "DeleteSelf")
  445. AccessorFunc(PANEL, "m_iMinimumWidth", "MinimumWidth")
  446. AccessorFunc(PANEL, "m_bDrawColumn", "DrawColumn")
  447. AccessorFunc(PANEL, "m_iMaxHeight", "MaxHeight")
  448. AccessorFunc(PANEL, "m_pOpenSubMenu", "OpenSubMenu")
  449.  
  450. --[[---------------------------------------------------------
  451.     Init
  452. -----------------------------------------------------------]]
  453. function PANEL:Init()
  454.     self:SetIsMenu(true)
  455.     self:SetDrawBorder(true)
  456.     self:SetPaintBackground(true)
  457.     self:SetMinimumWidth(100)
  458.     self:SetDrawOnTop(true)
  459.     self:SetMaxHeight(ScrH() * 0.9)
  460.     self:SetDeleteSelf(true)
  461.     self:SetPadding(0)
  462. end
  463.  
  464. --[[---------------------------------------------------------
  465.     AddPanel
  466. -----------------------------------------------------------]]
  467. function PANEL:AddPanel(pnl)
  468.     self:AddItem(pnl)
  469.     pnl.ParentMenu = self
  470. end
  471.  
  472. --[[---------------------------------------------------------
  473.     AddOption
  474. -----------------------------------------------------------]]
  475. function PANEL:AddOption(strText, funcFunction)
  476.     local pnl = vgui.Create("DMenuOption", self)
  477.     pnl:SetMenu(self)
  478.     pnl:SetText(strText)
  479.  
  480.     if (funcFunction) then
  481.         pnl.DoClick = funcFunction
  482.     end
  483.  
  484.     self:AddPanel(pnl)
  485.  
  486.     return pnl
  487. end
  488.  
  489. --[[---------------------------------------------------------
  490.     AddCVar
  491. -----------------------------------------------------------]]
  492. function PANEL:AddCVar(strText, convar, on, off, funcFunction)
  493.     local pnl = vgui.Create("DMenuOptionCVar", self)
  494.     pnl:SetMenu(self)
  495.     pnl:SetText(strText)
  496.  
  497.     if (funcFunction) then
  498.         pnl.DoClick = funcFunction
  499.     end
  500.  
  501.     pnl:SetConVar(convar)
  502.     pnl:SetValueOn(on)
  503.     pnl:SetValueOff(off)
  504.     self:AddPanel(pnl)
  505.  
  506.     return pnl
  507. end
  508.  
  509. --[[---------------------------------------------------------
  510.     AddSpacer
  511. -----------------------------------------------------------]]
  512. function PANEL:AddSpacer(strText, funcFunction)
  513.     local pnl = vgui.Create("DPanel", self)
  514.  
  515.     pnl.Paint = function(p, w, h)
  516.         surface.SetDrawColor(Color(0, 0, 0, 100))
  517.         surface.DrawRect(0, 0, w, h)
  518.     end
  519.  
  520.     pnl:SetTall(1)
  521.     self:AddPanel(pnl)
  522.  
  523.     return pnl
  524. end
  525.  
  526. --[[---------------------------------------------------------
  527.     AddSubMenu
  528. -----------------------------------------------------------]]
  529. function PANEL:AddSubMenu(strText, funcFunction)
  530.     local pnl = vgui.Create("DMenuOption", self)
  531.     local SubMenu = pnl:AddSubMenu(strText, funcFunction)
  532.     pnl:SetText(strText)
  533.  
  534.     if (funcFunction) then
  535.         pnl.DoClick = funcFunction
  536.     end
  537.  
  538.     self:AddPanel(pnl)
  539.  
  540.     return SubMenu, pnl
  541. end
  542.  
  543. --[[---------------------------------------------------------
  544.     Hide
  545. -----------------------------------------------------------]]
  546. function PANEL:Hide()
  547.     local openmenu = self:GetOpenSubMenu()
  548.  
  549.     if (openmenu) then
  550.         openmenu:Hide()
  551.     end
  552.  
  553.     self:SetVisible(false)
  554.     self:SetOpenSubMenu(nil)
  555. end
  556.  
  557. --[[---------------------------------------------------------
  558.     OpenSubMenu
  559. -----------------------------------------------------------]]
  560. function PANEL:OpenSubMenu(item, menu)
  561.     -- Do we already have a menu open?
  562.     local openmenu = self:GetOpenSubMenu()
  563.  
  564.     if (IsValid(openmenu)) then
  565.         -- Don't open it again!
  566.         if (menu and openmenu == menu) then return end
  567.         -- Close it!
  568.         self:CloseSubMenu(openmenu)
  569.     end
  570.  
  571.     if (not IsValid(menu)) then return end
  572.     local x, y = item:LocalToScreen(self:GetWide(), 0)
  573.     menu:Open(x - 3, y, false, item)
  574.     self:SetOpenSubMenu(menu)
  575. end
  576.  
  577. --[[---------------------------------------------------------
  578.     CloseSubMenu
  579. -----------------------------------------------------------]]
  580. function PANEL:CloseSubMenu(menu)
  581.     menu:Hide()
  582.     self:SetOpenSubMenu(nil)
  583. end
  584.  
  585. --[[---------------------------------------------------------
  586.     Paint
  587. -----------------------------------------------------------]]
  588. function PANEL:Paint(w, h)
  589.     if (not self:GetPaintBackground()) then return end
  590.     derma.SkinHook("Paint", "Menu", self, w, h)
  591.  
  592.     return true
  593. end
  594.  
  595. function PANEL:ChildCount()
  596.     return #self:GetCanvas():GetChildren()
  597. end
  598.  
  599. function PANEL:GetChild(num)
  600.     return self:GetCanvas():GetChildren()[num]
  601. end
  602.  
  603. --[[---------------------------------------------------------
  604.     PerformLayout
  605. -----------------------------------------------------------]]
  606. function PANEL:PerformLayout()
  607.     local w = self:GetMinimumWidth()
  608.  
  609.     -- Find the widest one
  610.     for k, pnl in pairs(self:GetCanvas():GetChildren()) do
  611.         pnl:PerformLayout()
  612.         w = math.max(w, pnl:GetWide())
  613.     end
  614.  
  615.     self:SetWide(w)
  616.     local y = 0 -- for padding
  617.  
  618.     for k, pnl in pairs(self:GetCanvas():GetChildren()) do
  619.         pnl:SetWide(w)
  620.         pnl:SetPos(0, y)
  621.         pnl:InvalidateLayout(true)
  622.         y = y + pnl:GetTall()
  623.     end
  624.  
  625.     y = math.min(y, self:GetMaxHeight())
  626.     self:SetTall(y)
  627.     derma.SkinHook("Layout", "Menu", self)
  628.     DScrollPanel.PerformLayout(self)
  629. end
  630.  
  631. --[[---------------------------------------------------------
  632.     Open - Opens the menu.
  633.     x and y are optional, if they're not provided the menu
  634.         will appear at the cursor.
  635. -----------------------------------------------------------]]
  636. function PANEL:Open(x, y, skipanimation, ownerpanel)
  637.     local maunal = x and y
  638.     x = x or gui.MouseX()
  639.     y = y or gui.MouseY()
  640.     local OwnerHeight = 0
  641.     local OwnerWidth = 0
  642.  
  643.     if (ownerpanel) then
  644.         OwnerWidth, OwnerHeight = ownerpanel:GetSize()
  645.     end
  646.  
  647.     self:PerformLayout()
  648.     local w = self:GetWide()
  649.     local h = self:GetTall()
  650.     self:SetSize(w, h)
  651.  
  652.     if (y + h > ScrH()) then
  653.         y = ((maunal and ScrH()) or (y + OwnerHeight)) - h
  654.     end
  655.  
  656.     if (x + w > ScrW()) then
  657.         x = ((maunal and ScrW()) or x) - w
  658.     end
  659.  
  660.     if (y < 1) then
  661.         y = 1
  662.     end
  663.  
  664.     if (x < 1) then
  665.         x = 1
  666.     end
  667.  
  668.     self:SetPos(x, y)
  669.     -- Popup!
  670.     self:MakePopup()
  671.     -- Make sure it's visible!
  672.     self:SetVisible(true)
  673.     -- Keep the mouse active while the menu is visible.
  674.     self:SetKeyboardInputEnabled(false)
  675. end
  676.  
  677. --
  678. -- Called by DMenuOption
  679. --
  680. function PANEL:OptionSelectedInternal(option)
  681.     self:OptionSelected(option, option:GetText())
  682. end
  683.  
  684. function PANEL:OptionSelected(option, text)
  685. end
  686.  
  687. -- For override
  688. function PANEL:ClearHighlights()
  689.     for k, pnl in pairs(self:GetCanvas():GetChildren()) do
  690.         pnl.Highlight = nil
  691.     end
  692. end
  693.  
  694. function PANEL:HighlightItem(item)
  695.     for k, pnl in pairs(self:GetCanvas():GetChildren()) do
  696.         if (pnl == item) then
  697.             pnl.Highlight = true
  698.         end
  699.     end
  700. end
  701.  
  702. --[[---------------------------------------------------------
  703.    Name: GenerateExample
  704. -----------------------------------------------------------]]
  705. function PANEL:GenerateExample(ClassName, PropertySheet, Width, Height)
  706. end
  707.  
  708. derma.DefineControl("CMenuExtension", "A Menu", PANEL, "DScrollPanel")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement