Ergebnis 1 bis 4 von 4

Thema: Crosshair-Menü

  1. #1

    Information Crosshair-Menü

    Hi,
    ich habe eine frage, und zwar möchte ich ein Panel erstellen mit dem ich mein crosshair ändern kann. Die dazu nötigen Infos soll es aus einem table beziehen, diesen frage ich dann mit einer for- Schleife ab.
    Code:
    function CrosshairMenu()
    
    CrossHairs = {
    
    {Crosshair = { x = 5, y = 30, x1 = 0, y1 = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0}},
    {Crosshair = { x = 12.5, y = 12.5, x1 = 0, y1 = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0}}
    
    }
    
    local frame = vgui.Create( "DFrame" )
    	  frame:SetPos( 200,200 )
    	  frame:SetSize( 500,200 )
    	  frame:SetTitle( " Crosshairs " )
    
    			local Choose = vgui.Create( "DPanelList", frame )
    				  Choose:SetPos( 10, 25 )
    				  Choose:SetSize( 480 , 80 )
    				 
    				 wahr = true
    				 
    				 local x , y = 10 , 30
    					if( wahr == true ) then -- wird noch geändert in eine andere abfrage wie ply:Alive() etc oder panel:Visible()
    					
    					space = 10
    						for k, ch in ipairs( CrossHairs ) do
    						local w,h = 60 , 0
    							x = x + w + space
    							
    							local CrosshairButton = vgui.Create( "DButton", frame )
    								  CrosshairButton:SetPos( x , y )
    								  CrosshairButton:SetSize( 60 , 60 )
    								  CrosshairButton:SetText( "" )
    								  CrosshairButton.Paint = function ()
    								  surface.SetDrawColor( Color(255,255,255,255) )
    								  surface.DrawOutlinedRect(  0 , 0 , CrosshairButton:GetWide(), CrosshairButton:GetTall() )
    								  for k, ch in pairs( CrossHairs ) do
    									local x , y = ch.Crosshair.x , ch.Crosshair.y
    									surface.SetDrawColor( Color(0,0,255,255) )
    									surface.DrawRect(  x , y , CrosshairButton:GetWide()-2, 2 )
    									
    									
    										end
    								  end
    								  
    								  CrosshairButton.DoClick = function ()
    								  
    								  end
    							end
    					end
    				 
    				  
    			DefineCrosshairs = {}
    			
    	--	local Option = vgui.Create( "DCheckBox", frame)
    	
    	RandomCorsshair = {}
    	
    	local Random = vgui.Create( "DButton", frame)
    		  Random:SetPos( 230, 140 )
    		  Random:SetSize( 80, 20 )
    		  Random:SetText( "Random" )
    		  Random.DoClick = function()
    		  
    		  end
    			
    local Preview = vgui.Create( "DPanel", frame )
    	  Preview:SetPos(450, 150 )
    	  Preview:SetSize( 30, 60 )
    	  
    		 local Add = vgui.Create( "DButton", frame )
    			   Add:SetPos( 70, 450 )
    			   Add:SetSize( 60, 30 )
    			   Add:SetText( " Add Crosshair to List " )
    			   Add.DoClick = function()
    			   
    			   end
    
    end
    // Zur vollen ansicht
    Code:
    								  CrosshairButton.Paint = function ()
    								  surface.SetDrawColor( Color(255,255,255,255) )
    								  surface.DrawOutlinedRect(  0 , 0 , CrosshairButton:GetWide(), CrosshairButton:GetTall() )
    								  for k, ch in pairs( CrossHairs ) do -- Das Problem liegt an dieser Schleife
    									local x , y = ch.Crosshair.x , ch.Crosshair.y
    									surface.SetDrawColor( Color(0,0,255,255) )
    									surface.DrawRect(  x , y , CrosshairButton:GetWide()-2, 2 )
    									
    									
    										end
    								  end
    Das Problem ist nun das wenn ich die for- Schleife aufrufe und ich mehr als ein Element im table habe wird die Paint function für jeden Knopf so oft aufgerufen wie ich Elemente besitze.

    Ich möchte aber die Paint function immer einzeln aufrufen um jedes Crosshair einzeln dazustellen.

    Kann mir bei meinem Problem einer weiterhelfen.

  2. #2

    Standard AW: Crosshair-Menü

    -bump-

  3. #3

    Standard AW: Crosshair-Menü

    Du hast das Problem schon ganz richtig erkannt, es ist die innere Schleife. Da du für jedes Crosshair einen Button brauchst, auf dem dieses eine Crosshair gezeichnet wird, gehört die innere Schleife dort nicht hin.

    Greife stattdessen auf das entsprechende Crosshair zu:
    Code:
    local CrossHair = CrossHairs[k]
    Oder noch einfacher: Verwende 'ch'. Im Grunde musst du bloß die innere Schleife entfernen, den Code darin jedoch behalten.
    Geändert von Baktus (12.03.2011 um 15:37 Uhr)

  4. Folgender Benutzer sagt Danke zu Baktus für den nützlichen Beitrag:


  5. #4

    Standard AW: Crosshair-Menü

    Danke

Ähnliche Themen

  1. Team Fortress 2 KEIN CROSSHAIR!
    Von PytonB!tch im Forum Computer & Konsolen Spiele
    Antworten: 4
    Letzter Beitrag: 25.02.2009, 20:51
  2. asus crosshair erkennt keine usb geräte mehr
    Von MADD-DOXX im Forum Beratung
    Antworten: 1
    Letzter Beitrag: 22.10.2008, 14:24
  3. UCRPM Sound Menu / Movement Menu
    Von Raiden im Forum Addons
    Antworten: 2
    Letzter Beitrag: 25.03.2008, 10:53
  4. !menu
    Von BattleMech im Forum GMod Allgemein
    Antworten: 7
    Letzter Beitrag: 17.05.2007, 16:03
  5. All in one menu
    Von Hoppel im Forum Addons
    Antworten: 2
    Letzter Beitrag: 15.11.2005, 17:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •