Share Pastebin
Guest
Public paste!

Energy

By: a guest | Mar 21st, 2010 | Syntax: Lua | Size: 5.21 KB | Hits: 48 | Expires: Never
Copy text to clipboard
  1.  
  2. include('shared.lua')
  3. function _R.Vector:IsInRange(v1, v2)  
  4.         return self.x >= v1.x and self.x <= v2.x and self.y >= v1.y and self.y <= v2.y and self.z >= v1.z and self.z <= v2.z;  -- Thanks MakeR
  5. end  
  6. Buttons = {}
  7. Ytempz = {}
  8. ClickCol = Color(255,200,100,255)
  9. MouseOverCol = Color(0,255,0,255)
  10. Moade = "MainMenu"
  11. CanClick = true
  12. ClickTime = 1
  13. function AddButton(x,y,w,h,txtcol,backcol,txt,font,id)
  14.         Temp = {}
  15.         Temp["Pos"] = {}
  16.         Temp["Pos"]["x"] = x
  17.         Temp["Pos"]["y"] = y
  18.         Temp["Size"] = {}
  19.         Temp["Size"]["w"] = w
  20.         Temp["Size"]["h"] = h
  21.         Temp["TextColor"] = txtcol
  22.         Temp["BackColor"] = backcol
  23.         Temp["Text"] = txt
  24.         Temp["Font"] = font
  25.         Buttons[id] = Temp
  26.         Ytempz[id] = Temp
  27.         Temp = {}
  28. end
  29. //AddButton(-(275/2)+60,-(200/2)+30,100,20,Color(255,0,0,255),Color(0,0,255,255),"Test Button.","TabLarge")
  30. //AddButton(-(275/2)+10,-(200/2)+60,100,20,Color(255,0,0,255),Color(0,0,255,255),"Test Button2","TabLarge")
  31. AddButton(-(275/2)+60,90,100,20,Color(255,0,0,255),Color(0,0,255,255),"Sub-Menu","TabLarge",9001)
  32. --[[
  33. AddButton(-(275/2)+150,30,100,20,Color(255,0,0,255),Color(0,0,255,255),"Inter.x: "..Inter.x,"TabLarge",10)
  34. AddButton(-(275/2)+150,50,100,20,Color(255,0,0,255),Color(0,0,255,255),"Inter.y: "..Inter.y,"TabLarge",11)
  35. AddButton(-(275/2)+150,70,100,20,Color(255,0,0,255),Color(0,0,255,255),"A.x: "..A.x,"TabLarge",12)
  36. AddButton(-(275/2)+150,90,100,20,Color(255,0,0,255),Color(0,0,255,255),"A.y: "..A.y,"TabLarge",13)
  37. AddButton(-(275/2)+150,110,100,20,Color(255,0,0,255),Color(0,0,255,255),"B.x: "..B.x,"TabLarge",14)
  38. AddButton(-(275/2)+150,130,100,20,Color(255,0,0,255),Color(0,0,255,255),"B.y: "..B.y,"TabLarge",15)
  39. ]]--
  40. TitleText = "Welcome to my humble little menu system."
  41. function ENT:Draw()
  42.         cam.Start3D2D(self.Entity:GetPos(), self.Entity:GetForward(),1)
  43.                 surface.SetDrawColor( 0, 0, 0, 255) --Red
  44.                 surface.DrawRect(-(275/2),0, 275, 200 )
  45.                 surface.SetDrawColor( 100,200,255,255)
  46.                 surface.DrawRect(-(275/2),0,275,20)
  47.                 surface.SetTextColor(0,255,0,255)
  48.                 surface.SetTextPos(-(275/2)+5,0)
  49.                 surface.SetFont("TabLarge")
  50.                 surface.DrawText(TitleText)
  51.                 for k,v in pairs(Buttons) do
  52.                         surface.SetDrawColor(v["BackColor"].r,v["BackColor"].g,v["BackColor"].b,v["BackColor"].a)
  53.                         surface.DrawRect(v["Pos"]["x"],v["Pos"]["y"],v["Size"]["w"],v["Size"]["h"])
  54.                         surface.SetTextColor(v["TextColor"].r,v["TextColor"].g,v["TextColor"].b,v["TextColor"].a)
  55.                         surface.SetTextPos(v["Pos"]["x"]+5,v["Pos"]["y"]+3.5)
  56.                         surface.SetFont(v["Font"])
  57.                         surface.DrawText(v["Text"])
  58.                 end
  59.                 PlanePos = self.Entity:GetPos()
  60.                 Normal = self.Entity:GetUp()
  61.                 ShootPos = LocalPlayer():EyePos()
  62.                 Eye = LocalPlayer():GetEyeTraceNoCursor().Normal
  63.                 Inter = ShootPos-(Normal:DotProduct(ShootPos-PlanePos))/(Normal:DotProduct(Eye))*Eye --:3 Lutin thanks a bunch for this part
  64.                 Inter = self.Entity:WorldToLocal(Inter)
  65.                 Inter.x = math.Clamp(Inter.x, -(275/2),(275/2))
  66.                 Inter.y = math.Clamp(Inter.y, -200,0)
  67.                 surface.SetDrawColor(152,251,152,255)
  68.                 surface.DrawRect(Inter.x-1,-Inter.y-1,2,2)
  69.                 for k,v in pairs(Buttons) do
  70.                         local A = (Vector(v["Pos"]["x"],v["Pos"]["y"],0)+(Vector(v["Size"]["w"],v["Size"]["h"],0)))
  71.                         A.x = A.x-2
  72.                         A.y = A.y-2
  73.                         local B = Vector(v["Pos"]["x"],v["Pos"]["y"],0)
  74.                         print("Button Text: "..v["Text"].." A: "..tostring(A).." B: "..tostring(B).." Inter: "..tostring(Inter))
  75.                                         --surface.SetDrawColor(152,251,152,255)
  76.                         surface.SetDrawColor(255,0,0,255)
  77.                         surface.DrawRect(A.x,A.y,2,2)
  78.                         surface.SetDrawColor(0,255,0,255)
  79.                         surface.DrawRect(B.x,B.y,2,2)
  80.                         InterSub = Inter
  81.                         InterSub.y = -InterSub.y
  82.                         if(InterSub:IsInRange(B,A)) then
  83.                                 if(LocalPlayer():KeyDown( IN_ATTACK )) then
  84.                                         v["BackColor"] = ClickCol
  85.                                         Clicked(k)
  86.                                 else
  87.                                         v["BackColor"] = MouseOverCol
  88.                                 end
  89.                         else
  90.                                 v["BackColor"] = Color(0,0,255,255)
  91.                         end
  92.                 end
  93.         cam.End3D2D()
  94. end
  95. function ClearButtons()
  96.         Buttons = {}
  97.         Ytempz = {}
  98. end
  99. function Clicked(Id)
  100.         if(CanClick) then
  101.                 CanClick = false
  102.                 timer.Create("ClickAllow",ClickTime,1,function() CanClick = true end)
  103.                 if(Id == 9001 and Moade == "MainMenu") then
  104.                         Moade = "SubMenu"
  105.                         ClearButtons()
  106.                         AddButton(-(275/2)+60,90,100,20,Color(255,0,0,255),Color(0,0,255,255),"Back","TabLarge",9000)
  107.                         AddButton(-(275/2)+10,30,100,20,Color(255,0,0,255),Color(0,0,255,255),"Action 1","TabLarge",1)
  108.                         AddButton(-(275/2)+10,150,100,20,Color(255,0,0,255),Color(0,0,255,255),"Action 2","TabLarge",2)
  109.                 end
  110.                 if(Id == 9000 and Moade == "SubMenu") then
  111.                         ClearButtons()
  112.                         Moade = "MainMenu"
  113.                         AddButton(-(275/2)+60,90,100,20,Color(255,0,0,255),Color(0,0,255,255),"Sub-Menu","TabLarge",9001)
  114.                         --[[
  115.                         AddButton(-(275/2)+150,30,100,20,Color(255,0,0,255),Color(0,0,255,255),"Inter.x: "..Inter.x,"TabLarge",10)
  116.                         AddButton(-(275/2)+150,50,100,20,Color(255,0,0,255),Color(0,0,255,255),"Inter.y: "..Inter.y,"TabLarge",11)
  117.                         AddButton(-(275/2)+150,70,100,20,Color(255,0,0,255),Color(0,0,255,255),"A.x: "..A.x,"TabLarge",12)
  118.                         AddButton(-(275/2)+150,90,100,20,Color(255,0,0,255),Color(0,0,255,255),"A.y: "..A.y,"TabLarge",13)
  119.                         AddButton(-(275/2)+150,110,100,20,Color(255,0,0,255),Color(0,0,255,255),"B.x: "..B.x,"TabLarge",14)
  120.                         AddButton(-(275/2)+150,130,100,20,Color(255,0,0,255),Color(0,0,255,255),"B.y: "..B.y,"TabLarge",15)
  121.                         ]]--
  122.                 end    
  123.         end
  124. end