mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
117 lines
3.0 KiB
Lua
117 lines
3.0 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
local PANEL = {}
|
||
|
|
|
||
|
|
local function DoorSetPermission(door, target, permission)
|
||
|
|
net.Start("ixDoorPermission")
|
||
|
|
net.WriteEntity(door)
|
||
|
|
net.WriteEntity(target)
|
||
|
|
net.WriteUInt(permission, 4)
|
||
|
|
net.SendToServer()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Init()
|
||
|
|
self:SetSize(280, 240)
|
||
|
|
self:SetTitle(L"doorSettings")
|
||
|
|
self:Center()
|
||
|
|
self:MakePopup()
|
||
|
|
|
||
|
|
self.access = self:Add("DListView")
|
||
|
|
self.access:Dock(FILL)
|
||
|
|
self.access:AddColumn(L"name").Header:SetTextColor(Color(25, 25, 25))
|
||
|
|
self.access:AddColumn(L"access").Header:SetTextColor(Color(25, 25, 25))
|
||
|
|
self.access.OnClickLine = function(this, line, selected)
|
||
|
|
if (IsValid(line.player)) then
|
||
|
|
local menu = DermaMenu()
|
||
|
|
menu:AddOption(L"tenant", function()
|
||
|
|
if (self.accessData and self.accessData[line.player] != DOOR_TENANT) then
|
||
|
|
DoorSetPermission(self.door, line.player, DOOR_TENANT)
|
||
|
|
end
|
||
|
|
end):SetImage("icon16/user_add.png")
|
||
|
|
menu:AddOption(L"guest", function()
|
||
|
|
if (self.accessData and self.accessData[line.player] != DOOR_GUEST) then
|
||
|
|
DoorSetPermission(self.door, line.player, DOOR_GUEST)
|
||
|
|
end
|
||
|
|
end):SetImage("icon16/user_green.png")
|
||
|
|
menu:AddOption(L"none", function()
|
||
|
|
if (self.accessData and self.accessData[line.player] != DOOR_NONE) then
|
||
|
|
DoorSetPermission(self.door, line.player, DOOR_NONE)
|
||
|
|
end
|
||
|
|
end):SetImage("icon16/user_red.png")
|
||
|
|
menu:Open()
|
||
|
|
|
||
|
|
for _, v in pairs(menu:GetChildren()[1]:GetChildren()) do
|
||
|
|
v:SetFont("MenuFontNoClamp")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:SetDoor(door, access, door2)
|
||
|
|
door.ixPanel = self
|
||
|
|
|
||
|
|
self.accessData = access
|
||
|
|
self.door = door
|
||
|
|
|
||
|
|
for _, v in ipairs(player.GetAll()) do
|
||
|
|
if (v != LocalPlayer() and v:GetCharacter()) then
|
||
|
|
self.access:AddLine(v:Name(), L(ACCESS_LABELS[access[v] or 0])).player = v
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (self:CheckAccess(DOOR_OWNER)) then
|
||
|
|
self.sell = self:Add("DButton")
|
||
|
|
self.sell:Dock(BOTTOM)
|
||
|
|
self.sell:SetText(L"sell")
|
||
|
|
self.sell:SetTextColor(color_white)
|
||
|
|
self.sell:DockMargin(0, 5, 0, 0)
|
||
|
|
self.sell.DoClick = function(this)
|
||
|
|
self:Remove()
|
||
|
|
ix.command.Send("doorsell")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (self:CheckAccess(DOOR_TENANT)) then
|
||
|
|
self.name = self:Add("DTextEntry")
|
||
|
|
self.name:Dock(TOP)
|
||
|
|
self.name:DockMargin(0, 0, 0, 5)
|
||
|
|
self.name.Think = function(this)
|
||
|
|
if (!this:IsEditing()) then
|
||
|
|
local entity = IsValid(door2) and door2 or door
|
||
|
|
|
||
|
|
self.name:SetText(entity:GetNetVar("title", L"dTitleOwned"))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
self.name.OnEnter = function(this)
|
||
|
|
ix.command.Send("doorsettitle", this:GetText())
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CheckAccess(access)
|
||
|
|
access = access or DOOR_GUEST
|
||
|
|
|
||
|
|
if ((self.accessData[LocalPlayer()] or 0) >= access) then
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Think()
|
||
|
|
if (self.accessData and !IsValid(self.door) and self:CheckAccess()) then
|
||
|
|
self:Remove()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
vgui.Register("ixDoorMenu", PANEL, "DFrame")
|