Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ #NoSimplerr# ]]
- local function timeToStr(time)
- local tmp = time
- local s = tmp % 60
- tmp = math.floor(tmp / 60)
- local m = tmp % 60
- tmp = math.floor(tmp / 60)
- local h = tmp % 24
- tmp = math.floor(tmp / 24)
- local d = tmp % 7
- local w = math.floor(tmp / 7)
- return string.format("%02iн %iд %02iч %02iм %02iс", w, d, h, m, s)
- end
- -- position of the menu
- local C_CONFIG_POSITION = "right" -- left, right, top or bottom
- local Menu = {}
- local function Option(title, icon, cmd, check)
- table.insert(Menu, {
- title = title,
- icon = icon,
- cmd = cmd,
- check = check
- })
- end
- local function SubMenu(title, icon, func, check)
- table.insert(Menu, {
- title = title,
- icon = icon,
- func = func,
- check = check
- })
- end
- local function Spacer(check)
- table.insert(Menu, {
- check = check
- })
- end
- local function Request(title, text, func)
- return function()
- Derma_StringRequest(DarkRP.getPhrase(title) or title, DarkRP.getPhrase(text) or text, nil, function(s)
- func(s)
- end)
- end
- end
- local function isCP()
- return LocalPlayer():isCP()
- end
- --[[ ТЕЛЕФОН И ПРОЧЕЕ ]] --
- Option("Службы", "icon16/newspaper.png", function()
- RunConsoleCommand("say", "/services")
- end)
- Option("ЗАСТРЯЛ!", "icon16/brick_error.png", function()
- RunConsoleCommand("say", "!stuck")
- end)
- Option("Мусорный Пакет", "icon16/package.png", function()
- RunConsoleCommand("say", "/buytrashbag")
- end, function() return ULib.ucl.query(LocalPlayer(), "say", "/buytrashbag") end)
- Option("Банда", "icon16/flag_red.png", function()
- RunConsoleCommand("say", "!gang")
- end)
- Option("Управление Битмайнерами", "materials/s_phone.png", function()
- RunConsoleCommand("say", "!remotebitminers")
- end)
- Option("Прглашения в БАНДУ", "icon16/flag_red.png", function()
- RunConsoleCommand("say", "!ganginvites")
- end)
- Option("Ввести купон", "icon16/css.png", function()
- RunConsoleCommand("say", "/promo")
- end)
- --[[ YOU CAN EDIT STUFF BELOW THIS POINT ]]
- --[[*
- * Начало кнопок денежных операций
- ]]
- Option("Бросить денег", "icon16/money_delete.png", Request("Бросить денег", "Сколько денег вы хотите бросить?", function(s)
- RunConsoleCommand("darkrp", "dropmoney", s)
- end))
- Option("Дать денег тому, на кого смотрите", "icon16/money.png", Request("Дать денег", "Сколько денег вы хотите дать?", function(s)
- RunConsoleCommand("darkrp", "give", s)
- end))
- SubMenu("Выписать чек", "icon16/script_edit.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Name(), Request("Выписка чека", "Сколько денег должен получить человек?", function(s)
- RunConsoleCommand("darkrp", "cheque", v:UserID(), s)
- end)):SetColor(v:getJobTable().color)
- end
- end)
- --[[
- Option("Симон", "materials/gta5hud/radar/simon.png", function()
- RunConsoleCommand("say", "!mission")
- end)
- ]]
- --[[Option("Организация", "icon16/group.png", function()
- RunConsoleCommand("say", "!orgmenu")
- end)]]
- --[[
- Option("Реферальная система", "icon16/coins.png", function()
- RunConsoleCommand("say", "!rewardmenu")
- end)
- ]]
- Option("Приглашения на работу", "icon16/coins.png", function()
- RunConsoleCommand("say", "/jobs")
- end)
- Option("Меню заказов киллера", "icon16/database_table.png", function()
- RunConsoleCommand("say", "!hits")
- end)
- --[[
- Option("Админ Меню киллера", "materials/services/knife.png", function()
- RunConsoleCommand("say", "!hitsconfig")
- end)
- ]]--
- Option("Подать заказ на убийство игрока", "icon16/script_go.png", function()
- RunConsoleCommand("say", "!placehit")
- end)
- --[[Option("Законы", "icon16/application_view_list.png", function()
- RunConsoleCommand("say", "/law")
- end) ]]
- --[[*
- * Начало общих кнопок
- ]]
- Spacer()
- Option("Поддержка", "icon16/award_star_add.png", function()
- RunConsoleCommand("support")
- end)
- Spacer()
- Option("Выбросить оружие", "icon16/gun.png", function()
- RunConsoleCommand("darkrp", "dropweapon")
- end)
- SubMenu("Понизить игрока", "icon16/user_delete.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Name(), Request("Понизить игрока", "За что вы хотите его понизить?", function(s)
- RunConsoleCommand("darkrp", "demote", v:UserID(), s)
- end)):SetColor(v:getJobTable().color)
- end
- end)
- --[[
- Option("Сменить имя", "icon16/vcard_edit.png", Request("Смена имени", "Как вы хотите называться? Вводите корректные имена", function(s)
- RunConsoleCommand("darkrp", "rpname", s)
- end))
- Option("Уникальная работа", "icon16/user.png", Request("Получение уникальной работы", "Введите имя уникальной работы. Например \"бизнесмен\"", function(s)
- RunConsoleCommand("darkrp", "job", s)
- end))
- ]]
- --[[*
- * Начало кнопок для ГО
- ]]
- Spacer(isCP)
- SubMenu("Повесить розыск", "icon16/flag_red.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- if not v:isWanted() then
- self:AddOption(v:Name(), Request("Повесить розыск", "Для чего вы ищите его?", function(s)
- RunConsoleCommand("darkrp", "wanted", v:UserID(), s)
- end)):SetColor(v:getJobTable().color)
- end
- end
- end, isCP)
- SubMenu("Снять розыск", "icon16/flag_green.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v:isWanted() then
- self:AddOption(v:Name(), function()
- RunConsoleCommand("darkrp", "unwanted", v:UserID(), s)
- end):SetColor(v:getJobTable().color)
- end
- end
- end, isCP)
- SubMenu("Запросить ордер", "icon16/door_in.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Name(), function(s)
- RunConsoleCommand("darkrp", "warrant", v:UserID(), s)
- end):SetColor(v:getJobTable().color)
- end
- end, isCP)
- Option("Выдать лицензию", "icon16/page_add.png", function(self)
- RunConsoleCommand("darkrp", "givelicense")
- end, function()
- local ply = LocalPlayer()
- local noMayorExists = fn.Compose{fn.Null, fn.Curry(fn.Filter, 2)(ply.isMayor), player.GetAll}
- local noChiefExists = fn.Compose{fn.Null, fn.Curry(fn.Filter, 2)(ply.isChief), player.GetAll}
- local canGiveLicense = fn.FOr{ply.isMayor, fn.FAnd{ply.isChief, noMayorExists}, fn.FAnd{ply.isCP, noChiefExists, noMayorExists}}
- -- Mayors can hand out licenses
- -- Chiefs can if there is no mayor
- -- CP's can if there are no chiefs nor mayors
- return canGiveLicense(ply)
- end)
- --[[*
- * Начало кнопок для мэра
- ]]
- Spacer(function() return LocalPlayer():isMayor() end)
- Option("Объявить ком. час", "icon16/stop.png", function()
- RunConsoleCommand("darkrp", "lockdown")
- end, function() return LocalPlayer():isMayor() and not GetGlobalBool("DarkRP_LockDown") end)
- Option("Отменить ком. час", "icon16/stop.png", function()
- RunConsoleCommand("darkrp", "unlockdown")
- end, function() return LocalPlayer():isMayor() and GetGlobalBool("DarkRP_LockDown") end)
- Option("Дать задание", "icon16/application.png",
- Request("Дать задание", "Что нужно делать?", function(s)
- RunConsoleCommand("darkrp", "agenda", s)
- end),
- function()
- for k, v in pairs(DarkRPAgendas) do
- if type(v.Manager) == "table" then
- if table.HasValue(v.Manager, LocalPlayer():Team()) then return true end
- elseif v.Manager == LocalPlayer():Team() then
- return true
- end
- end
- end)
- Spacer()
- SubMenu("Показать SteamID", "icon16/tag_green.png", function(self)
- for k, v in pairs(player.GetAll()) do
- self:AddOption(v:Name() .. " - " .. v:SteamID(), function()
- SetClipboardText(time)
- LocalPlayer():ChatPrint("SteamID скопирован в буфер обмена")
- end):SetColor(v:getJobTable().color)
- end
- end)
- SubMenu("Телепортироваться к", "icon16/arrow_up.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Nick(), function()
- RunConsoleCommand("ulx", "goto", v:Nick())
- end):SetColor(v:getJobTable().color)
- end
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx goto") end)
- SubMenu("Вернуть", "icon16/arrow_up.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Nick(), function()
- RunConsoleCommand("ulx", "return", v:Nick())
- end):SetColor(v:getJobTable().color)
- end
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx return") end)
- SubMenu("Телепортировать к себе ", "icon16/arrow_up.png", function(self)
- for k, v in pairs(player.GetAll()) do
- if v == LocalPlayer() then continue end
- self:AddOption(v:Nick(), function()
- RunConsoleCommand("ulx", "bring", v:Nick())
- end):SetColor(v:getJobTable().color)
- end
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx bring") end)
- SubMenu("ULX Cmds", "icon16/application_xp_terminal.png", function(self)
- self:AddOption("Невидимость", function()
- RunConsoleCommand("ulx", "cloak")
- end):SetIcon("icon16/status_offline.png")
- self:AddOption("Видимость", function()
- RunConsoleCommand("ulx", "uncloak")
- end):SetIcon("icon16/status_offline.png")
- self:AddOption("Бессмертие", function()
- RunConsoleCommand("ulx", "god")
- end):SetIcon("icon16/shield.png")
- self:AddOption("Смертие", function()
- RunConsoleCommand("ulx", "ungod")
- end):SetIcon("icon16/shield.png")
- end, function() return LocalPlayer():IsAdmin() end)
- Option("Ноуклип", "icon16/arrow_out.png", function()
- RunConsoleCommand("ulx", "noclip")
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
- Option("АДМИН МЕНЮ КИЛЛЕРА", "icon16/arrow_out.png", function()
- RunConsoleCommand("say", "!hitsconfig")
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
- Option("!Reviveme", "icon16/shield.png", function()
- RunConsoleCommand("say", "!reviveme")
- end, function() return ULib.ucl.query(LocalPlayer(), "ulx noclip") end)
- --[[ DO NOT EDIT STUFF BELOW THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING ]]
- local menu
- hook.Add("OnContextMenuOpen", "CMenuOnContextMenuOpen", function()
- if not g_ContextMenu:IsVisible() then
- local orig = g_ContextMenu.Open
- g_ContextMenu.Open = function(self, ...)
- self.Open = orig
- orig(self, ...)
- menu = vgui.Create("CMenuExtension")
- menu:SetDrawOnTop(false)
- for k, v in pairs(Menu) do
- if not v.check or v.check() then
- if v.cmd then
- menu:AddOption(v.title, isfunction(v.cmd) and v.cmd or function()
- RunConsoleCommand(v.cmd)
- end):SetImage(v.icon)
- elseif v.func then
- local m, s = menu:AddSubMenu(v.title)
- s:SetImage(v.icon)
- v.func(m)
- else
- menu:AddSpacer()
- end
- end
- end
- menu:Open()
- if C_CONFIG_POSITION == "bottom" then
- menu:CenterHorizontal()
- menu.y = ScrH()
- menu:MoveTo(menu.x, ScrH() - menu:GetTall() - 8, .1, 0)
- elseif C_CONFIG_POSITION == "right" then
- menu:CenterVertical()
- menu.x = ScrW()
- menu:MoveTo(ScrW() - menu:GetWide() - 8, menu.y, .1, 0)
- elseif C_CONFIG_POSITION == "left" then
- menu:CenterVertical()
- menu.x = -menu:GetWide()
- menu:MoveTo(8, menu.y, .1, 0)
- else
- menu:CenterHorizontal()
- menu.y = -menu:GetTall()
- menu:MoveTo(menu.x, 30 + 8, .1, 0)
- end
- menu:MakePopup()
- end
- end
- end)
- hook.Add("CloseDermaMenus", "CMenuCloseDermaMenus", function()
- if menu and menu:IsValid() then
- menu:MakePopup()
- end
- end)
- hook.Add("OnContextMenuClose", "CMenuOnContextMenuClose", function()
- menu:Remove()
- end)
- --[[ _
- ( )
- _| | __ _ __ ___ ___ _ _
- /'_` | /'__`\( '__)/' _ ` _ `\ /'_` )
- ( (_| |( ___/| | | ( ) ( ) |( (_| |
- `\__,_)`\____)(_) (_) (_) (_)`\__,_)
- DMenu
- --]]
- local PANEL = {}
- AccessorFunc(PANEL, "m_bBorder", "DrawBorder")
- AccessorFunc(PANEL, "m_bDeleteSelf", "DeleteSelf")
- AccessorFunc(PANEL, "m_iMinimumWidth", "MinimumWidth")
- AccessorFunc(PANEL, "m_bDrawColumn", "DrawColumn")
- AccessorFunc(PANEL, "m_iMaxHeight", "MaxHeight")
- AccessorFunc(PANEL, "m_pOpenSubMenu", "OpenSubMenu")
- --[[---------------------------------------------------------
- Init
- -----------------------------------------------------------]]
- function PANEL:Init()
- self:SetIsMenu(true)
- self:SetDrawBorder(true)
- self:SetPaintBackground(true)
- self:SetMinimumWidth(100)
- self:SetDrawOnTop(true)
- self:SetMaxHeight(ScrH() * 0.9)
- self:SetDeleteSelf(true)
- self:SetPadding(0)
- end
- --[[---------------------------------------------------------
- AddPanel
- -----------------------------------------------------------]]
- function PANEL:AddPanel(pnl)
- self:AddItem(pnl)
- pnl.ParentMenu = self
- end
- --[[---------------------------------------------------------
- AddOption
- -----------------------------------------------------------]]
- function PANEL:AddOption(strText, funcFunction)
- local pnl = vgui.Create("DMenuOption", self)
- pnl:SetMenu(self)
- pnl:SetText(strText)
- if (funcFunction) then
- pnl.DoClick = funcFunction
- end
- self:AddPanel(pnl)
- return pnl
- end
- --[[---------------------------------------------------------
- AddCVar
- -----------------------------------------------------------]]
- function PANEL:AddCVar(strText, convar, on, off, funcFunction)
- local pnl = vgui.Create("DMenuOptionCVar", self)
- pnl:SetMenu(self)
- pnl:SetText(strText)
- if (funcFunction) then
- pnl.DoClick = funcFunction
- end
- pnl:SetConVar(convar)
- pnl:SetValueOn(on)
- pnl:SetValueOff(off)
- self:AddPanel(pnl)
- return pnl
- end
- --[[---------------------------------------------------------
- AddSpacer
- -----------------------------------------------------------]]
- function PANEL:AddSpacer(strText, funcFunction)
- local pnl = vgui.Create("DPanel", self)
- pnl.Paint = function(p, w, h)
- surface.SetDrawColor(Color(0, 0, 0, 100))
- surface.DrawRect(0, 0, w, h)
- end
- pnl:SetTall(1)
- self:AddPanel(pnl)
- return pnl
- end
- --[[---------------------------------------------------------
- AddSubMenu
- -----------------------------------------------------------]]
- function PANEL:AddSubMenu(strText, funcFunction)
- local pnl = vgui.Create("DMenuOption", self)
- local SubMenu = pnl:AddSubMenu(strText, funcFunction)
- pnl:SetText(strText)
- if (funcFunction) then
- pnl.DoClick = funcFunction
- end
- self:AddPanel(pnl)
- return SubMenu, pnl
- end
- --[[---------------------------------------------------------
- Hide
- -----------------------------------------------------------]]
- function PANEL:Hide()
- local openmenu = self:GetOpenSubMenu()
- if (openmenu) then
- openmenu:Hide()
- end
- self:SetVisible(false)
- self:SetOpenSubMenu(nil)
- end
- --[[---------------------------------------------------------
- OpenSubMenu
- -----------------------------------------------------------]]
- function PANEL:OpenSubMenu(item, menu)
- -- Do we already have a menu open?
- local openmenu = self:GetOpenSubMenu()
- if (IsValid(openmenu)) then
- -- Don't open it again!
- if (menu and openmenu == menu) then return end
- -- Close it!
- self:CloseSubMenu(openmenu)
- end
- if (not IsValid(menu)) then return end
- local x, y = item:LocalToScreen(self:GetWide(), 0)
- menu:Open(x - 3, y, false, item)
- self:SetOpenSubMenu(menu)
- end
- --[[---------------------------------------------------------
- CloseSubMenu
- -----------------------------------------------------------]]
- function PANEL:CloseSubMenu(menu)
- menu:Hide()
- self:SetOpenSubMenu(nil)
- end
- --[[---------------------------------------------------------
- Paint
- -----------------------------------------------------------]]
- function PANEL:Paint(w, h)
- if (not self:GetPaintBackground()) then return end
- derma.SkinHook("Paint", "Menu", self, w, h)
- return true
- end
- function PANEL:ChildCount()
- return #self:GetCanvas():GetChildren()
- end
- function PANEL:GetChild(num)
- return self:GetCanvas():GetChildren()[num]
- end
- --[[---------------------------------------------------------
- PerformLayout
- -----------------------------------------------------------]]
- function PANEL:PerformLayout()
- local w = self:GetMinimumWidth()
- -- Find the widest one
- for k, pnl in pairs(self:GetCanvas():GetChildren()) do
- pnl:PerformLayout()
- w = math.max(w, pnl:GetWide())
- end
- self:SetWide(w)
- local y = 0 -- for padding
- for k, pnl in pairs(self:GetCanvas():GetChildren()) do
- pnl:SetWide(w)
- pnl:SetPos(0, y)
- pnl:InvalidateLayout(true)
- y = y + pnl:GetTall()
- end
- y = math.min(y, self:GetMaxHeight())
- self:SetTall(y)
- derma.SkinHook("Layout", "Menu", self)
- DScrollPanel.PerformLayout(self)
- end
- --[[---------------------------------------------------------
- Open - Opens the menu.
- x and y are optional, if they're not provided the menu
- will appear at the cursor.
- -----------------------------------------------------------]]
- function PANEL:Open(x, y, skipanimation, ownerpanel)
- local maunal = x and y
- x = x or gui.MouseX()
- y = y or gui.MouseY()
- local OwnerHeight = 0
- local OwnerWidth = 0
- if (ownerpanel) then
- OwnerWidth, OwnerHeight = ownerpanel:GetSize()
- end
- self:PerformLayout()
- local w = self:GetWide()
- local h = self:GetTall()
- self:SetSize(w, h)
- if (y + h > ScrH()) then
- y = ((maunal and ScrH()) or (y + OwnerHeight)) - h
- end
- if (x + w > ScrW()) then
- x = ((maunal and ScrW()) or x) - w
- end
- if (y < 1) then
- y = 1
- end
- if (x < 1) then
- x = 1
- end
- self:SetPos(x, y)
- -- Popup!
- self:MakePopup()
- -- Make sure it's visible!
- self:SetVisible(true)
- -- Keep the mouse active while the menu is visible.
- self:SetKeyboardInputEnabled(false)
- end
- --
- -- Called by DMenuOption
- --
- function PANEL:OptionSelectedInternal(option)
- self:OptionSelected(option, option:GetText())
- end
- function PANEL:OptionSelected(option, text)
- end
- -- For override
- function PANEL:ClearHighlights()
- for k, pnl in pairs(self:GetCanvas():GetChildren()) do
- pnl.Highlight = nil
- end
- end
- function PANEL:HighlightItem(item)
- for k, pnl in pairs(self:GetCanvas():GetChildren()) do
- if (pnl == item) then
- pnl.Highlight = true
- end
- end
- end
- --[[---------------------------------------------------------
- Name: GenerateExample
- -----------------------------------------------------------]]
- function PANEL:GenerateExample(ClassName, PropertySheet, Width, Height)
- end
- derma.DefineControl("CMenuExtension", "A Menu", PANEL, "DScrollPanel")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement