Помогите сделать телефон дарк рп

у меня есть cmenu и аддоном сделанный телефон
так выглядит cmenu
SubMenu(“Позвонить”, “icon16/computer.png”, function(self)
local players = player.GetAll()
table.RemoveByValue(players, LocalPlayer())

for _, targetPlayer in pairs(players) do
    self:AddOption2(targetPlayer:Nick(), function()
        if IsValid(targetPlayer) then
            LocalPlayer():ConCommand("darkrp call " .. targetPlayer:UserID())
        end
    end):SetColor(team.GetColor(targetPlayer:Team()))
end

end)
а вот так выглядит телефон
util.AddNetworkString(“string”)
Phone = {}

Phone.Accepted = false

function Phone.StartCall( ply )
net.Start( ‘phone’ )
net.WriteTable{
ply=ply,
act=‘call’
}
net.SendToServer()
end

function Phone.Call( ply )

if IsValid( Phone.ActiveFrame ) then return end

Phone.ActiveFrame = vgui.Create( 'DFrame' )
Phone.ActiveFrame:SetSize( 300, 100 )
Phone.ActiveFrame:SetPos( 10, ScrH()/1.3 - Phone.ActiveFrame:GetWide()/2 )
Phone.ActiveFrame:ShowCloseButton( false )
Phone.ActiveFrame.Sound = true
Phone.ActiveFrame.SoundTime = 0

Phone.ActiveFrame.Sound = true
Phone.ActiveFrame.SoundTime = 0

local f = Phone.ActiveFrame

f:SetTitle( 'Исходящий вызов' )

function f:Paint(w,h)

	surface.SetDrawColor(0,0,0,150)
	Phone.ActiveFrame:DrawFilledRect()
	surface.SetDrawColor(0,0,0)
	Phone.ActiveFrame:DrawOutlinedRect()
end

local f = Phone.ActiveFrame

f.btnMinim:SetVisible( false )
f.btnMaxim:SetVisible( false )

function f:Close()		
	local m = DermaMenu()
		m:AddOption( 'Бросить трубку' ).DoClick = function() Phone.Deny() self:Remove() end
	m:Open()
end

local accept = vgui.Create( 'DPanel', f )
accept:Dock( RIGHT )
accept:SetWide( 110 )
accept:DockMargin( 5,5,5,15 )
accept:SetText('')

local pt = nil

function accept:Paint(w,h)
	
	if Phone.Accepted == true then
	
		if not pt then
			pt = CurTime()
		end
	
		local time = CurTime() - pt
		
		local ft = string.FormattedTime( math.floor( time ) )
		
		draw.DrawText( string.format( '%s:%s:%s', ft.h, ft.m, ft.s ) , 'HUDSELECTIONTEXT', w/2, h/2 - 9, Color( 255,255,255 ),TEXT_ALIGN_CENTER )
		
	else
		
		draw.DrawText( string.rep( '.', CurTime()%3 ) , 'HUDSELECTIONTEXT', w/2, h/2 - 9, Color( 255,255,255 ),TEXT_ALIGN_CENTER )
		
	end
	
			
end

slb = vgui.Create( "DButton", Phone.ActiveFrame )
slb:SetSize( 110, 20 ) 
slb:SetPos( 185, 68 )
slb:SetText( "Бросить" )
slb:SetImage( "icon16/phone_delete.png" )
slb:SetTextColor( Color(255,255,255) )
slb.Paint = function() 
	surface.SetDrawColor(0,0,0)
	slb:DrawOutlinedRect()
end
slb.DoClick = function() Phone.Deny() end

local avatar = vgui.Create( "AvatarImage", f )
avatar:Dock( LEFT )
avatar:DockMargin( 5,5,5,5 )
avatar:SetPlayer( ply,128 )
avatar:SetWide( 56 )

local lbl = vgui.Create( "DLabel", f )
lbl:SetFont( 'HUDSELECTIONTEXT' )
lbl:SetPos( 75, 35 )
lbl:SetText( ply:Nick() )
lbl:SetSize( 200, 20 )

local lbl2 = vgui.Create( "DLabel", f )
lbl2:SetPos( 75, 60 )
lbl2:SetText( ply:getDarkRPVar('job') )
lbl2:SetSize( 200, 20 )
lbl2:SetColor( team.GetColor( ply:Team() ) )

end

function Phone.InCall( ply )

if IsValid( Phone.ActiveFrame ) then return end

Phone.ActiveFrame = vgui.Create( 'DFrame' )
Phone.ActiveFrame:SetSize( 300, 100 )
Phone.ActiveFrame:SetPos( 10, ScrH()/2 - Phone.ActiveFrame:GetWide()/2 )
Phone.ActiveFrame.Sound = true
Phone.ActiveFrame.SoundTime = 0

local f = Phone.ActiveFrame

f:SetTitle( 'Входящий вызов' )

function f:Paint(w,h)
	
	surface.SetDrawColor(0,0,0,150)
	Phone.ActiveFrame:DrawFilledRect()
	surface.SetDrawColor(0,0,0)
	Phone.ActiveFrame:DrawOutlinedRect()
	
	if self.Sound == true and CurTime() > self.SoundTime then
		surface.PlaySound( 'techrp/iphone.mp3' )
		self.SoundTime = CurTime() + 8
	end
	
end

function f:Close()
	
	local m = DermaMenu()
	m:AddOption( 'Заглушить звонок' ).DoClick = function() self:SetAlpha( 100 ) self.Sound = false end
	m:AddSpacer()
	m:AddOption( 'Бросить трубку' ).DoClick = function() Phone.Deny() self:Remove() end
	m:Open()
			
end

local accept = vgui.Create( 'DButton', f )
accept:Dock( RIGHT )
accept:DockMargin( 5,5,5,5 )
accept:SetText('')

function accept:Paint(w,h)
	
	draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 150, 0 ) )	
	draw.DrawText( 'Принять', 'HUDSELECTIONTEXT', w/2, h/2 - 9, Color( 255,255,255 ),TEXT_ALIGN_CENTER )
			
end

function accept:DoClick()
	
	net.Start'phone'
	net.WriteTable{ act='accept' }
	net.SendToServer()
	
	f:Remove()
	
	Phone.Call( ply )
	
end

local avatar = vgui.Create( "AvatarImage", f )
avatar:Dock( LEFT )
avatar:DockMargin( 5,5,5,5 )
avatar:SetPlayer( ply,128 )
avatar:SetWide( 56 )

local lbl = vgui.Create( "DLabel", f )
lbl:SetFont( 'HUDSELECTIONTEXT' )
lbl:SetPos( 75, 35 )
lbl:SetText( ply:Nick() )
lbl:SetSize( 200, 20 )

local lbl2 = vgui.Create( "DLabel", f )
lbl2:SetPos( 75, 60 )
lbl2:SetText( ply:getDarkRPVar('job') )
lbl2:SetSize( 200, 20 )
lbl2:SetColor( team.GetColor( ply:Team() ) )

end

function Phone.Deny()

net.Start( 'phone' )
net.WriteTable{ act='deny' }
net.SendToServer()

end

net.Receive( ‘phone_client’, function()

local t=net.ReadTable()

if t.act == 'in' then
	Phone.InCall( t.ply )
end	

if t.act == 'out' then
	Phone.Call( t.ply )
end

if t.act == 'accept' then
	Phone.Accepted = true
end

if t.act == 'deny' then
	Phone.Accepted = false
	if IsValid( Phone.ActiveFrame ) then Phone.ActiveFrame:Remove() end
end

end)
и я не понимаю что не так выдаёт 2 ошибки

Какие именно ошибки он выдает?