if CLIENT then
text = {}
target = ""
usermessage.Hook("RecieveMessage", function(msg)
local txt = msg:ReadString()
local pl = msg:ReadString()
text[#text + 1] = os.date("(%I:%M)"..pl.." : ")..txt
//print "tabled"
end)
function shit()
if ChatFrame != nil then ChatFrame:Remove() end
Chatframe = vgui.Create("DFrame")
Chatframe:SetSize(500, 500)
Chatframe:Center()
Chatframe:SetTitle("Chat")
Chatframe:SetDraggable(false)
Chatframe:MakePopup()
local panel = vgui.Create("DPanel", Chatframe)
panel:SetSize(480, 460)
panel:SetPos(10, 30)
panel.Paint = function()
draw.RoundedBox(2, 0, 0, panel:GetWide(), panel:GetTall(), Color(50, 50, 50, 255))
end
local textentry = vgui.Create("DTextEntry", panel)
textentry:SetSize(150, 20)
textentry:SetPos(panel:GetWide() / 2 - 75, panel:GetTall() - 40)
textentry:SetEditable(true)
textentry.OnEnter = function()
RunConsoleCommand("pl_select", target)
RunConsoleCommand("pl_sender", LocalPlayer():Nick())
RunConsoleCommand("chat_text", textentry:GetValue())
textentry:SetValue("")
end
local panellist = vgui.Create("DPanelList", panel)
panellist:SetPos(480/2-150, 50)
panellist:SetSize(300, 360)
panellist:SetSpacing(5)
panellist:SetPadding(5)
panellist:EnableHorizontal(false)
panellist:EnableVerticalScrollbar(true)
panellist.Paint = function()
draw.RoundedBox(2, 0, 0, panellist:GetWide(), panellist:GetTall(), Color(0, 0, 0, 0))
end
timer.Create("Check_Chat", 0.2, 0, function()
for k, v in pairs(text) do
local lab = vgui.Create("DLabel")
lab:SetFont("default")
lab:SetWrap(true)
lab:SetColor(Color(255, 255, 255, 255))
lab:SetText(v)
lab:SizeToContents()
lab:SetTall(20)
lab.Think = function()
lab:SetText(v)
end
text[k] = nil
panellist:AddItem(lab)
end
end)
local lb = vgui.Create("DLabel", panel)
lb:SetPos(20, 5)
lb:SetFont("default")
lb:SetColor(Color(255, 255, 255, 255))
lb:SetText("Choose your chat target")
lb:SizeToContents()
local list = vgui.Create("DMultiChoice", panel)
list:SetPos(40, 20)
list:SetSize(80, 20)
for k, v in pairs(player.GetAll()) do
if v != LocalPlayer() then
list:AddChoice(v:Nick())
list.OnSelect = function(panel,index,value,data)
target = value
end
end
end
end
usermessage.Hook("Hi", shit)
end
if SERVER then
local pl = ""
local sender = ""
function FindPlayerByName(info)
for k, v in pairs(player.GetAll()) do
if string.find(v:Nick(), info) then
return v
end
end
return nil
end
concommand.Add("chat_open", function(ply, cmd, args)
//print "hola"
umsg.Start("Hi", ply)
umsg.End()
end)
concommand.Add("chat_text", function(ply, cmd, args)
//print "hi"
local RP = RecipientFilter()
RP:AddPlayer(ply)
RP:AddPlayer(pl)
umsg.Start("RecieveMessage", RP)
umsg.String(table.concat(args, " "))
umsg.String(sender)
umsg.End()
end)
concommand.Add("pl_select", function(ply, cmd, args)
//print "player Selected"
pl = FindPlayerByName(args[1])
end)
concommand.Add("pl_sender", function(ply, cmd, args)
sender = table.concat(args, " ")
end)
end