Python1320

WeirDChatHUd

Sep 12th, 2011
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.88 KB | None | 0 0
  1. local Now=RealTime
  2. local Tag="chathud"
  3. local font=Tag..math.Round(CurTime())
  4. surface.CreateFont("Tahoma",17,700,false,false,font,true,false)
  5. local bigfont=Tag..'2'..math.Round(CurTime()+1)
  6. surface.CreateFont("Tahoma",22,700,false,false,bigfont,true,false)
  7. --surface.CreateFont("Tahoma",17,700,false,false,font_smooth,false,false,1)
  8. todraw={}
  9.  
  10. local function DrawText(txtdata,frac,drawoffset)
  11.  
  12.     surface.SetTextPos(10,drawoffset)
  13.  
  14.     local maxtall = 0
  15.     for k,v in pairs(txtdata) do
  16.         if type(v) == "string" then
  17.             local w,h=surface.GetTextSize(v)
  18.             maxtall=maxtall<h and h or maxtall
  19.             surface.DrawText(v)
  20.         elseif v.r then
  21.             surface.SetTextColor( v.r,v.g,v.b,v.a and v.a*frac or 255*frac)            
  22.         end
  23.     end
  24.     return maxtall
  25. end
  26.  
  27.  
  28. local length=2
  29. local startpadding=4
  30. local startfade=.2
  31. local function DoDraw(i,txtdata,start,drawoffset,big)
  32.     local frac=((start-(Now()-length-startpadding))/length)
  33.     local frac2=(Now()-start)/startfade
  34.     frac=frac>1 and 1 or frac<0 and 0 or frac
  35.     frac2=frac2>1 and 1 or frac2<0 and 0 or frac2
  36.     frac=frac*frac2
  37.     if frac<0 then
  38.         table.remove(todraw,i)
  39.         return 0
  40.     end
  41.    
  42.     surface.SetTextColor( 255,255,255,255*frac)
  43.     surface.SetFont(big and bigfont or font)
  44.     local maxtall=DrawText(txtdata,frac,drawoffset)
  45.    
  46.     return maxtall+(big and -2*5 --[[whyy??]] or 2)
  47. end
  48.  
  49. hook.Add("HUDPaint",Tag,function()
  50.     --while #todraw > 5 do table.remove(todraw,1) end
  51.     local startoffset=ScrH()*0.5
  52.     local drawoffset=startoffset
  53.     for i,data in pairs(todraw) do
  54.         local txtdata=data.text
  55.         local start=data.start
  56.         data.off=data.off or startoffset
  57.         data.startoff=data.startoff or Now()
  58.         data.off=math.Approach(data.off,drawoffset,5)
  59.         drawoffset=drawoffset-( DoDraw(i,txtdata,start,data.off,data.big) or 0)
  60.     end
  61. end)
  62.  
  63. hook.Remove("OnPlayerChat",Tag,function( ply, strText, bTeamOnly, bPlayerIsDead )
  64.  
  65.         local tab = {}
  66.  
  67.     if ( bPlayerIsDead ) then
  68.         table.insert( tab, Color( 255, 30, 40 ) )
  69.         table.insert( tab, "*DEAD* " )
  70.     end
  71.  
  72.     if ( bTeamOnly ) then
  73.         table.insert( tab, Color( 30, 160, 40 ) )
  74.         table.insert( tab, "(TEAM) " )
  75.     end
  76.  
  77.     if ( IsValid( ply ) ) then
  78.            
  79.         table.insert( tab, team.GetColor(ply:Team()) )
  80.         table.insert( tab, ply:GetName() )
  81.     else
  82.         table.insert( tab, "Console" )
  83.     end
  84.  
  85.     table.insert( tab, Color( 255, 255, 255 ) )
  86.     table.insert( tab, ": "..strText )
  87.  
  88.     table.insert(todraw,1,{text=tab,start=Now()})
  89.  
  90.  
  91. end)
  92.  
  93. local lastcolor=
  94. local function AddTextNew(...)
  95.     local big,tbl=nil,{...}
  96.     for k,v in pairs(tbl) do
  97.         if type(v)=="string" and v:find("!!!",1,true) then
  98.             big=true
  99.             break
  100.         end
  101.     end
  102.    
  103.     table.insert(todraw,1,{text={...},big=big,start=Now()})
  104. end
  105. _G.PrimaryChatAddText=AddTextNew
  106.  
  107. hook.Add( "HUDShouldDraw", Tag, function ( name )
  108.     if name == "CHudChat" then
  109.              return false
  110.     end
  111. end )
Advertisement
Add Comment
Please, Sign In to add comment