Python1320

Untitled

Sep 12th, 2011
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.21 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. local function AddTextNew(...)
  64.     local big,tbl=nil,{...}
  65.     for k,v in pairs(tbl) do
  66.         if type(v)=="string" and v:find("!!!",1,true) then
  67.             big=true
  68.             break
  69.         end
  70.     end
  71.    
  72.     table.insert(todraw,1,{text={...},big=big,start=Now()})
  73. end
  74. _G.PrimaryChatAddText=AddTextNew
  75.  
  76. hook.Add( "HUDShouldDraw", Tag, function ( name )
  77.     if name == "CHudChat" then
  78.              return false
  79.     end
  80. end )
Advertisement
Add Comment
Please, Sign In to add comment