vereinfachen

11/03/2010 21:36 maxi39#16
Quote:
Originally Posted by KillerDeluxe View Post
Das war nicht ironisch gemeint, bei so vielen $LABEL, $BUTTON und
$INPUT Variablen blickt man nicht mehr durch, du hättest sie lieber
erkannbar benennen sollen (z. B. $L_Player1, $L_Player2).
ich hab die funktion immer in block unterteil:

PHP Code:
If GUICtrlRead($COMBO1) = $PLAYER1 Then _NITROFREEZEON1() 
            If 
GUICtrlRead($COMBO1) = $PLAYER2 Then _NITROFREEZEON2() 
            If 
GUICtrlRead($COMBO1) = $PLAYER3 Then _NITROFREEZEON3() 
            If 
GUICtrlRead($COMBO1) = $PLAYER4 Then _NITROFREEZEON4() 
            If 
GUICtrlRead($COMBO1) = $PLAYER5 Then _NITROFREEZEON5() 
            If 
GUICtrlRead($COMBO1) = $PLAYER6 Then _NITROFREEZEON6() 
            If 
GUICtrlRead($COMBO1) = $PLAYER7 Then _NITROFREEZEON7() 
            If 
GUICtrlRead($COMBO1) = $PLAYER8 Then _NITROFREEZEON8() 
das ist sehr übersichtlich
11/03/2010 21:47 omer36#17
nja von den 161 fehlern, sind 140 undefinierte funktionen...
diese ganzen _NITROFREEZEON2() 3,4,5, dies das....

die anderen fehler kamen, weil wir nicht die includes haben...

btw was wird das eig, wenns fertig ist?
11/03/2010 21:48 ZaZiZu#18
Quote:
Originally Posted by maxi39 View Post
ich hab die funktion immer in block unterteil:

PHP Code:
If GUICtrlRead($COMBO1) = $PLAYER1 Then _NITROFREEZEON1() 
            If 
GUICtrlRead($COMBO1) = $PLAYER2 Then _NITROFREEZEON2() 
            If 
GUICtrlRead($COMBO1) = $PLAYER3 Then _NITROFREEZEON3() 
            If 
GUICtrlRead($COMBO1) = $PLAYER4 Then _NITROFREEZEON4() 
            If 
GUICtrlRead($COMBO1) = $PLAYER5 Then _NITROFREEZEON5() 
            If 
GUICtrlRead($COMBO1) = $PLAYER6 Then _NITROFREEZEON6() 
            If 
GUICtrlRead($COMBO1) = $PLAYER7 Then _NITROFREEZEON7() 
            If 
GUICtrlRead($COMBO1) = $PLAYER8 Then _NITROFREEZEON8() 
das ist sehr übersichtlich
und die blöcke kann man gut kürzen denke ich :D müsste so eventuell gehen also nach der GUI (in dieser kann man auch haufenweise was kürzen

PHP Code:
While 1

    
If ProcessExists("mc2.exe") = False Then GUICtrlSetBkColor($GRAPHIC216711680)
    If 
ProcessExists("mc2.exe") = True Then GUICtrlSetBkColor($GRAPHIC265280)

Dim $aPlayer[8] = ["Player1""Player2""Player3""Player4""Player5""Player6""Player7""Player8"]

For 
$i2 0 To 7    
         
If GUICtrlRead($Combo1) = $aPlayer[$i2Then
        GUICtrlSetBkColor
(Eval("Label" & (14 $i2)), 16711680)
    Else
        
GUICtrlSetBkColor(Eval("Label" & (14 $i2)), 65535)
    EndIf
Next



For $i 1 to 8

    $NMSG 
GUIGetMsg()
    Switch 
$NMSG
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$BUTTON1
        
Case $BUTTON2
        
Case $BUTTON3
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _NITROFREEZEON&$i()
        Case 
$BUTTON4
            _NITROFREEZEOFF
()
        Case 
$BUTTON5
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _NITROFOVON&$i()
        Case 
$BUTTON6
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _NITROBAMOUNT&$i()
        Case 
$BUTTON7
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _NITROBOOST&$i()
        Case 
$BUTTON8
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _HORSE&$i()
        Case 
$SLIDER1
            GUICtrlSetData
($LABEL22GUICtrlRead($SLIDER1))
        Case 
$SLIDER2
            GUICtrlSetData
($LABEL23GUICtrlRead($SLIDER2))
        Case 
$BUTTON9
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _BELASTIC&$i()
        Case 
$BUTTON10
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _DOWN&$i()
        Case 
$BUTTON11
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _DRAG&$i()
        Case 
$BUTTON12
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _MASSE&$i()
        Case 
$BUTTON13
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _BI&$i()
        Case 
$BUTTON14
            
If GUICtrlRead($COMBO1) = $PLAYER&$i Then _BD&$i()
        Case 
$BUTTON18
            
If $AKTUALISIERN True Then _COX&$i()
            If 
$AKTUALISIERN True Then _COY&$i()
            If 
$AKTUALISIERN True Then _COZ&$i()
        Case 
$BUTTON17
            
If GUICtrlRead($COMBO1) = $PLAYER1 Then _COXA&$i()
            If 
GUICtrlRead($COMBO1) = $PLAYER1 Then _COYA&$i()
            If 
GUICtrlRead($COMBO1) = $PLAYER1 Then _COZA&$i()
        Case 
$BUTTON15
                
    
EndSwitch

    Global 
$INPUT16A GUICtrlRead($INPUT16)

    
HotKeySet("" $INPUT16A """_HOTKEY1")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dim $INPUTXA[8] = [$INPUT3A,$INPUT4A,$INPUT5A,$INPUT6A,$INPUT7A,$INPUT8A,$INPUT9A,$INPUT10A]
Dim $INPUTX[8] = [$INPUT3,$INPUT4,$INPUT5,$INPUT6,$INPUT7,$INPUT8,$INPUT9,$INPUT10]

    Global 
$INPUTXA[$i] = GUICtrlRead($INPUTX[$i])
    
HotKeySet("" $INPUTXA[$i] & """_HOTKEY"&$i+1

WEnd

Next 
mit dem "For" bin ich mir nicht sicher, hab kein einziges mal damit gearbeitet (außer vlt. wenn es zu offensichtlich war)
wenn es falsch ist, dann alles falsch ;) aber im grunde kann man es zu diesem kürzen, wenn nicht noch kürzer (denke wenn man alle hackfunktionen in eine array packt schafft man diese 20 Case in nur 1 packen :D aber das wäre dann zu allgemein, verändern wäre da nicht so einfach)
11/03/2010 21:55 lolkop#19
also ich würde dir empfehlen erstmal ganz grob mit dem reinigen vom source anzufangen.

beginnend mit dem flackern. das ist ja absolut unerträglich...

das flackern kommt davon, das egal welche farbe das control hat, immer wieder eine farbe gesetzt wird. da man leider die hintergrundfarbe von controls ohne weiteres nicht auslesen kann, würde ich mir hierfür einfach ein array anlegen, das du immer beim setzen einer farbe beschreibst.

so kannst du immer gucken, welche farbe steht an dem control... wenn das control nicht die gewünschte farbe hat, dann änderst du sie.

du hast 9 controls mit farben, also
Code:
Dim $color[9]
jetzt musst du dir ne struktur überlegen, da ein control ($GRAPHIC2) ja gesondert steht, würde ich dem control den index 0 des arrays zuweisen.
den 8 labels dann die indexe von 1-8.

das ganze setzen wir natürlich in einer einfachen forschleife um.
8 controls, also einmal von 1-8 die schleife durchlaufen lassen.

um das ganze noch etwas leichter zu machen, würde ich dir gleich noch empfehlen, das ganze gui auch in schleifen und arrays zu erstellen.

also diesen teil hier:
Quote:
Code:
$LABEL14 = GUICtrlCreateLabel("Player 1", 36, 87, 43, 18)
$LABEL15 = GUICtrlCreateLabel("Player 2", 36, 119, 43, 18)
$LABEL16 = GUICtrlCreateLabel("Player 3", 36, 151, 43, 18)
$LABEL17 = GUICtrlCreateLabel("Player 4", 36, 183, 43, 18)
$LABEL18 = GUICtrlCreateLabel("Player 5", 36, 215, 43, 18)
$LABEL19 = GUICtrlCreateLabel("Player 6", 36, 247, 43, 18)
$LABEL20 = GUICtrlCreateLabel("Player 7", 36, 279, 43, 18)
$LABEL21 = GUICtrlCreateLabel("Player 8", 36, 303, 43, 18)
$GROUP7 = GUICtrlCreateGroup("X", 100, 55, 89, 273, $BS_CENTER)
$LABEL24 = GUICtrlCreateLabel("Label24", 120, 90, 42, 18)
$LABEL25 = GUICtrlCreateLabel("Label25", 120, 122, 42, 18)
$LABEL26 = GUICtrlCreateLabel("Label26", 120, 154, 42, 18)
$LABEL27 = GUICtrlCreateLabel("Label27", 120, 186, 42, 18)
$LABEL28 = GUICtrlCreateLabel("Label28", 120, 218, 42, 18)
$LABEL29 = GUICtrlCreateLabel("Label29", 120, 250, 42, 18)
$LABEL30 = GUICtrlCreateLabel("Label30", 120, 274, 42, 18)
$LABEL31 = GUICtrlCreateLabel("Label31", 120, 306, 42, 18)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$GROUP8 = GUICtrlCreateGroup("Y", 220, 55, 89, 273, $BS_CENTER)
$LABEL32 = GUICtrlCreateLabel("Label32", 240, 90, 42, 18)
$LABEL33 = GUICtrlCreateLabel("Label33", 240, 122, 42, 18)
$LABEL34 = GUICtrlCreateLabel("Label34", 240, 154, 42, 18)
$LABEL35 = GUICtrlCreateLabel("Label35", 240, 186, 42, 18)
$LABEL36 = GUICtrlCreateLabel("Label36", 240, 218, 42, 18)
$LABEL37 = GUICtrlCreateLabel("Label37", 240, 250, 42, 18)
$LABEL38 = GUICtrlCreateLabel("Label38", 240, 274, 42, 18)
$LABEL39 = GUICtrlCreateLabel("Label39", 240, 306, 42, 18)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$GROUP9 = GUICtrlCreateGroup("Z", 340, 55, 89, 273, $BS_CENTER)
$LABEL40 = GUICtrlCreateLabel("Label40", 360, 90, 42, 18)
$LABEL41 = GUICtrlCreateLabel("Label41", 360, 122, 42, 18)
$LABEL42 = GUICtrlCreateLabel("Label42", 360, 154, 42, 18)
$LABEL43 = GUICtrlCreateLabel("Label43", 360, 186, 42, 18)
$LABEL44 = GUICtrlCreateLabel("Label44", 360, 218, 42, 18)
$LABEL45 = GUICtrlCreateLabel("Label45", 360, 250, 42, 18)
$LABEL46 = GUICtrlCreateLabel("Label46", 360, 274, 42, 18)
$LABEL47 = GUICtrlCreateLabel("Label47", 360, 306, 42, 18)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("", -99, -99, 1, 1)
zb ersetzen hierdurch:
Code:
GUICtrlCreateGroup("X", 100, 55, 89, 273, $BS_CENTER)
GUICtrlCreateGroup("Y", 220, 55, 89, 273, $BS_CENTER)
GUICtrlCreateGroup("Z", 340, 55, 89, 273, $BS_CENTER)
Dim $player[8], $x[8], $y[8], $z[8]
For $i=0 To 7
	$player[$i] = GUICtrlCreateLabel("Player "&$i+1, 36, 87+$i*32, 43, 18)
	$x[$i] = GUICtrlCreateLabel("x"&$i+1, 120, 89+$i*32, 42, 18)
	$y[$i] = GUICtrlCreateLabel("y"&$i+1, 240, 89+$i*32, 42, 18)
	$z[$i] = GUICtrlCreateLabel("z"&$i+1, 360, 89+$i*32, 42, 18)
Next
damit sparst du nicht nur platz, sondern kannst das ganze später auch immer super in schleifen abarbeiten.

nun kannst du diesen teil deiner hauptschleife:
Quote:
Code:
    If ProcessExists("mc2.exe") = False Then GUICtrlSetBkColor($GRAPHIC2, 16711680)
    If ProcessExists("mc2.exe") = True Then GUICtrlSetBkColor($GRAPHIC2, 65280)

    If GUICtrlRead($COMBO1) = $PLAYER1 Then GUICtrlSetBkColor($LABEL14, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER2 Then GUICtrlSetBkColor($LABEL15, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER3 Then GUICtrlSetBkColor($LABEL16, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER4 Then GUICtrlSetBkColor($LABEL17, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER5 Then GUICtrlSetBkColor($LABEL18, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER6 Then GUICtrlSetBkColor($LABEL19, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER7 Then GUICtrlSetBkColor($LABEL20, 16711680)
    If GUICtrlRead($COMBO1) = $PLAYER8 Then GUICtrlSetBkColor($LABEL21, 16711680)

    If GUICtrlRead($COMBO1) <> $PLAYER1 Then GUICtrlSetBkColor($LABEL14, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER2 Then GUICtrlSetBkColor($LABEL15, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER3 Then GUICtrlSetBkColor($LABEL16, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER4 Then GUICtrlSetBkColor($LABEL17, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER5 Then GUICtrlSetBkColor($LABEL18, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER6 Then GUICtrlSetBkColor($LABEL19, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER7 Then GUICtrlSetBkColor($LABEL20, 65535)
    If GUICtrlRead($COMBO1) <> $PLAYER8 Then GUICtrlSetBkColor($LABEL21, 65535)
einfach hierdurch ersetzen:
Code:
	If Not ProcessExists("mc2.exe") And $color[0]<>0xFF0000 Then
		GUICtrlSetBkColor($GRAPHIC2, 0xFF0000)
		$color[0] = 0xFF0000
	ElseIf ProcessExists("mc2.exe") And $color[0]<>0xFFFF Then
		GUICtrlSetBkColor($GRAPHIC2, 0xFFFF)
		$color[0] = 0xFFFF
	EndIf

	For $i=1 To 8
		If GUICtrlRead($COMBO1)='Player '&$i And $color[$i]<>0xFF0000 Then
			GUICtrlSetBkColor($player[$i-1], 0xFF0000)
			$color[$i] = 0xFF0000
		ElseIf GUICtrlRead($COMBO1)<>'Player '&$i And  $color[$i]<>0xFFFF Then
			GUICtrlSetBkColor($player[$i-1], 0xFFFF)
			$color[$i] = 0xFFFF
		EndIf
	Next
die definition der color variable solltest du natürlich irgendwo überhalb deiner haupt "while" schleife platzieren =)

somit hast du nicht nur das flackern beseitigt, sondern auch gleich dein gui viel übersichtlicher gestaltet.

das ganze solltest du jetzt mit allen teilen deines guis machen.

dann kannst du jedem control deines guis einfach per schleife die funktion zuweisen =)
11/03/2010 22:42 maxi39#20
@lolkop
wow danke für antwort, man lernt jeden tag was neues dazu =)
ist ja extrem kurz und übersichtlicher , thx

und alle die sich zeit dafür geopfert haben thx.